blob: 7f56689c08f4a3c57f07815e1dfca8cdd0b41b57 [file] [log] [blame]
/****************************************************************************
**
** 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_qgeorouterequest.h"
#include <QtPositioning/QGeoRectangle>
QT_USE_NAMESPACE
tst_QGeoRouteRequest::tst_QGeoRouteRequest()
{
}
void tst_QGeoRouteRequest::initTestCase()
{
}
void tst_QGeoRouteRequest::cleanupTestCase()
{
}
void tst_QGeoRouteRequest::init()
{
qgeocoordinate = new QGeoCoordinate();
qgeoboundingbox = new QGeoRectangle();
qgeorouterequest = new QGeoRouteRequest();
}
void tst_QGeoRouteRequest::cleanup()
{
delete qgeocoordinate;
delete qgeoboundingbox;
delete qgeorouterequest;
}
void tst_QGeoRouteRequest::constructor_waypoints()
{
QGeoCoordinate *qgeocoord1 = new QGeoCoordinate(43.5435, 76.342);
QGeoCoordinate *qgeocoord2 = new QGeoCoordinate(-43.5435, 176.342);
QGeoCoordinate *qgeocoord3 = new QGeoCoordinate(-13.5435, +76.342);
QList<QGeoCoordinate> waypoints;
waypoints.append(*qgeocoord1);
waypoints.append(*qgeocoord2);
waypoints.append(*qgeocoord3);
QGeoRouteRequest *copy = new QGeoRouteRequest(waypoints);
QCOMPARE(copy->waypoints(), waypoints);
QCOMPARE(copy->numberAlternativeRoutes(), 0);
QCOMPARE(copy->routeOptimization(), QGeoRouteRequest::FastestRoute);
QCOMPARE(copy->segmentDetail(), QGeoRouteRequest::BasicSegmentData);
QCOMPARE(copy->travelModes(), QGeoRouteRequest::CarTravel);
QCOMPARE(copy->maneuverDetail(), QGeoRouteRequest::BasicManeuvers);
delete qgeocoord1;
delete qgeocoord2;
delete qgeocoord3;
delete copy;
}
void tst_QGeoRouteRequest::constructor_orig_dest()
{
QGeoCoordinate *qgeocoord1 = new QGeoCoordinate(43.5435, 76.342);
QGeoCoordinate *qgeocoord2 = new QGeoCoordinate(-43.5435, 176.342);
QGeoRouteRequest *copy = new QGeoRouteRequest(*qgeocoord1, *qgeocoord2);
QList<QGeoCoordinate> waypoints;
waypoints.append(*qgeocoord1);
waypoints.append(*qgeocoord2);
QCOMPARE(copy->waypoints(), waypoints);
QCOMPARE(copy->numberAlternativeRoutes(), 0);
QCOMPARE(copy->routeOptimization(), QGeoRouteRequest::FastestRoute);
QCOMPARE(copy->segmentDetail(), QGeoRouteRequest::BasicSegmentData);
QCOMPARE(copy->travelModes(), QGeoRouteRequest::CarTravel);
QCOMPARE(copy->maneuverDetail(), QGeoRouteRequest::BasicManeuvers);
delete qgeocoord1;
delete qgeocoord2;
delete copy;
}
void tst_QGeoRouteRequest::copy_constructor()
{
QGeoRouteRequest *qgeorouterequestcopy = new QGeoRouteRequest(*qgeorouterequest);
QCOMPARE(*qgeorouterequest, *qgeorouterequestcopy);
delete qgeorouterequestcopy;
}
void tst_QGeoRouteRequest::destructor()
{
QGeoRouteRequest *qgeorouterequestcopy;
qgeorouterequestcopy = new QGeoRouteRequest();
delete qgeorouterequestcopy;
qgeorouterequestcopy = new QGeoRouteRequest(*qgeorouterequest);
delete qgeorouterequestcopy;
}
void tst_QGeoRouteRequest::excludeAreas()
{
qgeocoordinate->setLatitude(13.3851);
qgeocoordinate->setLongitude(52.5312);
QGeoCoordinate *qgeocoordinatecopy = new QGeoCoordinate(34.324 , -110.32);
QGeoRectangle *qgeoboundingboxcopy = new QGeoRectangle(*qgeocoordinate, 0.4, 0.4);
QGeoRectangle *qgeoboundingboxcopy2 = new QGeoRectangle(*qgeocoordinatecopy, 1.2, 0.9);
QList<QGeoRectangle> areas;
areas.append(*qgeoboundingboxcopy);
areas.append(*qgeoboundingboxcopy2);
qgeorouterequest->setExcludeAreas(areas);
QCOMPARE(qgeorouterequest->excludeAreas(), areas);
delete qgeoboundingboxcopy;
delete qgeoboundingboxcopy2;
delete qgeocoordinatecopy;
}
void tst_QGeoRouteRequest::numberAlternativeRoutes()
{
qgeorouterequest->setNumberAlternativeRoutes(0);
QCOMPARE(qgeorouterequest->numberAlternativeRoutes(), 0);
qgeorouterequest->setNumberAlternativeRoutes(24);
QCOMPARE(qgeorouterequest->numberAlternativeRoutes(), 24);
qgeorouterequest->setNumberAlternativeRoutes(-12);
QCOMPARE(qgeorouterequest->numberAlternativeRoutes(), 0);
}
void tst_QGeoRouteRequest::routeOptimization()
{
QFETCH(QGeoRouteRequest::RouteOptimization, optimization);
QCOMPARE(qgeorouterequest->routeOptimization(),QGeoRouteRequest::FastestRoute);
qgeorouterequest->setRouteOptimization(optimization);
QCOMPARE(qgeorouterequest->routeOptimization(), optimization);
}
void tst_QGeoRouteRequest::routeOptimization_data()
{
QTest::addColumn<QGeoRouteRequest::RouteOptimization>("optimization");
QTest::newRow("optimization1") << QGeoRouteRequest::FastestRoute;
QTest::newRow("optimization2") << QGeoRouteRequest::ShortestRoute;
QTest::newRow("optimization3") << QGeoRouteRequest::MostEconomicRoute;
QTest::newRow("optimization4") << QGeoRouteRequest::MostScenicRoute;
}
void tst_QGeoRouteRequest::segmentDetail()
{
QFETCH(QGeoRouteRequest::SegmentDetail, detail);
QCOMPARE(qgeorouterequest->segmentDetail(), QGeoRouteRequest::BasicSegmentData);
qgeorouterequest->setSegmentDetail(detail);
QCOMPARE(qgeorouterequest->segmentDetail(), detail);
}
void tst_QGeoRouteRequest::segmentDetail_data()
{
QTest::addColumn<QGeoRouteRequest::SegmentDetail>("detail");
QTest::newRow("detail1") << QGeoRouteRequest::NoSegmentData;
QTest::newRow("detail2") << QGeoRouteRequest::BasicSegmentData;
}
void tst_QGeoRouteRequest::travelModes()
{
QFETCH(QGeoRouteRequest::TravelMode,mode);
QCOMPARE(qgeorouterequest->travelModes(), QGeoRouteRequest::CarTravel);
qgeorouterequest->setTravelModes(mode);
QCOMPARE(qgeorouterequest->travelModes(), mode);
}
void tst_QGeoRouteRequest::travelModes_data()
{
QTest::addColumn<QGeoRouteRequest::TravelMode>("mode");
QTest::newRow("mode1") << QGeoRouteRequest::CarTravel;
QTest::newRow("mode2") << QGeoRouteRequest::PedestrianTravel;
QTest::newRow("mode3") << QGeoRouteRequest::BicycleTravel;
QTest::newRow("mode4") << QGeoRouteRequest::PublicTransitTravel;
QTest::newRow("mode5") << QGeoRouteRequest::TruckTravel;
}
void tst_QGeoRouteRequest::waypoints()
{
QFETCH(QList<double>, coordinates);
QList<QGeoCoordinate> waypoints;
for (int i = 0; i < coordinates.size(); i += 2) {
waypoints.append(QGeoCoordinate(coordinates.at(i), coordinates.at(i+1)));
}
qgeorouterequest->setWaypoints(waypoints);
QList<QGeoCoordinate> waypointsRetrieved = qgeorouterequest->waypoints();
QCOMPARE(waypointsRetrieved, waypoints);
for (int i=0; i < waypointsRetrieved.size(); i++) {
QCOMPARE(waypointsRetrieved.at(i), waypoints.at(i));
}
}
void tst_QGeoRouteRequest::waypoints_data()
{
QTest::addColumn<QList<double> >("coordinates");
QList<double> 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_QGeoRouteRequest::maneuverDetail()
{
QFETCH(QGeoRouteRequest::ManeuverDetail,maneuver);
QCOMPARE(qgeorouterequest->maneuverDetail(), QGeoRouteRequest::BasicManeuvers);
qgeorouterequest->setManeuverDetail(maneuver);
QCOMPARE(qgeorouterequest->maneuverDetail(), maneuver);
}
void tst_QGeoRouteRequest::maneuverDetail_data()
{
QTest::addColumn<QGeoRouteRequest::ManeuverDetail>("maneuver");
QTest::newRow("maneuver1") << QGeoRouteRequest::NoManeuvers;
QTest::newRow("maneuver2") << QGeoRouteRequest::BasicManeuvers;
}
void tst_QGeoRouteRequest::featureWeight_data()
{
QTest::addColumn<QGeoRouteRequest::FeatureType>("type");
QTest::addColumn<bool>("checkTypes");
QTest::addColumn<QGeoRouteRequest::FeatureWeight>("initialWeight");
QTest::addColumn<QGeoRouteRequest::FeatureWeight>("newWeight");
QTest::addColumn<QGeoRouteRequest::FeatureWeight>("expectWeight");
QTest::newRow("NoFeature") << QGeoRouteRequest::NoFeature << false
<< QGeoRouteRequest::NeutralFeatureWeight
<< QGeoRouteRequest::PreferFeatureWeight
<< QGeoRouteRequest::NeutralFeatureWeight;
QTest::newRow("TollFeature") << QGeoRouteRequest::TollFeature << true
<< QGeoRouteRequest::NeutralFeatureWeight
<< QGeoRouteRequest::PreferFeatureWeight
<< QGeoRouteRequest::PreferFeatureWeight;
QTest::newRow("HighwayFeature") << QGeoRouteRequest::HighwayFeature << true
<< QGeoRouteRequest::NeutralFeatureWeight
<< QGeoRouteRequest::RequireFeatureWeight
<< QGeoRouteRequest::RequireFeatureWeight;
}
void tst_QGeoRouteRequest::featureWeight()
{
QFETCH(QGeoRouteRequest::FeatureType, type);
QFETCH(bool, checkTypes);
QFETCH(QGeoRouteRequest::FeatureWeight, initialWeight);
QFETCH(QGeoRouteRequest::FeatureWeight, newWeight);
QFETCH(QGeoRouteRequest::FeatureWeight, expectWeight);
QCOMPARE(qgeorouterequest->featureWeight(type), initialWeight);
qgeorouterequest->setFeatureWeight(type, newWeight);
QCOMPARE(qgeorouterequest->featureWeight(type), expectWeight);
if (checkTypes)
QVERIFY(qgeorouterequest->featureTypes().contains(type));
}
void tst_QGeoRouteRequest::extraParameters_data()
{
QTest::addColumn<QVariantMap>("extraParameters");
QVariantMap params;
QTest::newRow("Empty") << params;
const QVariantMap param1 = {{"property1", QVariant(42)} , {"property2", QVariant("42")} , {"property3", QVariant("42.0")}};
params["param1"] = param1;
QTest::newRow("One param") << params;
const QVariantMap param2 = {{"property1", QVariant(43)} , {"property2", QVariant("43")} , {"property3", QVariant("43.0")}};
params["param2"] = param2;
QTest::newRow("Two params") << params;
}
void tst_QGeoRouteRequest::extraParameters()
{
typedef QVariantMap ParameterType;
QFETCH(ParameterType , extraParameters);
QVariantMap emptyParams;
qgeorouterequest->setExtraParameters(extraParameters);
QCOMPARE(qgeorouterequest->extraParameters(), extraParameters);
qgeorouterequest->setExtraParameters(emptyParams);
QCOMPARE(qgeorouterequest->extraParameters(), emptyParams);
}
void tst_QGeoRouteRequest::departureTime_data()
{
QTest::addColumn<QDateTime>("departureTime");
QTest::newRow("Invalid") << QDateTime();
QTest::newRow("date1") << QDateTime(QDate(2012, 7, 6), QTime(23, 55, 0));
QTest::newRow("date2") << QDateTime(QDate(2012, 7, 7), QTime(0, 5, 0));
}
void tst_QGeoRouteRequest::departureTime()
{
QFETCH(QDateTime , departureTime);
qgeorouterequest->setDepartureTime(departureTime);
QCOMPARE(qgeorouterequest->departureTime(), departureTime);
}
QTEST_APPLESS_MAIN(tst_QGeoRouteRequest);