File indexing completed on 2024-04-28 15:59:43

0001 /*
0002     SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #include "../src/lib/json/jsonpointer.cpp"
0007 
0008 #include <QJsonArray>
0009 #include <QJsonObject>
0010 #include <QObject>
0011 #include <QTest>
0012 
0013 using namespace KPublicTransport;
0014 
0015 class JsonPointerTest: public QObject
0016 {
0017     Q_OBJECT
0018 private Q_SLOTS:
0019     void testResolve()
0020     {
0021         // examples from RFC 6901
0022         QJsonObject obj({
0023             { QLatin1String("foo"), QJsonArray({QStringLiteral("bar"), QStringLiteral("baz")}) },
0024             { QLatin1String(""), 0 },
0025             { QLatin1String("a/b"), 1 },
0026             { QLatin1String("c%%d"), 2 },
0027             { QLatin1String("e^f"), 3 },
0028             { QLatin1String("g|h"), 4 },
0029             { QLatin1String("i\\j"), 5 },
0030             { QLatin1String("k\"l"), 6 },
0031             { QLatin1String(" "), 7 },
0032             { QLatin1String("m~n"), 8 },
0033         });
0034 
0035         QJsonObject top({{ QLatin1String("obj"), obj }});
0036 
0037         QCOMPARE(JsonPointer::evaluate(obj, u""), obj);
0038         QCOMPARE(JsonPointer::evaluate(top, u""), top);
0039         QCOMPARE(JsonPointer::evaluate(obj, u"foo"), QJsonArray({QStringLiteral("bar"), QStringLiteral("baz")}));
0040         QCOMPARE(JsonPointer::evaluate(top, u"obj"), obj);
0041         QCOMPARE(JsonPointer::evaluate(top, u"obj/foo"), QJsonArray({QStringLiteral("bar"), QStringLiteral("baz")}));
0042         QCOMPARE(JsonPointer::evaluate(top, u"obj/g|h"), 4);
0043         QCOMPARE(JsonPointer::evaluate(top, u"/obj/ "), 7);
0044     }
0045 };
0046 
0047 QTEST_APPLESS_MAIN(JsonPointerTest)
0048 
0049 #include "jsonpointertest.moc"