/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "tst_qgeoroutesegment.h" QT_USE_NAMESPACE tst_QGeoRouteSegment::tst_QGeoRouteSegment() { } void tst_QGeoRouteSegment::initTestCase() { } void tst_QGeoRouteSegment::cleanupTestCase() { } void tst_QGeoRouteSegment::init() { qgeocoordinate = new QGeoCoordinate(); qgeoroutesegment = new QGeoRouteSegment(); qgeomaneuver = new QGeoManeuver(); } void tst_QGeoRouteSegment::cleanup() { delete qgeocoordinate; delete qgeoroutesegment; } void tst_QGeoRouteSegment::constructor() { QVERIFY(!qgeoroutesegment->isValid()); QCOMPARE(qgeoroutesegment->distance(), qreal(0.0)); QCOMPARE(qgeoroutesegment->maneuver(),*qgeomaneuver); QCOMPARE(qgeoroutesegment->travelTime(),0); } void tst_QGeoRouteSegment::copy_constructor() { QGeoRouteSegment *qgeoroutesegmentcopy = new QGeoRouteSegment(*qgeoroutesegment); QCOMPARE(*qgeoroutesegment, *qgeoroutesegmentcopy); QVERIFY(!qgeoroutesegmentcopy->isValid()); QCOMPARE(qgeoroutesegmentcopy->distance(), qreal(0.0)); QCOMPARE(qgeoroutesegmentcopy->maneuver(), *qgeomaneuver); QCOMPARE(qgeoroutesegmentcopy->travelTime(), 0); delete qgeoroutesegmentcopy; } void tst_QGeoRouteSegment::destructor() { QGeoRouteSegment *qgeoroutesegmentcopy; qgeoroutesegmentcopy = new QGeoRouteSegment(); delete qgeoroutesegmentcopy; qgeoroutesegmentcopy = new QGeoRouteSegment(*qgeoroutesegment); delete qgeoroutesegmentcopy; } void tst_QGeoRouteSegment::travelTime() { QFETCH(int, traveltime); QGeoRouteSegment sgmt; QVERIFY(!sgmt.isValid()); sgmt.setTravelTime(traveltime); QVERIFY(sgmt.isValid()); QCOMPARE(sgmt.travelTime(), traveltime); } void tst_QGeoRouteSegment::travelTime_data() { QTest::addColumn("traveltime"); QTest::newRow("travel1") << 0; QTest::newRow("travel2") << -50; QTest::newRow("travel3") << 324556; } void tst_QGeoRouteSegment::distance() { QFETCH(qreal, distance); QGeoRouteSegment sgmt; QVERIFY(!sgmt.isValid()); sgmt.setDistance(distance); QVERIFY(sgmt.isValid()); QCOMPARE(sgmt.distance(), distance); } void tst_QGeoRouteSegment::distance_data() { QTest::addColumn("distance"); QTest::newRow("distance1") << qreal(0.0) ; QTest::newRow("distance2") << qreal(-50.3435) ; QTest::newRow("distance3") << qreal(324556.543534) ; } void tst_QGeoRouteSegment::path() { QFETCH(QList, coordinates); QGeoRouteSegment sgmt; QVERIFY(!sgmt.isValid()); QList path; for (int i = 0; i < coordinates.size(); i += 2) { path.append(QGeoCoordinate(coordinates.at(i), coordinates.at(i+1))); } sgmt.setPath(path); QVERIFY(sgmt.isValid()); QList pathretrieved = sgmt.path(); QCOMPARE(pathretrieved, path); for (int i = 0; i < pathretrieved.size(); i++) { QCOMPARE(pathretrieved.at(i), path.at(i)); } } void tst_QGeoRouteSegment::path_data() { QTest::addColumn >("coordinates"); QList coordinates; coordinates << 0.0 << 0.0; QTest::newRow("path1") << coordinates; coordinates << -23.23 << 54.45345; QTest::newRow("path2") << coordinates; coordinates << -85.4324 << -121.343; QTest::newRow("path3") << coordinates; coordinates << 1.323 << 12.323; QTest::newRow("path4") << coordinates; coordinates << 1324.323 << 143242.323; QTest::newRow("path5") << coordinates; } void tst_QGeoRouteSegment::nextroutesegment() { QGeoRouteSegment sgmt; QVERIFY(!sgmt.isValid()); QGeoRouteSegment *qgeoroutesegmentcopy = new QGeoRouteSegment(); qgeoroutesegmentcopy->setDistance(45.34); sgmt.setNextRouteSegment(*qgeoroutesegmentcopy); QVERIFY(sgmt.isValid()); QCOMPARE(sgmt.nextRouteSegment(), *qgeoroutesegmentcopy); QCOMPARE((sgmt.nextRouteSegment()).distance(), qgeoroutesegmentcopy->distance()); delete qgeoroutesegmentcopy; } void tst_QGeoRouteSegment::maneuver() { QGeoRouteSegment sgmt; QVERIFY(!sgmt.isValid()); sgmt.setManeuver(*qgeomaneuver); QCOMPARE(sgmt.maneuver(), *qgeomaneuver); QVERIFY(sgmt.isValid()); } void tst_QGeoRouteSegment::operators() { //Create a copy and see that they are the same QGeoRouteSegment *qgeoroutesegmentcopy = new QGeoRouteSegment(*qgeoroutesegment); QGeoRouteSegment *trueSgmtCopy = new QGeoRouteSegment(); QVERIFY(qgeoroutesegment->operator ==(*qgeoroutesegmentcopy)); QVERIFY(!qgeoroutesegment->operator !=(*qgeoroutesegmentcopy)); QVERIFY(!qgeoroutesegment->isValid()); QVERIFY(!qgeoroutesegmentcopy->isValid()); //Same segment ? content is the same but pointer different QVERIFY(qgeoroutesegment->operator ==(*trueSgmtCopy)); QVERIFY(!qgeoroutesegment->operator !=(*trueSgmtCopy)); QVERIFY(!trueSgmtCopy->isValid()); QFETCH(double, distance); QFETCH(int, traveltime); QFETCH(QList, coordinates); QList path; for (int i = 0; i < coordinates.size(); i += 2) { path.append(QGeoCoordinate(coordinates.at(i), coordinates.at(i+1))); } qgeoroutesegment->setDistance(distance); qgeoroutesegment->setTravelTime(traveltime); qgeoroutesegment->setPath(path); trueSgmtCopy->setDistance(distance); trueSgmtCopy->setTravelTime(traveltime); trueSgmtCopy->setPath(path); QCOMPARE(qgeoroutesegment->distance(), distance); QCOMPARE(qgeoroutesegment->travelTime(), traveltime); QCOMPARE(qgeoroutesegment->path(), path); QCOMPARE(qgeoroutesegmentcopy->distance(), distance); QCOMPARE(qgeoroutesegmentcopy->travelTime(), traveltime); QCOMPARE(qgeoroutesegmentcopy->path(), path); QCOMPARE(trueSgmtCopy->distance(), distance); QCOMPARE(trueSgmtCopy->travelTime(), traveltime); QCOMPARE(trueSgmtCopy->path(), path); //Same as based off copy constructor (d-pointer shared) QVERIFY(qgeoroutesegment->operator==(*qgeoroutesegmentcopy)); QVERIFY(!qgeoroutesegment->operator!=(*qgeoroutesegmentcopy)); //Same as based off same content although different d-pointer QVERIFY(qgeoroutesegment->operator==(*trueSgmtCopy)); QVERIFY(!qgeoroutesegment->operator!=(*trueSgmtCopy)); const int newTravelTime = 111; trueSgmtCopy->setTravelTime(newTravelTime); QCOMPARE(trueSgmtCopy->travelTime(), newTravelTime); //different d-pointer and different content QVERIFY(!qgeoroutesegment->operator==(*trueSgmtCopy)); QVERIFY(qgeoroutesegment->operator!=(*trueSgmtCopy)); //Assign one segment to the other and test that they are the same again *qgeoroutesegmentcopy = qgeoroutesegmentcopy->operator =(*qgeoroutesegment); QVERIFY(qgeoroutesegment->operator==(*qgeoroutesegmentcopy)); QVERIFY(!qgeoroutesegment->operator!=(*qgeoroutesegmentcopy)); *qgeoroutesegmentcopy = qgeoroutesegmentcopy->operator =(*trueSgmtCopy); QVERIFY(trueSgmtCopy->operator==(*qgeoroutesegmentcopy)); QVERIFY(!trueSgmtCopy->operator!=(*qgeoroutesegmentcopy)); delete trueSgmtCopy; delete qgeoroutesegmentcopy; } void tst_QGeoRouteSegment::operators_data() { QTest::addColumn("distance"); QTest::addColumn("traveltime"); QTest::addColumn >("coordinates"); QList coordinates; coordinates << 0.0 << 0.0 << 23.234 << -121.767 << 8.43534 << 32.789; QTest::newRow("set1") << 143545.43 << 45665 << coordinates; coordinates << 42.343 << -38.657; QTest::newRow("set2") << 745654.43 << 786585 << coordinates; } QTEST_APPLESS_MAIN(tst_QGeoRouteSegment);