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 test suite of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$
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 as published by the Free Software
20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21 ** included in the packaging of this file. Please review the following
22 ** information to ensure the GNU General Public License requirements will
23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24 **
25 ** $QT_END_LICENSE$
26 **
27 ****************************************************************************/
28
29 #include <QtCore/QString>
30 #include <QtTest/QtTest>
31
32 #include "qgeocameradata_p.h"
33
34 QT_USE_NAMESPACE
35
36 class tst_QGeoCameraData : public QObject
37 {
38 Q_OBJECT
39
40 public:
41 tst_QGeoCameraData();
42
43 private:
44 void populateCameraData();
45
46 private Q_SLOTS:
47 void constructorTest_data();
48 void constructorTest();
49 void centerTest();
50 void bearingTest();
51 void tiltTest();
52 void rollTest();
53 void zoomLevelTest();
54 void operatorsTest_data();
55 void operatorsTest();
56 };
57
tst_QGeoCameraData()58 tst_QGeoCameraData::tst_QGeoCameraData()
59 {
60 }
61
62
populateCameraData()63 void tst_QGeoCameraData::populateCameraData()
64 {
65 QTest::addColumn<QGeoCoordinate>("center");
66 QTest::addColumn<double>("bearing");
67 QTest::addColumn<double>("tilt");
68 QTest::addColumn<double>("roll");
69 QTest::addColumn<double>("zoomLevel");
70 QTest::newRow("zeros") << QGeoCoordinate() << 0.0 << 0.0 << 0.0 << 0.0;
71 QTest::newRow("valid") << QGeoCoordinate(10.0,20.5,30.8) << 0.1 << 0.2 << 0.3 << 2.0;
72 QTest::newRow("negative values") << QGeoCoordinate(-50,-20,100) << -0.1 << -0.2 << -0.3 << 1.0;
73 }
74
constructorTest_data()75 void tst_QGeoCameraData::constructorTest_data(){
76 populateCameraData();
77 }
78
constructorTest()79 void tst_QGeoCameraData::constructorTest()
80 {
81 QFETCH(QGeoCoordinate, center);
82 QFETCH(double, bearing);
83 QFETCH(double, tilt);
84 QFETCH(double, roll);
85 QFETCH(double, zoomLevel);
86
87 // constructor test with default values
88 QGeoCameraData cameraData;
89 QGeoCameraData cameraData2(cameraData);
90 QCOMPARE(cameraData.center(), cameraData2.center());
91 QCOMPARE(cameraData.bearing(), cameraData2.bearing());
92 QCOMPARE(cameraData.tilt(), cameraData2.tilt());
93 QCOMPARE(cameraData.roll(), cameraData2.roll());
94 QCOMPARE(cameraData.zoomLevel(), cameraData2.zoomLevel());
95
96 // constructor test after setting values
97 cameraData.setCenter(center);
98 cameraData.setBearing(bearing);
99 cameraData.setTilt(tilt);
100 cameraData.setRoll(roll);
101 cameraData.setZoomLevel(zoomLevel);
102 QGeoCameraData cameraData3(cameraData);
103 // test the correctness of the constructor copy
104 QCOMPARE(cameraData3.center(), center);
105 QCOMPARE(cameraData3.bearing(), bearing);
106 QCOMPARE(cameraData3.tilt(), tilt);
107 QCOMPARE(cameraData3.roll(), roll);
108 QCOMPARE(cameraData3.zoomLevel(), zoomLevel);
109 // verify that values have not changed after a constructor copy
110 QCOMPARE(cameraData.center(), cameraData3.center());
111 QCOMPARE(cameraData.bearing(), cameraData3.bearing());
112 QCOMPARE(cameraData.tilt(), cameraData3.tilt());
113 QCOMPARE(cameraData.roll(), cameraData3.roll());
114 QCOMPARE(cameraData.zoomLevel(), cameraData3.zoomLevel());
115 }
116
117
centerTest()118 void tst_QGeoCameraData::centerTest()
119 {
120 QGeoCameraData cameraData; //center currently default to (-27.5, 153)
121 cameraData.setCenter(QGeoCoordinate(10.0,20.4,30.8));
122 QCOMPARE(cameraData.center(),QGeoCoordinate(10.0,20.4,30.8));
123 }
124
bearingTest()125 void tst_QGeoCameraData::bearingTest(){
126 QGeoCameraData cameraData;
127 QCOMPARE(cameraData.bearing(),0.0);
128 cameraData.setBearing(0.1);
129 QCOMPARE(cameraData.bearing(),0.1);
130
131 QGeoCameraData cameraData2 = cameraData;
132 QCOMPARE(cameraData2.bearing(),0.1);
133 cameraData.setBearing(0.2);
134 QCOMPARE(cameraData2.bearing(),0.1);
135 }
136
tiltTest()137 void tst_QGeoCameraData::tiltTest(){
138 QGeoCameraData cameraData;
139 QCOMPARE(cameraData.tilt(),0.0);
140 cameraData.setTilt(0.4);
141 QCOMPARE(cameraData.tilt(),0.4);
142
143 QGeoCameraData cameraData2 = cameraData;
144 QCOMPARE(cameraData2.tilt(),0.4);
145 cameraData.setTilt(0.5);
146 QCOMPARE(cameraData2.tilt(),0.4);
147 }
148
rollTest()149 void tst_QGeoCameraData::rollTest(){
150 QGeoCameraData cameraData;
151 QCOMPARE(cameraData.roll(),0.0);
152 cameraData.setRoll(0.5);
153 QCOMPARE(cameraData.roll(),0.5);
154
155 QGeoCameraData cameraData2 = cameraData;
156 QCOMPARE(cameraData2.roll(),0.5);
157 cameraData.setRoll(0.6);
158 QCOMPARE(cameraData2.roll(),0.5);
159 }
160
zoomLevelTest()161 void tst_QGeoCameraData::zoomLevelTest(){
162 QGeoCameraData cameraData; //zoom level currently defaults to 9.0
163 cameraData.setZoomLevel(8.0);
164 QCOMPARE(cameraData.zoomLevel(),8.0);
165
166 QGeoCameraData cameraData2 = cameraData;
167 QCOMPARE(cameraData2.zoomLevel(),8.0);
168 cameraData.setZoomLevel(9.0);
169 QCOMPARE(cameraData2.zoomLevel(),8.0);
170 }
171
operatorsTest_data()172 void tst_QGeoCameraData::operatorsTest_data(){
173 populateCameraData();
174 }
175
operatorsTest()176 void tst_QGeoCameraData::operatorsTest(){
177 QGeoCameraData cameraData;
178 QGeoCameraData cameraData2;
179 QVERIFY2(cameraData == cameraData2, "Camera data with default values are not copied correctly");
180
181 QFETCH(QGeoCoordinate, center);
182 QFETCH(double, bearing);
183 QFETCH(double, tilt);
184 QFETCH(double, roll);
185 QFETCH(double, zoomLevel);
186 cameraData.setCenter(center);
187 cameraData.setBearing(bearing);
188 cameraData.setTilt(tilt);
189 cameraData.setRoll(roll);
190 cameraData.setZoomLevel(zoomLevel);
191
192 QGeoCameraData cameraData3;
193 cameraData3 = cameraData;
194 QVERIFY2(cameraData == cameraData3, "Camera data not copied correctly");
195
196 // test QGeoCameraData pairs where they differ in one field
197 QGeoCameraData cameraData4;
198 cameraData4 = cameraData;
199 cameraData4.setCenter(QGeoCoordinate(10.0,20.0,30.0));
200 QVERIFY2(cameraData != cameraData4, "Camera data should be different");
201 QGeoCameraData cameraData5;
202 cameraData5 = cameraData;
203 cameraData5.setBearing(bearing+1.0);
204 QVERIFY2(cameraData != cameraData5, "Camera data should be different");
205 QGeoCameraData cameraData6;
206 cameraData6 = cameraData;
207 cameraData6.setTilt(tilt+0.1);
208 QVERIFY2(cameraData != cameraData6, "Camera data should be different");
209 QGeoCameraData cameraData7;
210 cameraData7 = cameraData;
211 cameraData7.setRoll(roll+0.1);
212 QVERIFY2(cameraData != cameraData7, "Camera data should be different");
213 QGeoCameraData cameraData8;
214 cameraData8 = cameraData;
215 cameraData8.setZoomLevel(zoomLevel+1.0);
216 QVERIFY2(cameraData != cameraData8, "Camera data should be different");
217 }
218
219 QTEST_APPLESS_MAIN(tst_QGeoCameraData)
220
221 #include "tst_qgeocameradata.moc"
222