1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt Charts module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 or (at your option) any later version
20** approved by the KDE Free Qt Foundation. The licenses are as published by
21** the Free Software Foundation and appearing in the file LICENSE.GPL3
22** included in the packaging of this file. Please review the following
23** information to ensure the GNU General Public License requirements will
24** be met: https://www.gnu.org/licenses/gpl-3.0.html.
25**
26** $QT_END_LICENSE$
27**
28****************************************************************************/
29#include <QtTest/QtTest>
30#include <QtQml/QQmlEngine>
31#include <QtQml/QQmlComponent>
32#include "tst_definitions.h"
33
34class tst_qml : public QObject
35{
36 Q_OBJECT
37
38public slots:
39 void initTestCase();
40 void cleanupTestCase();
41 void init();
42 void cleanup();
43private slots:
44 void checkPlugin_data();
45 void checkPlugin();
46private:
47 QString componentErrors(const QQmlComponent* component) const;
48 QString imports_1_1();
49 QString imports_1_3();
50 QString imports_1_4();
51 QString imports_2_0();
52 QString imports_2_1();
53
54};
55
56QString tst_qml::componentErrors(const QQmlComponent* component) const
57{
58 Q_ASSERT(component);
59
60 QStringList errors;
61
62 foreach (QQmlError const& error, component->errors()) {
63 errors << error.toString();
64 }
65
66 return errors.join(sep: "\n");
67}
68
69QString tst_qml::imports_1_1()
70{
71 return "import QtQuick 2.0 \n"
72 "import QtCharts 1.1 \n";
73}
74
75QString tst_qml::imports_1_3()
76{
77 return "import QtQuick 2.0 \n"
78 "import QtCharts 1.3 \n";
79}
80
81QString tst_qml::imports_1_4()
82{
83 return "import QtQuick 2.0 \n"
84 "import QtCharts 1.4 \n";
85}
86
87QString tst_qml::imports_2_0()
88{
89 return "import QtQuick 2.0 \n"
90 "import QtCharts 2.0 \n";
91}
92
93QString tst_qml::imports_2_1()
94{
95 return "import QtQuick 2.1 \n"
96 "import QtCharts 2.1 \n";
97}
98
99void tst_qml::initTestCase()
100{
101}
102
103void tst_qml::cleanupTestCase()
104{
105}
106
107void tst_qml::init()
108{
109
110}
111
112void tst_qml::cleanup()
113{
114
115}
116
117void tst_qml::checkPlugin_data()
118{
119 QTest::addColumn<QString>(name: "source");
120
121 QTest::newRow(dataTag: "createChartView") << imports_1_1() + "ChartView{}";
122 QTest::newRow(dataTag: "XYPoint") << imports_1_1() + "XYPoint{}";
123 QTest::newRow(dataTag: "scatterSeries") << imports_1_1() + "ScatterSeries{}";
124 QTest::newRow(dataTag: "lineSeries") << imports_1_1() + "LineSeries{}";
125 QTest::newRow(dataTag: "splineSeries") << imports_1_1() + "SplineSeries{}";
126 QTest::newRow(dataTag: "areaSeries") << imports_1_1() + "AreaSeries{}";
127 QTest::newRow(dataTag: "barSeries") << imports_1_1() + "BarSeries{}";
128 QTest::newRow(dataTag: "stackedBarSeries") << imports_1_1() + "StackedBarSeries{}";
129 QTest::newRow(dataTag: "precentBarSeries") << imports_1_1() + "PercentBarSeries{}";
130 QTest::newRow(dataTag: "horizonatlBarSeries") << imports_1_1() + "HorizontalBarSeries{}";
131 QTest::newRow(dataTag: "horizonatlStackedBarSeries") << imports_1_1() + "HorizontalStackedBarSeries{}";
132 QTest::newRow(dataTag: "horizonatlstackedBarSeries") << imports_1_1() + "HorizontalPercentBarSeries{}";
133 QTest::newRow(dataTag: "pieSeries") << imports_1_1() + "PieSeries{}";
134 QTest::newRow(dataTag: "PieSlice") << imports_1_1() + "PieSlice{}";
135 QTest::newRow(dataTag: "BarSet") << imports_1_1() + "BarSet{}";
136 QTest::newRow(dataTag: "HXYModelMapper") << imports_1_1() + "HXYModelMapper{}";
137 QTest::newRow(dataTag: "VXYModelMapper") << imports_1_1() + "VXYModelMapper{}";
138 QTest::newRow(dataTag: "HPieModelMapper") << imports_1_1() + "HPieModelMapper{}";
139 QTest::newRow(dataTag: "HPieModelMapper") << imports_1_1() + "HPieModelMapper{}";
140 QTest::newRow(dataTag: "HBarModelMapper") << imports_1_1() + "HBarModelMapper{}";
141 QTest::newRow(dataTag: "VBarModelMapper") << imports_1_1() + "VBarModelMapper{}";
142 QTest::newRow(dataTag: "ValueAxis") << imports_1_1() + "ValueAxis{}";
143#ifndef QT_QREAL_IS_FLOAT
144 QTest::newRow(dataTag: "DateTimeAxis") << imports_1_1() + "DateTimeAxis{}";
145#endif
146 QTest::newRow(dataTag: "CategoryAxis") << imports_1_1() + "CategoryAxis{}";
147 QTest::newRow(dataTag: "CategoryRange") << imports_1_1() + "CategoryRange{}";
148 QTest::newRow(dataTag: "BarCategoryAxis") << imports_1_1() + "BarCategoryAxis{}";
149
150 QTest::newRow(dataTag: "createPolarChartView") << imports_1_3() + "PolarChartView{}";
151 QTest::newRow(dataTag: "LogValueAxis") << imports_1_3() + "LogValueAxis{}";
152 QTest::newRow(dataTag: "BoxPlotSeries") << imports_1_3() + "BoxPlotSeries{}";
153 QTest::newRow(dataTag: "BoxSet") << imports_1_3() + "BoxSet{}";
154
155 QTest::newRow(dataTag: "createChartView_2_0") << imports_2_0() + "ChartView{}";
156 QTest::newRow(dataTag: "XYPoint_2_0") << imports_2_0() + "XYPoint{}";
157 QTest::newRow(dataTag: "scatterSeries_2_0") << imports_2_0() + "ScatterSeries{}";
158 QTest::newRow(dataTag: "lineSeries_2_0") << imports_2_0() + "LineSeries{}";
159 QTest::newRow(dataTag: "splineSeries_2_0") << imports_2_0() + "SplineSeries{}";
160 QTest::newRow(dataTag: "areaSeries_2_0") << imports_2_0() + "AreaSeries{}";
161 QTest::newRow(dataTag: "barSeries_2_0") << imports_2_0() + "BarSeries{}";
162 QTest::newRow(dataTag: "stackedBarSeries_2_0") << imports_2_0() + "StackedBarSeries{}";
163 QTest::newRow(dataTag: "precentBarSeries_2_0") << imports_2_0() + "PercentBarSeries{}";
164 QTest::newRow(dataTag: "horizonatlBarSeries_2_0") << imports_2_0() + "HorizontalBarSeries{}";
165 QTest::newRow(dataTag: "horizonatlStackedBarSeries_2_0")
166 << imports_2_0() + "HorizontalStackedBarSeries{}";
167 QTest::newRow(dataTag: "horizonatlstackedBarSeries_2_0")
168 << imports_2_0() + "HorizontalPercentBarSeries{}";
169 QTest::newRow(dataTag: "pieSeries_2_0") << imports_2_0() + "PieSeries{}";
170 QTest::newRow(dataTag: "PieSlice_2_0") << imports_2_0() + "PieSlice{}";
171 QTest::newRow(dataTag: "BarSet_2_0") << imports_2_0() + "BarSet{}";
172 QTest::newRow(dataTag: "HXYModelMapper_2_0") << imports_2_0() + "HXYModelMapper{}";
173 QTest::newRow(dataTag: "VXYModelMapper_2_0") << imports_2_0() + "VXYModelMapper{}";
174 QTest::newRow(dataTag: "HPieModelMapper_2_0") << imports_2_0() + "HPieModelMapper{}";
175 QTest::newRow(dataTag: "HPieModelMapper_2_0") << imports_2_0() + "HPieModelMapper{}";
176 QTest::newRow(dataTag: "HBarModelMapper_2_0") << imports_2_0() + "HBarModelMapper{}";
177 QTest::newRow(dataTag: "VBarModelMapper_2_0") << imports_2_0() + "VBarModelMapper{}";
178 QTest::newRow(dataTag: "ValueAxis_2_0") << imports_2_0() + "ValueAxis{}";
179#ifndef QT_QREAL_IS_FLOAT
180 QTest::newRow(dataTag: "DateTimeAxis_2_0") << imports_2_0() + "DateTimeAxis{}";
181#endif
182 QTest::newRow(dataTag: "CategoryAxis_2_0") << imports_2_0() + "CategoryAxis{}";
183 QTest::newRow(dataTag: "CategoryRange_2_0") << imports_2_0() + "CategoryRange{}";
184 QTest::newRow(dataTag: "BarCategoryAxis_2_0") << imports_2_0() + "BarCategoryAxis{}";
185 QTest::newRow(dataTag: "createPolarChartView_2_0") << imports_2_0() + "PolarChartView{}";
186 QTest::newRow(dataTag: "LogValueAxis_2_0") << imports_2_0() + "LogValueAxis{}";
187 QTest::newRow(dataTag: "BoxPlotSeries_2_0") << imports_2_0() + "BoxPlotSeries{}";
188 QTest::newRow(dataTag: "BoxSet_2_0") << imports_2_0() + "BoxSet{}";
189
190 QTest::newRow(dataTag: "CategoryAxis_2_1") << imports_2_1() + "CategoryAxis{}";
191 QTest::newRow(dataTag: "ScatterSeries_2_1") << imports_2_1() + "ScatterSeries{}";
192 QTest::newRow(dataTag: "LineSeries_2_1") << imports_2_1() + "LineSeries{}";
193 QTest::newRow(dataTag: "SplineSeries_2_1") << imports_2_1() + "SplineSeries{}";
194}
195
196void tst_qml::checkPlugin()
197{
198 QFETCH(QString, source);
199 QQmlEngine engine;
200 engine.addImportPath(dir: QString::fromLatin1(str: "%1/%2").arg(args: QCoreApplication::applicationDirPath(), args: QLatin1String("qml")));
201 QQmlComponent component(&engine);
202 component.setData(source.toLatin1(), baseUrl: QUrl());
203 QVERIFY2(!component.isError(), qPrintable(componentErrors(&component)));
204 TRY_COMPARE(component.status(), QQmlComponent::Ready);
205 QObject *obj = component.create();
206 QVERIFY(obj != 0);
207 delete obj;
208}
209
210QTEST_MAIN(tst_qml)
211
212#include "tst_qml.moc"
213
214

source code of qtcharts/tests/auto/qml/tst_qml.cpp