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 "tst_qgeorouterequest.h"
30
31 #include <QtPositioning/QGeoRectangle>
32
33 QT_USE_NAMESPACE
34
tst_QGeoRouteRequest()35 tst_QGeoRouteRequest::tst_QGeoRouteRequest()
36 {
37 }
38
initTestCase()39 void tst_QGeoRouteRequest::initTestCase()
40 {
41 }
42
cleanupTestCase()43 void tst_QGeoRouteRequest::cleanupTestCase()
44 {
45 }
46
init()47 void tst_QGeoRouteRequest::init()
48 {
49 qgeocoordinate = new QGeoCoordinate();
50 qgeoboundingbox = new QGeoRectangle();
51 qgeorouterequest = new QGeoRouteRequest();
52 }
53
cleanup()54 void tst_QGeoRouteRequest::cleanup()
55 {
56 delete qgeocoordinate;
57 delete qgeoboundingbox;
58 delete qgeorouterequest;
59 }
60
constructor_waypoints()61 void tst_QGeoRouteRequest::constructor_waypoints()
62 {
63 QGeoCoordinate *qgeocoord1 = new QGeoCoordinate(43.5435, 76.342);
64 QGeoCoordinate *qgeocoord2 = new QGeoCoordinate(-43.5435, 176.342);
65 QGeoCoordinate *qgeocoord3 = new QGeoCoordinate(-13.5435, +76.342);
66
67 QList<QGeoCoordinate> waypoints;
68 waypoints.append(*qgeocoord1);
69 waypoints.append(*qgeocoord2);
70 waypoints.append(*qgeocoord3);
71
72 QGeoRouteRequest *copy = new QGeoRouteRequest(waypoints);
73
74 QCOMPARE(copy->waypoints(), waypoints);
75 QCOMPARE(copy->numberAlternativeRoutes(), 0);
76 QCOMPARE(copy->routeOptimization(), QGeoRouteRequest::FastestRoute);
77 QCOMPARE(copy->segmentDetail(), QGeoRouteRequest::BasicSegmentData);
78 QCOMPARE(copy->travelModes(), QGeoRouteRequest::CarTravel);
79 QCOMPARE(copy->maneuverDetail(), QGeoRouteRequest::BasicManeuvers);
80
81 delete qgeocoord1;
82 delete qgeocoord2;
83 delete qgeocoord3;
84 delete copy;
85 }
86
constructor_orig_dest()87 void tst_QGeoRouteRequest::constructor_orig_dest()
88 {
89 QGeoCoordinate *qgeocoord1 = new QGeoCoordinate(43.5435, 76.342);
90 QGeoCoordinate *qgeocoord2 = new QGeoCoordinate(-43.5435, 176.342);
91
92 QGeoRouteRequest *copy = new QGeoRouteRequest(*qgeocoord1, *qgeocoord2);
93
94 QList<QGeoCoordinate> waypoints;
95 waypoints.append(*qgeocoord1);
96 waypoints.append(*qgeocoord2);
97
98 QCOMPARE(copy->waypoints(), waypoints);
99 QCOMPARE(copy->numberAlternativeRoutes(), 0);
100 QCOMPARE(copy->routeOptimization(), QGeoRouteRequest::FastestRoute);
101 QCOMPARE(copy->segmentDetail(), QGeoRouteRequest::BasicSegmentData);
102 QCOMPARE(copy->travelModes(), QGeoRouteRequest::CarTravel);
103 QCOMPARE(copy->maneuverDetail(), QGeoRouteRequest::BasicManeuvers);
104
105 delete qgeocoord1;
106 delete qgeocoord2;
107 delete copy;
108 }
109
copy_constructor()110 void tst_QGeoRouteRequest::copy_constructor()
111 {
112 QGeoRouteRequest *qgeorouterequestcopy = new QGeoRouteRequest(*qgeorouterequest);
113 QCOMPARE(*qgeorouterequest, *qgeorouterequestcopy);
114 delete qgeorouterequestcopy;
115 }
116
destructor()117 void tst_QGeoRouteRequest::destructor()
118 {
119 QGeoRouteRequest *qgeorouterequestcopy;
120
121 qgeorouterequestcopy = new QGeoRouteRequest();
122 delete qgeorouterequestcopy;
123
124 qgeorouterequestcopy = new QGeoRouteRequest(*qgeorouterequest);
125 delete qgeorouterequestcopy;
126 }
127
excludeAreas()128 void tst_QGeoRouteRequest::excludeAreas()
129 {
130 qgeocoordinate->setLatitude(13.3851);
131 qgeocoordinate->setLongitude(52.5312);
132
133 QGeoCoordinate *qgeocoordinatecopy = new QGeoCoordinate(34.324 , -110.32);
134
135 QGeoRectangle *qgeoboundingboxcopy = new QGeoRectangle(*qgeocoordinate, 0.4, 0.4);
136 QGeoRectangle *qgeoboundingboxcopy2 = new QGeoRectangle(*qgeocoordinatecopy, 1.2, 0.9);
137 QList<QGeoRectangle> areas;
138 areas.append(*qgeoboundingboxcopy);
139 areas.append(*qgeoboundingboxcopy2);
140
141 qgeorouterequest->setExcludeAreas(areas);
142
143 QCOMPARE(qgeorouterequest->excludeAreas(), areas);
144
145 delete qgeoboundingboxcopy;
146 delete qgeoboundingboxcopy2;
147 delete qgeocoordinatecopy;
148 }
149
numberAlternativeRoutes()150 void tst_QGeoRouteRequest::numberAlternativeRoutes()
151 {
152 qgeorouterequest->setNumberAlternativeRoutes(0);
153 QCOMPARE(qgeorouterequest->numberAlternativeRoutes(), 0);
154
155 qgeorouterequest->setNumberAlternativeRoutes(24);
156 QCOMPARE(qgeorouterequest->numberAlternativeRoutes(), 24);
157
158 qgeorouterequest->setNumberAlternativeRoutes(-12);
159
160 QCOMPARE(qgeorouterequest->numberAlternativeRoutes(), 0);
161 }
162
routeOptimization()163 void tst_QGeoRouteRequest::routeOptimization()
164 {
165 QFETCH(QGeoRouteRequest::RouteOptimization, optimization);
166
167 QCOMPARE(qgeorouterequest->routeOptimization(),QGeoRouteRequest::FastestRoute);
168
169 qgeorouterequest->setRouteOptimization(optimization);
170 QCOMPARE(qgeorouterequest->routeOptimization(), optimization);
171 }
172
routeOptimization_data()173 void tst_QGeoRouteRequest::routeOptimization_data()
174 {
175 QTest::addColumn<QGeoRouteRequest::RouteOptimization>("optimization");
176
177 QTest::newRow("optimization1") << QGeoRouteRequest::FastestRoute;
178 QTest::newRow("optimization2") << QGeoRouteRequest::ShortestRoute;
179 QTest::newRow("optimization3") << QGeoRouteRequest::MostEconomicRoute;
180 QTest::newRow("optimization4") << QGeoRouteRequest::MostScenicRoute;
181
182 }
183
segmentDetail()184 void tst_QGeoRouteRequest::segmentDetail()
185 {
186 QFETCH(QGeoRouteRequest::SegmentDetail, detail);
187
188 QCOMPARE(qgeorouterequest->segmentDetail(), QGeoRouteRequest::BasicSegmentData);
189
190 qgeorouterequest->setSegmentDetail(detail);
191 QCOMPARE(qgeorouterequest->segmentDetail(), detail);
192 }
193
segmentDetail_data()194 void tst_QGeoRouteRequest::segmentDetail_data()
195 {
196 QTest::addColumn<QGeoRouteRequest::SegmentDetail>("detail");
197
198 QTest::newRow("detail1") << QGeoRouteRequest::NoSegmentData;
199 QTest::newRow("detail2") << QGeoRouteRequest::BasicSegmentData;
200 }
201
travelModes()202 void tst_QGeoRouteRequest::travelModes()
203 {
204 QFETCH(QGeoRouteRequest::TravelMode,mode);
205
206 QCOMPARE(qgeorouterequest->travelModes(), QGeoRouteRequest::CarTravel);
207
208 qgeorouterequest->setTravelModes(mode);
209 QCOMPARE(qgeorouterequest->travelModes(), mode);
210 }
211
travelModes_data()212 void tst_QGeoRouteRequest::travelModes_data()
213 {
214 QTest::addColumn<QGeoRouteRequest::TravelMode>("mode");
215
216 QTest::newRow("mode1") << QGeoRouteRequest::CarTravel;
217 QTest::newRow("mode2") << QGeoRouteRequest::PedestrianTravel;
218 QTest::newRow("mode3") << QGeoRouteRequest::BicycleTravel;
219 QTest::newRow("mode4") << QGeoRouteRequest::PublicTransitTravel;
220 QTest::newRow("mode5") << QGeoRouteRequest::TruckTravel;
221 }
222
waypoints()223 void tst_QGeoRouteRequest::waypoints()
224 {
225 QFETCH(QList<double>, coordinates);
226
227 QList<QGeoCoordinate> waypoints;
228
229 for (int i = 0; i < coordinates.size(); i += 2) {
230 waypoints.append(QGeoCoordinate(coordinates.at(i), coordinates.at(i+1)));
231 }
232
233 qgeorouterequest->setWaypoints(waypoints);
234
235 QList<QGeoCoordinate> waypointsRetrieved = qgeorouterequest->waypoints();
236 QCOMPARE(waypointsRetrieved, waypoints);
237
238 for (int i=0; i < waypointsRetrieved.size(); i++) {
239 QCOMPARE(waypointsRetrieved.at(i), waypoints.at(i));
240 }
241 }
242
waypoints_data()243 void tst_QGeoRouteRequest::waypoints_data()
244 {
245 QTest::addColumn<QList<double> >("coordinates");
246
247 QList<double> coordinates;
248
249 coordinates << 0.0 << 0.0;
250 QTest::newRow("path1") << coordinates ;
251
252 coordinates << -23.23 << 54.45345;
253 QTest::newRow("path2") << coordinates ;
254
255 coordinates << -85.4324 << -121.343;
256 QTest::newRow("path3") << coordinates ;
257
258 coordinates << 1.323 << 12.323;
259 QTest::newRow("path4") << coordinates ;
260
261 coordinates << 1324.323 << 143242.323;
262 QTest::newRow("path5") << coordinates ;
263 }
264
maneuverDetail()265 void tst_QGeoRouteRequest::maneuverDetail()
266 {
267 QFETCH(QGeoRouteRequest::ManeuverDetail,maneuver);
268
269 QCOMPARE(qgeorouterequest->maneuverDetail(), QGeoRouteRequest::BasicManeuvers);
270
271 qgeorouterequest->setManeuverDetail(maneuver);
272 QCOMPARE(qgeorouterequest->maneuverDetail(), maneuver);
273 }
274
maneuverDetail_data()275 void tst_QGeoRouteRequest::maneuverDetail_data()
276 {
277 QTest::addColumn<QGeoRouteRequest::ManeuverDetail>("maneuver");
278
279 QTest::newRow("maneuver1") << QGeoRouteRequest::NoManeuvers;
280 QTest::newRow("maneuver2") << QGeoRouteRequest::BasicManeuvers;
281
282 }
283
featureWeight_data()284 void tst_QGeoRouteRequest::featureWeight_data()
285 {
286 QTest::addColumn<QGeoRouteRequest::FeatureType>("type");
287 QTest::addColumn<bool>("checkTypes");
288 QTest::addColumn<QGeoRouteRequest::FeatureWeight>("initialWeight");
289 QTest::addColumn<QGeoRouteRequest::FeatureWeight>("newWeight");
290 QTest::addColumn<QGeoRouteRequest::FeatureWeight>("expectWeight");
291
292 QTest::newRow("NoFeature") << QGeoRouteRequest::NoFeature << false
293 << QGeoRouteRequest::NeutralFeatureWeight
294 << QGeoRouteRequest::PreferFeatureWeight
295 << QGeoRouteRequest::NeutralFeatureWeight;
296 QTest::newRow("TollFeature") << QGeoRouteRequest::TollFeature << true
297 << QGeoRouteRequest::NeutralFeatureWeight
298 << QGeoRouteRequest::PreferFeatureWeight
299 << QGeoRouteRequest::PreferFeatureWeight;
300 QTest::newRow("HighwayFeature") << QGeoRouteRequest::HighwayFeature << true
301 << QGeoRouteRequest::NeutralFeatureWeight
302 << QGeoRouteRequest::RequireFeatureWeight
303 << QGeoRouteRequest::RequireFeatureWeight;
304 }
305
featureWeight()306 void tst_QGeoRouteRequest::featureWeight()
307 {
308 QFETCH(QGeoRouteRequest::FeatureType, type);
309 QFETCH(bool, checkTypes);
310 QFETCH(QGeoRouteRequest::FeatureWeight, initialWeight);
311 QFETCH(QGeoRouteRequest::FeatureWeight, newWeight);
312 QFETCH(QGeoRouteRequest::FeatureWeight, expectWeight);
313
314 QCOMPARE(qgeorouterequest->featureWeight(type), initialWeight);
315 qgeorouterequest->setFeatureWeight(type, newWeight);
316 QCOMPARE(qgeorouterequest->featureWeight(type), expectWeight);
317
318 if (checkTypes)
319 QVERIFY(qgeorouterequest->featureTypes().contains(type));
320 }
321
extraParameters_data()322 void tst_QGeoRouteRequest::extraParameters_data()
323 {
324 QTest::addColumn<QVariantMap>("extraParameters");
325
326 QVariantMap params;
327 QTest::newRow("Empty") << params;
328
329 const QVariantMap param1 = {{"property1", QVariant(42)} , {"property2", QVariant("42")} , {"property3", QVariant("42.0")}};
330 params["param1"] = param1;
331
332 QTest::newRow("One param") << params;
333
334 const QVariantMap param2 = {{"property1", QVariant(43)} , {"property2", QVariant("43")} , {"property3", QVariant("43.0")}};
335 params["param2"] = param2;
336
337 QTest::newRow("Two params") << params;
338 }
339
extraParameters()340 void tst_QGeoRouteRequest::extraParameters()
341 {
342 typedef QVariantMap ParameterType;
343 QFETCH(ParameterType , extraParameters);
344 QVariantMap emptyParams;
345 qgeorouterequest->setExtraParameters(extraParameters);
346 QCOMPARE(qgeorouterequest->extraParameters(), extraParameters);
347 qgeorouterequest->setExtraParameters(emptyParams);
348 QCOMPARE(qgeorouterequest->extraParameters(), emptyParams);
349 }
350
departureTime_data()351 void tst_QGeoRouteRequest::departureTime_data()
352 {
353 QTest::addColumn<QDateTime>("departureTime");
354
355 QTest::newRow("Invalid") << QDateTime();
356 QTest::newRow("date1") << QDateTime(QDate(2012, 7, 6), QTime(23, 55, 0));
357 QTest::newRow("date2") << QDateTime(QDate(2012, 7, 7), QTime(0, 5, 0));
358 }
359
departureTime()360 void tst_QGeoRouteRequest::departureTime()
361 {
362 QFETCH(QDateTime , departureTime);
363 qgeorouterequest->setDepartureTime(departureTime);
364 QCOMPARE(qgeorouterequest->departureTime(), departureTime);
365 }
366
367 QTEST_APPLESS_MAIN(tst_QGeoRouteRequest);
368