| 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_qgeocodereply.h" |
| 30 | |
| 31 | QT_USE_NAMESPACE |
| 32 | |
| 33 | void tst_QGeoCodeReply::initTestCase() |
| 34 | { |
| 35 | |
| 36 | reply = new SubGeocodeReply(); |
| 37 | } |
| 38 | |
| 39 | void tst_QGeoCodeReply::cleanupTestCase() |
| 40 | { |
| 41 | |
| 42 | delete reply; |
| 43 | delete qgeolocation; |
| 44 | } |
| 45 | |
| 46 | void tst_QGeoCodeReply::init() |
| 47 | { |
| 48 | qRegisterMetaType<QGeoCodeReply::Error>(); |
| 49 | signalerror = new QSignalSpy(reply, SIGNAL(error(QGeoCodeReply::Error,QString))); |
| 50 | signalfinished = new QSignalSpy(reply, SIGNAL(finished())); |
| 51 | } |
| 52 | |
| 53 | void tst_QGeoCodeReply::cleanup() |
| 54 | { |
| 55 | delete signalerror; |
| 56 | delete signalfinished; |
| 57 | } |
| 58 | |
| 59 | void tst_QGeoCodeReply::constructor() |
| 60 | { |
| 61 | QVERIFY(!reply->isFinished()); |
| 62 | |
| 63 | QCOMPARE(reply->limit(),-1); |
| 64 | QCOMPARE(reply->offset(),0); |
| 65 | QCOMPARE(reply->error(),QGeoCodeReply::NoError); |
| 66 | |
| 67 | QVERIFY( signalerror->isValid() ); |
| 68 | QVERIFY( signalfinished->isValid() ); |
| 69 | |
| 70 | QCOMPARE(signalerror->count(),0); |
| 71 | QCOMPARE(signalfinished->count(),0); |
| 72 | } |
| 73 | |
| 74 | void tst_QGeoCodeReply::constructor_error() |
| 75 | { |
| 76 | QFETCH(QGeoCodeReply::Error,error); |
| 77 | QFETCH(QString,msg); |
| 78 | |
| 79 | QVERIFY( signalerror->isValid() ); |
| 80 | QVERIFY( signalfinished->isValid() ); |
| 81 | |
| 82 | QGeoCodeReply *qgeocodereplycopy = new QGeoCodeReply (error,msg,0); |
| 83 | |
| 84 | QCOMPARE(signalerror->count(),0); |
| 85 | QCOMPARE(signalfinished->count(),0); |
| 86 | |
| 87 | QCOMPARE (qgeocodereplycopy->error(),error); |
| 88 | QCOMPARE (qgeocodereplycopy->errorString(),msg); |
| 89 | |
| 90 | delete qgeocodereplycopy; |
| 91 | } |
| 92 | |
| 93 | void tst_QGeoCodeReply::constructor_error_data() |
| 94 | { |
| 95 | QTest::addColumn<QGeoCodeReply::Error>(name: "error" ); |
| 96 | QTest::addColumn<QString>(name: "msg" ); |
| 97 | |
| 98 | QTest::newRow(dataTag: "error1" ) << QGeoCodeReply::NoError << "No error." ; |
| 99 | QTest::newRow(dataTag: "error2" ) << QGeoCodeReply::EngineNotSetError << "Engine Not Set Error." ; |
| 100 | QTest::newRow(dataTag: "error3" ) << QGeoCodeReply::CommunicationError << "Communication Error." ; |
| 101 | QTest::newRow(dataTag: "error4" ) << QGeoCodeReply::ParseError << "Parse Error." ; |
| 102 | QTest::newRow(dataTag: "error5" ) << QGeoCodeReply::UnsupportedOptionError << "Unsupported Option Error." ; |
| 103 | QTest::newRow(dataTag: "error6" ) << QGeoCodeReply::UnknownError << "Unknown Error." ; |
| 104 | |
| 105 | } |
| 106 | |
| 107 | void tst_QGeoCodeReply::destructor() |
| 108 | { |
| 109 | QGeoCodeReply *qgeocodereplycopy; |
| 110 | QFETCH(QGeoCodeReply::Error,error); |
| 111 | QFETCH(QString,msg); |
| 112 | |
| 113 | qgeocodereplycopy = new QGeoCodeReply (error,msg,0); |
| 114 | delete qgeocodereplycopy; |
| 115 | } |
| 116 | |
| 117 | void tst_QGeoCodeReply::destructor_data() |
| 118 | { |
| 119 | tst_QGeoCodeReply::constructor_error_data(); |
| 120 | } |
| 121 | |
| 122 | void tst_QGeoCodeReply::abort() |
| 123 | { |
| 124 | QVERIFY( signalerror->isValid() ); |
| 125 | QVERIFY( signalfinished->isValid() ); |
| 126 | |
| 127 | QCOMPARE(signalerror->count(),0); |
| 128 | QCOMPARE (signalfinished->count(),0); |
| 129 | |
| 130 | reply->callSetFinished(finished: true); |
| 131 | reply->abort(); |
| 132 | |
| 133 | QCOMPARE(signalerror->count(),0); |
| 134 | QCOMPARE (signalfinished->count(),1); |
| 135 | |
| 136 | reply->abort(); |
| 137 | reply->callSetFinished(finished: false); |
| 138 | reply->abort(); |
| 139 | |
| 140 | QCOMPARE(signalerror->count(),0); |
| 141 | QCOMPARE (signalfinished->count(),2); |
| 142 | } |
| 143 | |
| 144 | void tst_QGeoCodeReply::error() |
| 145 | { |
| 146 | QFETCH(QGeoCodeReply::Error,error); |
| 147 | QFETCH(QString,msg); |
| 148 | |
| 149 | QVERIFY( signalerror->isValid() ); |
| 150 | QVERIFY( signalfinished->isValid() ); |
| 151 | QCOMPARE(signalerror->count(),0); |
| 152 | |
| 153 | reply->callSetError(error,errorString: msg); |
| 154 | |
| 155 | QCOMPARE(signalerror->count(),1); |
| 156 | QCOMPARE(signalfinished->count(),1); |
| 157 | QCOMPARE(reply->errorString(),msg); |
| 158 | QCOMPARE(reply->error(),error); |
| 159 | |
| 160 | |
| 161 | } |
| 162 | |
| 163 | void tst_QGeoCodeReply::error_data() |
| 164 | { |
| 165 | QTest::addColumn<QGeoCodeReply::Error>(name: "error" ); |
| 166 | QTest::addColumn<QString>(name: "msg" ); |
| 167 | |
| 168 | QTest::newRow(dataTag: "error1" ) << QGeoCodeReply::NoError << "No error." ; |
| 169 | QTest::newRow(dataTag: "error2" ) << QGeoCodeReply::EngineNotSetError << "Engine Not Set Error." ; |
| 170 | QTest::newRow(dataTag: "error3" ) << QGeoCodeReply::CommunicationError << "Communication Error." ; |
| 171 | QTest::newRow(dataTag: "error4" ) << QGeoCodeReply::ParseError << "Parse Error." ; |
| 172 | QTest::newRow(dataTag: "error5" ) << QGeoCodeReply::UnsupportedOptionError << "Unsupported Option Error." ; |
| 173 | QTest::newRow(dataTag: "error6" ) << QGeoCodeReply::UnknownError << "Unknown Error." ; |
| 174 | } |
| 175 | |
| 176 | void tst_QGeoCodeReply::finished() |
| 177 | { |
| 178 | QVERIFY( signalerror->isValid() ); |
| 179 | QVERIFY( signalfinished->isValid() ); |
| 180 | |
| 181 | QCOMPARE(signalerror->count(),0); |
| 182 | QCOMPARE (signalfinished->count(),0); |
| 183 | |
| 184 | reply->callSetFinished(finished: true); |
| 185 | QVERIFY(reply->isFinished()); |
| 186 | QCOMPARE(signalerror->count(),0); |
| 187 | QCOMPARE (signalfinished->count(),1); |
| 188 | |
| 189 | reply->callSetFinished(finished: false); |
| 190 | |
| 191 | QVERIFY(!reply->isFinished()); |
| 192 | QCOMPARE(signalerror->count(),0); |
| 193 | QCOMPARE (signalfinished->count(),1); |
| 194 | |
| 195 | reply->callSetFinished(finished: true); |
| 196 | |
| 197 | QVERIFY(reply->isFinished()); |
| 198 | QCOMPARE(signalerror->count(),0); |
| 199 | QCOMPARE (signalfinished->count(),2); |
| 200 | } |
| 201 | |
| 202 | |
| 203 | |
| 204 | void tst_QGeoCodeReply::limit() |
| 205 | { |
| 206 | int limit =30; |
| 207 | reply->callSetLimit(limit); |
| 208 | QCOMPARE(reply->limit(),limit); |
| 209 | } |
| 210 | |
| 211 | void tst_QGeoCodeReply::offset() |
| 212 | { |
| 213 | int offset = 2; |
| 214 | reply->callSetOffset(offset); |
| 215 | QCOMPARE(reply->offset(),offset); |
| 216 | } |
| 217 | |
| 218 | void tst_QGeoCodeReply::locations() |
| 219 | { |
| 220 | QList <QGeoLocation> geolocations; |
| 221 | geolocations = reply->locations(); |
| 222 | |
| 223 | QCOMPARE(geolocations.size(),0); |
| 224 | |
| 225 | QGeoAddress *qgeoaddress = new QGeoAddress (); |
| 226 | qgeoaddress->setCity("Berlin" ); |
| 227 | |
| 228 | QGeoCoordinate *qgeocoordinate = new QGeoCoordinate (12.12 , 54.43); |
| 229 | |
| 230 | qgeolocation = new QGeoLocation (); |
| 231 | qgeolocation->setAddress(*qgeoaddress); |
| 232 | qgeolocation->setCoordinate(*qgeocoordinate); |
| 233 | |
| 234 | reply->callAddLocation(location: *qgeolocation); |
| 235 | |
| 236 | geolocations = reply->locations(); |
| 237 | QCOMPARE(geolocations.size(),1); |
| 238 | QCOMPARE(geolocations.at(0),*qgeolocation); |
| 239 | |
| 240 | QGeoLocation *qgeolocationcopy = new QGeoLocation (*qgeolocation); |
| 241 | |
| 242 | QList <QGeoLocation> qgeolocations; |
| 243 | qgeolocations.append(t: *qgeolocation); |
| 244 | qgeolocations.append(t: *qgeolocationcopy); |
| 245 | |
| 246 | reply->callSetLocations(locations: qgeolocations); |
| 247 | |
| 248 | geolocations = reply->locations(); |
| 249 | |
| 250 | QCOMPARE(geolocations.size(),qgeolocations.size()); |
| 251 | for (int i = 0 ; i < geolocations.size(); i++) |
| 252 | { |
| 253 | QCOMPARE(geolocations.at(i),qgeolocations.at(i)); |
| 254 | } |
| 255 | |
| 256 | delete qgeoaddress; |
| 257 | delete qgeocoordinate; |
| 258 | delete qgeolocationcopy; |
| 259 | } |
| 260 | |
| 261 | void tst_QGeoCodeReply::viewport() |
| 262 | { |
| 263 | QGeoCoordinate *qgeocoordinate = new QGeoCoordinate (12.12 , 54.43); |
| 264 | |
| 265 | qgeoboundingbox = new QGeoRectangle (*qgeocoordinate, 0.5 , 0.5); |
| 266 | |
| 267 | reply->callSetViewport(viewport: *qgeoboundingbox); |
| 268 | |
| 269 | QCOMPARE (reply->viewport(), static_cast<const QGeoShape &>(*qgeoboundingbox)); |
| 270 | |
| 271 | delete qgeocoordinate; |
| 272 | delete qgeoboundingbox; |
| 273 | } |
| 274 | |
| 275 | QTEST_MAIN(tst_QGeoCodeReply); |
| 276 | |