File indexing completed on 2024-04-28 08:32:32
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "testhelpers.h" 0008 #include "backends/openjourneyplannerrequestbuilder.cpp" 0009 0010 #include <KPublicTransport/JourneyRequest> 0011 #include <KPublicTransport/LocationRequest> 0012 #include <KPublicTransport/StopoverRequest> 0013 0014 #include <QFile> 0015 #include <QJsonArray> 0016 #include <QJsonDocument> 0017 #include <QTest> 0018 #include <QTimeZone> 0019 0020 #define s(x) QStringLiteral(x) 0021 0022 using namespace KPublicTransport; 0023 0024 class OjpRequestTest : public QObject 0025 { 0026 Q_OBJECT 0027 private Q_SLOTS: 0028 void initTestCase() 0029 { 0030 qputenv("TZ", "UTC"); 0031 } 0032 0033 void testLocationRequest_data() 0034 { 0035 QTest::addColumn<LocationRequest>("request"); 0036 QTest::addColumn<QString>("refFileName"); 0037 0038 Location loc; 0039 loc.setCoordinate(46.1, 7.78); 0040 LocationRequest req; 0041 req.setLocation(loc); 0042 req.setMaximumDistance(500); 0043 req.setMaximumResults(23); 0044 QTest::newRow("location-by-coord") << req << s(SOURCE_DIR "/data/ojp-request/location-by-coord.xml"); 0045 0046 loc = {}; 0047 loc.setName(s("Randa")); 0048 req.setLocation(loc); 0049 QTest::newRow("location-by-name") << req << s(SOURCE_DIR "/data/ojp-request/location-by-name.xml"); 0050 } 0051 0052 void testLocationRequest() 0053 { 0054 QFETCH(LocationRequest, request); 0055 QFETCH(QString, refFileName); 0056 0057 OpenJourneyPlannerRequestBuilder builder; 0058 builder.setRequestorRef(QStringLiteral("KPublicTransport")); 0059 builder.setTestMode(true); 0060 auto res = builder.buildLocationInformationRequest(request); 0061 auto ref = Test::readFile(refFileName); 0062 if (res != ref) { 0063 qDebug().noquote() << res; 0064 } 0065 QVERIFY(!res.isEmpty()); 0066 QCOMPARE(res, ref); 0067 0068 builder.setUseTrias(true); 0069 res = builder.buildLocationInformationRequest(request); 0070 ref = Test::readFile(refFileName.insert(refFileName.size() -4, u"-trias")); 0071 if (res != ref) { 0072 qDebug().noquote() << res; 0073 } 0074 QVERIFY(!res.isEmpty()); 0075 QCOMPARE(res, ref); 0076 } 0077 0078 void testStopoverRequest_data() 0079 { 0080 QTest::addColumn<StopoverRequest>("request"); 0081 QTest::addColumn<QString>("refFileName"); 0082 0083 Location loc; 0084 loc.setIdentifier(QStringLiteral("uic"), QStringLiteral("8501687")); 0085 StopoverRequest req; 0086 req.setStop(loc); 0087 req.setMode(StopoverRequest::QueryDeparture); 0088 req.setDateTime(QDateTime({2020, 9, 6}, {20, 54}, QTimeZone::UTC)); 0089 req.setMaximumResults(4); 0090 QTest::newRow("stopover-departure") << req << s(SOURCE_DIR "/data/ojp-request/stopover-departure.xml"); 0091 req.setMode(StopoverRequest::QueryArrival); 0092 QTest::newRow("stopover-arrival") << req << s(SOURCE_DIR "/data/ojp-request/stopover-arrival.xml"); 0093 } 0094 0095 void testStopoverRequest() 0096 { 0097 QFETCH(StopoverRequest, request); 0098 QFETCH(QString, refFileName); 0099 0100 OpenJourneyPlannerRequestBuilder builder; 0101 builder.setRequestorRef(QStringLiteral("KPublicTransport")); 0102 builder.setTestMode(true); 0103 auto res = builder.buildStopEventRequest(request); 0104 auto ref = Test::readFile(refFileName); 0105 if (res != ref) { 0106 qDebug().noquote() << res; 0107 } 0108 QVERIFY(!res.isEmpty()); 0109 QCOMPARE(res, ref); 0110 0111 builder.setUseTrias(true); 0112 res = builder.buildStopEventRequest(request); 0113 ref = Test::readFile(refFileName.insert(refFileName.size() -4, u"-trias")); 0114 if (res != ref) { 0115 qDebug().noquote() << res; 0116 } 0117 QVERIFY(!res.isEmpty()); 0118 QCOMPARE(res, ref); 0119 } 0120 0121 void testJourneyRequest_data() 0122 { 0123 QTest::addColumn<JourneyRequest>("request"); 0124 QTest::addColumn<QString>("refFileName"); 0125 0126 Location from; 0127 from.setCoordinate(46.1, 7.78); 0128 Location to; 0129 to.setIdentifier(QStringLiteral("uic"), QStringLiteral("8500010")); 0130 JourneyRequest req; 0131 req.setFrom(from); 0132 req.setTo(to); 0133 req.setDateTime(QDateTime({2020, 9, 6}, {20, 54}, QTimeZone::UTC)); 0134 req.setDateTimeMode(JourneyRequest::Departure); 0135 req.setMaximumResults(3); 0136 req.setIncludeIntermediateStops(true); 0137 req.setIncludePaths(false); 0138 QTest::newRow("journey-departure") << req << s(SOURCE_DIR "/data/ojp-request/journey-departure.xml"); 0139 from.setName(QStringLiteral("Randa")); 0140 req.setFrom(from); 0141 req.setIncludeIntermediateStops(false); 0142 req.setIncludePaths(true); 0143 req.setDateTimeMode(JourneyRequest::Arrival); 0144 QTest::newRow("stopover-arrival") << req << s(SOURCE_DIR "/data/ojp-request/journey-arrival.xml"); 0145 } 0146 0147 void testJourneyRequest() 0148 { 0149 QFETCH(JourneyRequest, request); 0150 QFETCH(QString, refFileName); 0151 0152 OpenJourneyPlannerRequestBuilder builder; 0153 builder.setRequestorRef(QStringLiteral("KPublicTransport")); 0154 builder.setTestMode(true); 0155 auto res = builder.buildTripRequest(request); 0156 auto ref = Test::readFile(refFileName); 0157 if (res != ref) { 0158 qDebug().noquote() << res; 0159 } 0160 QVERIFY(!res.isEmpty()); 0161 QCOMPARE(res, ref); 0162 0163 builder.setUseTrias(true); 0164 res = builder.buildTripRequest(request); 0165 ref = Test::readFile(refFileName.insert(refFileName.size() -4, u"-trias")); 0166 0167 if (res != ref) { 0168 qDebug().noquote() << res; 0169 } 0170 QVERIFY(!res.isEmpty()); 0171 QCOMPARE(res, ref); 0172 } 0173 }; 0174 0175 QTEST_GUILESS_MAIN(OjpRequestTest) 0176 0177 #include "ojprequesttest.moc"