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"