File indexing completed on 2024-04-28 15:59:42
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 0009 #include <KPublicTransport/Stopover> 0010 0011 #include <QFile> 0012 #include <QJsonDocument> 0013 #include <QJsonObject> 0014 #include <QTest> 0015 0016 #define s(x) QStringLiteral(x) 0017 0018 using namespace KPublicTransport; 0019 0020 class DepartureTest : public QObject 0021 { 0022 Q_OBJECT 0023 private: 0024 QByteArray readFile(const QString &fn) const 0025 { 0026 QFile f(fn); 0027 f.open(QFile::ReadOnly); 0028 return f.readAll(); 0029 } 0030 0031 private Q_SLOTS: 0032 void initTestCase() 0033 { 0034 qputenv("TZ", "Europe/Helsinki"); // something exotic, ie. something not used in the test data 0035 qRegisterMetaType<Disruption::Effect>(); 0036 } 0037 0038 void testDepartureMerge_data() 0039 { 0040 QTest::addColumn<QString>("baseName"); 0041 0042 QDir dir(QStringLiteral(SOURCE_DIR "/data/departures")); 0043 const auto lst = dir.entryList(QStringList(QStringLiteral("*.merged.json")), QDir::Files | QDir::Readable | QDir::NoSymLinks); 0044 for (const auto &file : lst) { 0045 const auto base = file.left(file.size() - 12); 0046 QTest::newRow(base.toLatin1().constData()) << (dir.path() + QLatin1Char('/') + base); 0047 } 0048 } 0049 0050 void testDepartureMerge() 0051 { 0052 QFETCH(QString, baseName); 0053 0054 const auto lhs = Stopover::fromJson(QJsonDocument::fromJson(readFile(baseName + QLatin1String(".lhs.json"))).object()); 0055 const auto rhs = Stopover::fromJson(QJsonDocument::fromJson(readFile(baseName + QLatin1String(".rhs.json"))).object()); 0056 const auto expected = QJsonDocument::fromJson(readFile(baseName + QLatin1String(".merged.json"))).object(); 0057 0058 QVERIFY(Stopover::isSame(lhs, rhs)); 0059 QVERIFY(Stopover::isSame(rhs, lhs)); 0060 0061 const auto mergedL2R = Stopover::merge(lhs, rhs); 0062 QVERIFY(Test::compareJson(baseName + QLatin1String(".merged.json"), Stopover::toJson(mergedL2R), expected)); 0063 0064 const auto mergedR2L = Stopover::merge(rhs, lhs); 0065 QVERIFY(Test::compareJson(baseName + QLatin1String(".merged.json"), Stopover::toJson(mergedR2L), expected)); 0066 } 0067 }; 0068 0069 QTEST_GUILESS_MAIN(DepartureTest) 0070 0071 #include "departuretest.moc"