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

0001 /*
0002     SPDX-FileCopyrightText: 2020 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "geo/geojson.cpp"
0008 #include "backends/accessibilitycloudparser.cpp"
0009 
0010 #include <QFile>
0011 #include <QJsonArray>
0012 #include <QJsonDocument>
0013 #include <QJsonObject>
0014 #include <QJsonValue>
0015 #include <QTest>
0016 
0017 #define s(x) QStringLiteral(x)
0018 
0019 using namespace KPublicTransport;
0020 
0021 class AccessibilityCloudTest : public QObject
0022 {
0023     Q_OBJECT
0024 private:
0025     QByteArray readFile(const QString &fn)
0026     {
0027         QFile f(fn);
0028         f.open(QFile::ReadOnly);
0029         return f.readAll();
0030     }
0031 
0032 private Q_SLOTS:
0033     void testParseLocation_data()
0034     {
0035         QTest::addColumn<QString>("inFileName");
0036         QTest::addColumn<QString>("refFileName");
0037         QTest::addColumn<QString>("attrFileName");
0038 
0039         QTest::newRow("equipment")
0040             << s(SOURCE_DIR "/data/a11y-cloud/equipment.in.json")
0041             << s(SOURCE_DIR "/data/a11y-cloud/equipment.out.json")
0042             << s(SOURCE_DIR "/data/a11y-cloud/equipment.attribution.json");
0043     }
0044 
0045     void testParseLocation()
0046     {
0047         QFETCH(QString, inFileName);
0048         QFETCH(QString, refFileName);
0049         QFETCH(QString, attrFileName);
0050 
0051         AccessibilityCloudParser p;
0052         QVERIFY(p.parseLocations(readFile(inFileName)));
0053         const auto jsonRes = Location::toJson(p.locations);
0054 
0055         const auto ref = QJsonDocument::fromJson(readFile(refFileName)).array();
0056 
0057         if (jsonRes != ref) {
0058             qDebug().noquote() << QJsonDocument(jsonRes).toJson();
0059         }
0060         QVERIFY(!jsonRes.empty());
0061         QCOMPARE(jsonRes, ref);
0062 
0063         const auto attrRes = Attribution::toJson(p.attributions);
0064         const auto attrRef = QJsonDocument::fromJson(readFile(attrFileName)).array();
0065 
0066         if (attrRes != attrRef) {
0067             qDebug().noquote() << QJsonDocument(attrRes).toJson();
0068         }
0069         QVERIFY(!attrRes.empty());
0070         QCOMPARE(attrRes, attrRef);
0071     }
0072 };
0073 
0074 QTEST_GUILESS_MAIN(AccessibilityCloudTest)
0075 
0076 #include "accessibilitycloudtest.moc"