/**************************************************************************** ** ** 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$ ** ****************************************************************************/ //TESTED_COMPONENT=src/location #include "tst_qgeoroutingmanager.h" QT_USE_NAMESPACE void tst_QGeoRoutingManager::initTestCase() { #if QT_CONFIG(library) /* * Set custom path since CI doesn't install test plugins */ #ifdef Q_OS_WIN QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath() + QStringLiteral("/../../../../plugins")); #else QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath() + QStringLiteral("/../../../plugins")); #endif #endif tst_QGeoRoutingManager::loadRoutingManager(); } void tst_QGeoRoutingManager::cleanupTestCase() { //delete qgeoroutingmanager; delete qgeoserviceprovider; } void tst_QGeoRoutingManager::init() { } void tst_QGeoRoutingManager::cleanup() { } void tst_QGeoRoutingManager::loadRoutingManager() { QStringList providers = QGeoServiceProvider::availableServiceProviders(); QVERIFY(providers.contains("georoute.test.plugin")); qgeoserviceprovider = new QGeoServiceProvider("georoute.test.plugin"); QVERIFY(qgeoserviceprovider); QCOMPARE(qgeoserviceprovider->error(), QGeoServiceProvider::NotSupportedError); qgeoserviceprovider->setAllowExperimental(true); QCOMPARE(qgeoserviceprovider->routingFeatures(), QGeoServiceProvider::OfflineRoutingFeature | QGeoServiceProvider::AlternativeRoutesFeature | QGeoServiceProvider::RouteUpdatesFeature | QGeoServiceProvider::ExcludeAreasRoutingFeature); QCOMPARE(qgeoserviceprovider->error(), QGeoServiceProvider::NoError); qgeoroutingmanager = qgeoserviceprovider->routingManager(); QVERIFY(qgeoroutingmanager); } void tst_QGeoRoutingManager::supports() { QCOMPARE(qgeoroutingmanager->supportedTravelModes(),QGeoRouteRequest::PedestrianTravel); QCOMPARE(qgeoroutingmanager->supportedFeatureTypes(),QGeoRouteRequest::TollFeature); QCOMPARE(qgeoroutingmanager->supportedFeatureWeights(),QGeoRouteRequest::PreferFeatureWeight); QCOMPARE(qgeoroutingmanager->supportedRouteOptimizations(),QGeoRouteRequest::FastestRoute); QCOMPARE(qgeoroutingmanager->supportedSegmentDetails(),QGeoRouteRequest::BasicSegmentData); QCOMPARE(qgeoroutingmanager->supportedManeuverDetails(),QGeoRouteRequest::BasicManeuvers); } void tst_QGeoRoutingManager::locale() { QLocale german = QLocale(QLocale::German, QLocale::Germany); QLocale english = QLocale(QLocale::C, QLocale::AnyCountry); qgeoroutingmanager->setLocale(german); QCOMPARE(qgeoroutingmanager->locale(), german); QVERIFY(qgeoroutingmanager->locale() != english); QLocale en_UK = QLocale(QLocale::English, QLocale::UnitedKingdom); qgeoroutingmanager->setLocale(en_UK); QCOMPARE(qgeoroutingmanager->measurementSystem(), en_UK.measurementSystem()); qgeoroutingmanager->setMeasurementSystem(QLocale::MetricSystem); QCOMPARE(qgeoroutingmanager->measurementSystem(), QLocale::MetricSystem); QVERIFY(qgeoroutingmanager->locale().measurementSystem() != qgeoroutingmanager->measurementSystem()); } void tst_QGeoRoutingManager::name() { QString name = "georoute.test.plugin"; QCOMPARE(qgeoroutingmanager->managerName(), name); } void tst_QGeoRoutingManager::version() { QCOMPARE(qgeoroutingmanager->managerVersion(), 100); } void tst_QGeoRoutingManager::calculate() { QString error = "no error"; origin = new QGeoCoordinate(12.12 , 23.23); destination = new QGeoCoordinate(34.34 , 89.32); request = new QGeoRouteRequest(*origin, *destination); reply = qgeoroutingmanager->calculateRoute(*request); QCOMPARE(reply->error(), QGeoRouteReply::NoError); QCOMPARE(reply->errorString(), error); delete origin; delete destination; delete request; delete reply; } void tst_QGeoRoutingManager::update() { QString error = "no error"; position = new QGeoCoordinate(34.34, 89.32); route = new QGeoRoute(); reply = qgeoroutingmanager->updateRoute(*route, *position); QCOMPARE(reply->error(), QGeoRouteReply::CommunicationError); QCOMPARE(reply->errorString(), error); delete position; delete route; delete reply; } QTEST_MAIN(tst_QGeoRoutingManager)