File indexing completed on 2024-04-21 04:41:08

0001 /*
0002     SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "testhelpers.h"
0008 #include "backends/oebbvehiclelayoutparser.cpp"
0009 #include "uic/uicrailwaycoach.cpp"
0010 
0011 #include <QFile>
0012 #include <QJsonObject>
0013 #include <QJsonDocument>
0014 #include <QJsonValue>
0015 #include <QTest>
0016 #include <QTimeZone>
0017 
0018 #define s(x) QStringLiteral(x)
0019 
0020 using namespace KPublicTransport;
0021 
0022 class OebbParserTest : public QObject
0023 {
0024     Q_OBJECT
0025 private Q_SLOTS:
0026     void initTestCase()
0027     {
0028         qputenv("TZ", "UTC");
0029     }
0030 
0031     void testVehicleLayoutParse_data()
0032     {
0033         QTest::addColumn<QString>("inFileName");
0034         QTest::addColumn<QString>("departureFileName");
0035 
0036         QTest::newRow("rj-forward")
0037             << s(SOURCE_DIR "/data/oebb/rj-forward-input.json")
0038             << s(SOURCE_DIR "/data/oebb/rj-forward-departure.json");
0039 
0040         QTest::newRow("rj-no-platform-sectors")
0041             << s(SOURCE_DIR "/data/oebb/rj-no-platform-sectors-input.json")
0042             << s(SOURCE_DIR "/data/oebb/rj-no-platform-sectors-departure.json");
0043 
0044         QTest::newRow("ic-no-platform-data")
0045             << s(SOURCE_DIR "/data/oebb/ic-no-platform-data-input.json")
0046             << s(SOURCE_DIR "/data/oebb/ic-no-platform-data-departure.json");
0047 
0048         QTest::newRow("regionalexpress")
0049             << s(SOURCE_DIR "/data/oebb/regional-express-input.json")
0050             << s(SOURCE_DIR "/data/oebb/regional-express-departure.json");
0051 
0052         QTest::newRow("sbahn")
0053             << s(SOURCE_DIR "/data/oebb/sbahn-input.json")
0054             << s(SOURCE_DIR "/data/oebb/sbahn-departure.json");
0055 
0056         QTest::newRow("nightjet")
0057             << s(SOURCE_DIR "/data/oebb/nightjet-input.json")
0058             << s(SOURCE_DIR "/data/oebb/nightjet-departure.json");
0059 
0060         QTest::newRow("per-coach-occupancy")
0061             << s(SOURCE_DIR "/data/oebb/rjx-per-coach-occupancy-input.json")
0062             << s(SOURCE_DIR "/data/oebb/rjx-per-coach-occupancy-departure.json");
0063     }
0064 
0065     void testVehicleLayoutParse()
0066     {
0067         QFETCH(QString, inFileName);
0068         QFETCH(QString, departureFileName);
0069 
0070         KPublicTransport::OebbVehicleLayoutParser parser;
0071 
0072         QVERIFY(parser.parse(Test::readFile(inFileName)));
0073         const auto departureJson = Stopover::toJson(parser.stopover);
0074         const auto departureRef = QJsonDocument::fromJson(Test::readFile(departureFileName)).object();
0075         QVERIFY(!departureJson.isEmpty());
0076         QVERIFY(Test::compareJson(departureFileName, departureJson, departureRef));
0077     }
0078 };
0079 
0080 QTEST_GUILESS_MAIN(OebbParserTest)
0081 
0082 #include "oebbparsertest.moc"