File indexing completed on 2024-04-21 04:40:43

0001 /*
0002     SPDX-FileCopyrightText: 2020 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include <KOpeningHours/OpeningHours>
0008 
0009 #include <QFile>
0010 #include <QJsonDocument>
0011 #include <QJsonObject>
0012 #include <QTest>
0013 
0014 using namespace KOpeningHours;
0015 
0016 class JsonLdTest : public QObject
0017 {
0018     Q_OBJECT
0019 private Q_SLOTS:
0020     void initTestCase()
0021     {
0022         QLocale::setDefault(QLocale::c());
0023     }
0024 
0025     void testJsonLd_data()
0026     {
0027         QTest::addColumn<QString>("inputFile");
0028         QTest::addColumn<QByteArray>("osmExpr");
0029 
0030 #define T(json, osm) QTest::newRow(json) << QStringLiteral(SOURCE_DIR "/jsonlddata/" json ".json") << QByteArray(osm)
0031         T("oh-simple", "Mo,Tu,We,Th 09:00-12:00");
0032         T("oh-array", "Mo-Fr 10:00-19:00; Sa 10:00-22:00; Su 10:00-21:00");
0033         T("ohs-example", "Su 09:00-17:00 open; Sa 09:00-16:00 open; Th 09:00-15:00 open; Tu 09:00-14:00 open; Fr 09:00-13:00 open; Mo 09:00-12:00 open; We 09:00-11:00 open");
0034         T("ohs-mixed", "Mo,Tu,We,Th,Fr,Sa,Su 09:00-14:00; 2013 Dec 24-25 09:00-11:00 open; 2014 Jan 01 12:00-14:00 open");
0035 #undef T
0036     }
0037 
0038     void testJsonLd()
0039     {
0040         QFETCH(QString, inputFile);
0041         QFETCH(QByteArray, osmExpr);
0042 
0043         QFile inFile(inputFile);
0044         QVERIFY(inFile.open(QFile::ReadOnly));
0045 
0046         const auto obj = QJsonDocument::fromJson(inFile.readAll()).object();
0047         QVERIFY(!obj.isEmpty());
0048 
0049         auto oh = OpeningHours::fromJsonLd(obj);
0050         QCOMPARE(oh.error(), OpeningHours::NoError);
0051         QCOMPARE(oh.normalizedExpression(), osmExpr);
0052     }
0053 };
0054 
0055 QTEST_GUILESS_MAIN(JsonLdTest)
0056 
0057 #include "jsonldtest.moc"