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 | |
34 | class tst_qml : public QObject |
35 | { |
36 | Q_OBJECT |
37 | |
38 | public slots: |
39 | void initTestCase(); |
40 | void cleanupTestCase(); |
41 | void init(); |
42 | void cleanup(); |
43 | private slots: |
44 | void checkPlugin_data(); |
45 | void checkPlugin(); |
46 | private: |
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 | |
56 | QString 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 | |
69 | QString tst_qml::imports_1_1() |
70 | { |
71 | return "import QtQuick 2.0 \n" |
72 | "import QtCharts 1.1 \n" ; |
73 | } |
74 | |
75 | QString tst_qml::imports_1_3() |
76 | { |
77 | return "import QtQuick 2.0 \n" |
78 | "import QtCharts 1.3 \n" ; |
79 | } |
80 | |
81 | QString tst_qml::imports_1_4() |
82 | { |
83 | return "import QtQuick 2.0 \n" |
84 | "import QtCharts 1.4 \n" ; |
85 | } |
86 | |
87 | QString tst_qml::imports_2_0() |
88 | { |
89 | return "import QtQuick 2.0 \n" |
90 | "import QtCharts 2.0 \n" ; |
91 | } |
92 | |
93 | QString tst_qml::imports_2_1() |
94 | { |
95 | return "import QtQuick 2.1 \n" |
96 | "import QtCharts 2.1 \n" ; |
97 | } |
98 | |
99 | void tst_qml::initTestCase() |
100 | { |
101 | } |
102 | |
103 | void tst_qml::cleanupTestCase() |
104 | { |
105 | } |
106 | |
107 | void tst_qml::init() |
108 | { |
109 | |
110 | } |
111 | |
112 | void tst_qml::cleanup() |
113 | { |
114 | |
115 | } |
116 | |
117 | void 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 | |
196 | void 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 | |
210 | QTEST_MAIN(tst_qml) |
211 | |
212 | #include "tst_qml.moc" |
213 | |
214 | |