File indexing completed on 2024-05-05 04:00:57
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 SPDX-License-Identifier: MIT 0004 */ 0005 0006 #include <QtTest/QTest> 0007 0008 #include "mecard.h" 0009 0010 using namespace Prison; 0011 0012 class MeCardTest : public QObject 0013 { 0014 Q_OBJECT 0015 0016 private Q_SLOTS: 0017 void testWifiParse() 0018 { 0019 QVariantMap map; 0020 0021 { 0022 auto m = MeCard::parse(QStringLiteral("WIFI:S:myssid;T:WPA;P:xxx123;;")); 0023 QVERIFY(m.has_value()); 0024 QCOMPARE(m->header(), QLatin1String("WIFI")); 0025 QCOMPARE(m->headerView(), QLatin1String("WIFI")); 0026 QCOMPARE(m->value(u"S"), QLatin1String("myssid")); 0027 QCOMPARE(m->value(u"T"), QLatin1String("WPA")); 0028 QCOMPARE(m->value(u"P"), QLatin1String("xxx123")); 0029 map = QVariantMap( 0030 {{QLatin1String("S"), QLatin1String("myssid")}, {QLatin1String("T"), QLatin1String("WPA")}, {QLatin1String("P"), QLatin1String("xxx123")}}); 0031 QCOMPARE(m->toVariantMap(), map); 0032 } 0033 0034 { 0035 auto m = MeCard::parse(QStringLiteral("MECARD:N:Doe,John;TEL:13035551212;EMAIL:john.doe@example.com;;")); 0036 QVERIFY(m.has_value()); 0037 QCOMPARE(m->header(), QLatin1String("MECARD")); 0038 QCOMPARE(m->headerView(), QLatin1String("MECARD")); 0039 QCOMPARE(m->value(u"N"), QLatin1String("Doe,John")); 0040 QCOMPARE(m->value(u"TEL"), QLatin1String("13035551212")); 0041 QCOMPARE(m->value(u"EMAIL"), QLatin1String("john.doe@example.com")); 0042 map = QVariantMap({{QLatin1String("N"), QLatin1String("Doe,John")}, 0043 {QLatin1String("TEL"), QLatin1String("13035551212")}, 0044 {QLatin1String("EMAIL"), QLatin1String("john.doe@example.com")}}); 0045 QCOMPARE(m->toVariantMap(), map); 0046 } 0047 0048 { 0049 auto m = MeCard::parse(QStringLiteral("MECARD:N:Doe,John;TEL:13035551212;EMAIL:john.doe@example.com;EMAIL:null@kde.org;;")); 0050 QVERIFY(m.has_value()); 0051 QCOMPARE(m->header(), QLatin1String("MECARD")); 0052 QCOMPARE(m->headerView(), QLatin1String("MECARD")); 0053 QCOMPARE(m->value(u"N"), QLatin1String("Doe,John")); 0054 QCOMPARE(m->value(u"TEL"), QLatin1String("13035551212")); 0055 QCOMPARE(m->value(u"EMAIL"), QString()); 0056 QCOMPARE(m->values(u"EMAIL"), QStringList({QLatin1String("john.doe@example.com"), QLatin1String("null@kde.org")})); 0057 map = QVariantMap({{QLatin1String("N"), QLatin1String("Doe,John")}, 0058 {QLatin1String("TEL"), QLatin1String("13035551212")}, 0059 {QLatin1String("EMAIL"), QString()}, 0060 {QLatin1String("EMAIL"), QStringList({QLatin1String("john.doe@example.com"), QLatin1String("null@kde.org")})}}); 0061 QCOMPARE(m->toVariantMap(), map); 0062 } 0063 0064 { 0065 auto m = MeCard::parse(QStringLiteral("WIFI:S:\\\"foo\\;bar\\\\baz\\\";P:\"ABCD\";;")); 0066 QVERIFY(m.has_value()); 0067 QCOMPARE(m->value(u"P"), QLatin1String("ABCD")); 0068 QCOMPARE(m->value(u"S"), QLatin1String("\"foo;bar\\baz\"")); 0069 map = QVariantMap({{QLatin1String("P"), QLatin1String("ABCD")}, {QLatin1String("S"), QLatin1String("\"foo;bar\\baz\"")}}); 0070 QCOMPARE(m->toVariantMap(), map); 0071 } 0072 } 0073 0074 void testInvalid_data() 0075 { 0076 QTest::addColumn<QString>("input"); 0077 QTest::newRow("empty") << QString(); 0078 QTest::newRow("no colon") << QStringLiteral("wifi"); 0079 QTest::newRow("no content 1") << QStringLiteral("wifi:"); 0080 QTest::newRow("no content 2") << QStringLiteral("wifi:;"); 0081 QTest::newRow("no content 3") << QStringLiteral("wifi:;;"); 0082 QTest::newRow("invalid element") << QStringLiteral("wifi:S:"); 0083 } 0084 void testInvalid() 0085 { 0086 QFETCH(QString, input); 0087 auto m = MeCard::parse(input); 0088 QVERIFY(!m.has_value()); 0089 } 0090 }; 0091 0092 QTEST_APPLESS_MAIN(MeCardTest) 0093 0094 #include "mecardtest.moc"