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_qgeoroutereply.h"
30 
31 QT_USE_NAMESPACE
32 
initTestCase()33 void tst_QGeoRouteReply::initTestCase()
34 {
35     qgeocoordinate1 = new QGeoCoordinate(43.5435 , 76.342);
36     qgeocoordinate2 = new QGeoCoordinate(-43.5435 , 176.342);
37     qgeocoordinate3 = new QGeoCoordinate(-13.5435 , +76.342);
38 
39     waypoints.append(*qgeocoordinate1);
40     waypoints.append(*qgeocoordinate2);
41     waypoints.append(*qgeocoordinate3);
42 
43     qgeorouterequest = new QGeoRouteRequest(waypoints);
44     reply = new SubRouteReply(*qgeorouterequest);
45 }
46 
cleanupTestCase()47 void tst_QGeoRouteReply::cleanupTestCase()
48 {
49     delete qgeocoordinate1;
50     delete qgeocoordinate2;
51     delete qgeocoordinate3;
52     delete qgeorouterequest;
53     delete reply;
54 }
55 
init()56 void tst_QGeoRouteReply::init()
57 {
58     qRegisterMetaType<QGeoRouteReply::Error>();
59     signalerror = new QSignalSpy(reply, SIGNAL(error(QGeoRouteReply::Error,QString)));
60     signalfinished = new QSignalSpy(reply, SIGNAL(finished()));
61 }
62 
cleanup()63 void tst_QGeoRouteReply::cleanup()
64 {
65     delete signalerror;
66     delete signalfinished;
67 }
68 
constructor()69 void tst_QGeoRouteReply::constructor()
70 {
71     QVERIFY(!reply->isFinished());
72     QCOMPARE(reply->error(), QGeoRouteReply::NoError);
73     QCOMPARE(reply->request(), *qgeorouterequest);
74 
75     QVERIFY(signalerror->isValid());
76     QVERIFY(signalfinished->isValid());
77 
78     QCOMPARE(signalerror->count(),0);
79     QCOMPARE(signalfinished->count(),0);
80 }
81 
constructor_error()82 void tst_QGeoRouteReply::constructor_error()
83 {
84     QFETCH(QGeoRouteReply::Error,error);
85     QFETCH(QString,msg);
86 
87     QVERIFY(signalerror->isValid());
88     QVERIFY(signalfinished->isValid());
89 
90     QGeoRouteReply *qgeoroutereplycopy = new QGeoRouteReply(error, msg, 0);
91 
92     QCOMPARE(signalerror->count(), 0);
93     QCOMPARE(signalfinished->count(), 0);
94 
95     QVERIFY(qgeoroutereplycopy->isFinished());
96     QCOMPARE(qgeoroutereplycopy->error(), error);
97     QCOMPARE(qgeoroutereplycopy->errorString(), msg);
98 
99     delete qgeoroutereplycopy;
100 }
101 
constructor_error_data()102 void tst_QGeoRouteReply::constructor_error_data()
103 {
104     QTest::addColumn<QGeoRouteReply::Error>("error");
105     QTest::addColumn<QString>("msg");
106 
107     QTest::newRow("error1") << QGeoRouteReply::NoError << "No error.";
108     QTest::newRow("error2") << QGeoRouteReply::EngineNotSetError << "Engine Not Set Error.";
109     QTest::newRow("error3") << QGeoRouteReply::CommunicationError << "Communication Error.";
110     QTest::newRow("error4") << QGeoRouteReply::ParseError << "Parse Error.";
111     QTest::newRow("error5") << QGeoRouteReply::UnsupportedOptionError << "Unsupported Option Error.";
112     QTest::newRow("error6") << QGeoRouteReply::UnknownError << "Unknown Error.";
113 
114 }
115 
destructor()116 void tst_QGeoRouteReply::destructor()
117 {
118     QGeoRouteReply *qgeoroutereplycopy;
119 
120     QFETCH(QGeoRouteReply::Error, error);
121     QFETCH(QString, msg);
122 
123     qgeoroutereplycopy = new QGeoRouteReply(error, msg, 0);
124     delete qgeoroutereplycopy;
125 
126 }
127 
destructor_data()128 void tst_QGeoRouteReply::destructor_data()
129 {
130     tst_QGeoRouteReply::constructor_error_data();
131 }
132 
routes()133 void tst_QGeoRouteReply::routes()
134 {
135     QList<QGeoRoute> routes;
136     QGeoRoute *route1 = new QGeoRoute();
137     QGeoRoute *route2 = new QGeoRoute();
138 
139     route1->setDistance(15.12);
140     route2->setDistance(20.12);
141 
142     routes.append(*route1);
143     routes.append(*route2);
144 
145     reply->callSetRoutes(routes);
146 
147     QList<QGeoRoute> routescopy;
148     routescopy = reply->routes();
149     QCOMPARE(routescopy,routes);
150 
151     QCOMPARE(routescopy.at(0).distance(),route1->distance());
152     QCOMPARE(routescopy.at(1).distance(),route2->distance());
153 
154     delete route1;
155     delete route2;
156 }
157 
finished()158 void tst_QGeoRouteReply::finished()
159 {
160     QVERIFY(signalerror->isValid());
161     QVERIFY(signalfinished->isValid());
162 
163     QCOMPARE(signalerror->count(), 0);
164     QCOMPARE(signalfinished->count(), 0);
165 
166     reply->callSetFinished(true);
167 
168     QCOMPARE(signalerror->count(), 0);
169     QCOMPARE(signalfinished->count(), 1);
170 
171     reply->callSetFinished(false);
172 
173     QCOMPARE(signalerror->count(), 0);
174     QCOMPARE(signalfinished->count(), 1);
175 
176     reply->callSetFinished(true);
177 
178     QCOMPARE(signalerror->count(), 0);
179     QCOMPARE(signalfinished->count(), 2);
180 }
181 
abort()182 void tst_QGeoRouteReply::abort()
183 {
184     QVERIFY(signalerror->isValid());
185     QVERIFY(signalfinished->isValid());
186 
187     QCOMPARE(signalerror->count(), 0);
188     QCOMPARE(signalfinished->count(), 0);
189 
190     reply->abort();
191 
192     QCOMPARE(signalerror->count(), 0);
193     QCOMPARE(signalfinished->count(), 0);
194 
195     reply->abort();
196     reply->callSetFinished(false);
197     reply->abort();
198 
199     QCOMPARE(signalerror->count(), 0);
200     QCOMPARE(signalfinished->count(), 0);
201 }
202 
error()203 void tst_QGeoRouteReply::error()
204 {
205     QFETCH(QGeoRouteReply::Error, error);
206     QFETCH(QString, msg);
207 
208     QVERIFY(signalerror->isValid());
209     QVERIFY(signalfinished->isValid());
210     QCOMPARE(signalerror->count(), 0);
211 
212     reply->callSetError(error,msg);
213 
214     QCOMPARE(signalerror->count(), 1);
215     QCOMPARE(signalfinished->count(), 1);
216     QCOMPARE(reply->errorString(), msg);
217     QCOMPARE(reply->error(), error);
218 }
219 
error_data()220 void tst_QGeoRouteReply::error_data()
221 {
222     QTest::addColumn<QGeoRouteReply::Error>("error");
223     QTest::addColumn<QString>("msg");
224 
225     QTest::newRow("error1") << QGeoRouteReply::NoError << "No error.";
226     QTest::newRow("error2") << QGeoRouteReply::EngineNotSetError << "Engine Not Set Error.";
227     QTest::newRow("error3") << QGeoRouteReply::CommunicationError << "Communication Error.";
228     QTest::newRow("error4") << QGeoRouteReply::ParseError << "Parse Error.";
229     QTest::newRow("error5") << QGeoRouteReply::UnsupportedOptionError << "Unsupported Option Error.";
230     QTest::newRow("error6") << QGeoRouteReply::UnknownError << "Unknown Error.";
231 }
232 
request()233 void tst_QGeoRouteReply::request()
234 {
235     SubRouteReply *rr = new SubRouteReply(*qgeorouterequest);
236 
237     QCOMPARE(rr->request(), *qgeorouterequest);
238 
239     delete rr;
240 }
241 
242 QTEST_APPLESS_MAIN(tst_QGeoRouteReply);
243