File indexing completed on 2024-04-28 11:33:57

0001 /*
0002   This file is part of the kcalcore library.
0003 
0004   SPDX-FileCopyrightText: 2009 Allen Winter <winter@kde.org>
0005   SPDX-FileCopyrightText: 2010 Casey Link <unnamedrambler@gmail.com>
0006   SPDX-FileCopyrightText: 2009-2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
0007 
0008   SPDX-License-Identifier: LGPL-2.0-or-later
0009 */
0010 #include "testcustomproperties.h"
0011 #include "customproperties.h"
0012 
0013 #include <QDataStream>
0014 #include <QTest>
0015 
0016 QTEST_MAIN(CustomPropertiesTest)
0017 
0018 using namespace KCalendarCore;
0019 
0020 void CustomPropertiesTest::testValidity()
0021 {
0022     CustomProperties cp;
0023 
0024     QByteArray app("KORG");
0025     QByteArray key("TEXT");
0026 
0027     QByteArray name("X-KDE-KORG-TEXT");
0028     QCOMPARE(cp.customPropertyName(app, key), name);
0029     cp.setCustomProperty(app, key, QStringLiteral("rich"));
0030     QCOMPARE(cp.customProperty(app, key), QLatin1String("rich"));
0031     QCOMPARE(cp.nonKDECustomProperty(name), QLatin1String("rich"));
0032 
0033     cp.removeCustomProperty(app, key);
0034     cp.setCustomProperty(app, key, QStringLiteral("foo"));
0035     cp.setCustomProperty(app, key, QStringLiteral("rich"));
0036     QCOMPARE(cp.customProperty(app, key), QLatin1String("rich"));
0037 
0038     key = "X-TEXT";
0039     cp.setNonKDECustomProperty(key, QStringLiteral("rich"));
0040     QCOMPARE(cp.nonKDECustomProperty(key), QLatin1String("rich"));
0041 
0042     cp.removeNonKDECustomProperty(key);
0043     cp.setNonKDECustomProperty(key, QStringLiteral("foo"));
0044     cp.setNonKDECustomProperty(key, QStringLiteral("rich"));
0045     QCOMPARE(cp.nonKDECustomProperty(key), QLatin1String("rich"));
0046 }
0047 
0048 void CustomPropertiesTest::testCompare()
0049 {
0050     CustomProperties cp1;
0051     CustomProperties cp2;
0052 
0053     QByteArray app("KORG");
0054     QByteArray key("TEXT");
0055 
0056     cp1.setCustomProperty(app, key, QStringLiteral("rich"));
0057     cp2 = cp1;
0058     QVERIFY(cp1 == cp2);
0059 
0060     CustomProperties cp3;
0061     cp3.setCustomProperty(app, key, cp1.customProperty(app, key));
0062     QVERIFY(cp1 == cp3);
0063 
0064     QVERIFY(cp1.customProperty(app, key) == QLatin1String("rich"));
0065     QVERIFY(cp1.customProperty(app, "foo").isEmpty());
0066     QVERIFY(cp1.customProperty(app, QByteArray()).isEmpty());
0067 
0068     CustomProperties cp4;
0069     QVERIFY(cp4.customProperty(app, key).isEmpty());
0070     QVERIFY(cp4.customProperty(app, "foo").isEmpty());
0071     QVERIFY(cp4.customProperty(app, QByteArray()).isEmpty());
0072 
0073     key = "X-TEXT";
0074     cp1.setNonKDECustomProperty(key, QStringLiteral("rich"));
0075     cp2 = cp1;
0076     QVERIFY(cp1 == cp2);
0077 
0078     cp3.setNonKDECustomProperty(key, cp1.nonKDECustomProperty(key));
0079     QVERIFY(cp1 == cp3);
0080 
0081     QVERIFY(cp1.nonKDECustomProperty(key) == QLatin1String("rich"));
0082     QVERIFY(cp1.nonKDECustomProperty("foo").isEmpty());
0083     QVERIFY(cp1.nonKDECustomProperty(QByteArray()).isEmpty());
0084 
0085     CustomProperties cp5;
0086     QVERIFY(cp5.nonKDECustomProperty(key).isEmpty());
0087     QVERIFY(cp5.nonKDECustomProperty("foo").isEmpty());
0088     QVERIFY(cp5.nonKDECustomProperty(QByteArray()).isEmpty());
0089 }
0090 
0091 void CustomPropertiesTest::testMapValidity()
0092 {
0093     QMap<QByteArray, QString> cpmap;
0094     cpmap.insert("X-key1", QStringLiteral("val1"));
0095     cpmap.insert("X-key2", QStringLiteral("val2"));
0096     cpmap.insert("X-key3", QStringLiteral("val3"));
0097     cpmap.insert("X-key4", QStringLiteral("val4"));
0098     cpmap.insert("X-key5", QStringLiteral("val5"));
0099 
0100     CustomProperties cp;
0101     cp.setCustomProperties(cpmap);
0102 
0103     QVERIFY(cp.customProperties().value("X-key3") == QLatin1String("val3"));
0104 }
0105 
0106 void CustomPropertiesTest::testMapCompare()
0107 {
0108     QMap<QByteArray, QString> cpmap;
0109     cpmap.insert("X-key1", QStringLiteral("val1"));
0110     cpmap.insert("X-key2", QStringLiteral("val2"));
0111     cpmap.insert("X-key3", QStringLiteral("val3"));
0112     cpmap.insert("X-key4", QStringLiteral("val4"));
0113     cpmap.insert("X-key5", QStringLiteral("val5"));
0114 
0115     CustomProperties cp1;
0116     CustomProperties cp2;
0117     cp1.setCustomProperties(cpmap);
0118     cp1 = cp2;
0119     QVERIFY(cp1 == cp2);
0120 
0121     CustomProperties cp3;
0122     cp3.setCustomProperties(cp1.customProperties());
0123     QVERIFY(cp1 == cp3);
0124 }
0125 
0126 void CustomPropertiesTest::testEmpty()
0127 {
0128     CustomProperties cp;
0129 
0130     QByteArray app("KORG");
0131     QByteArray key("TEXT");
0132     QString empty;
0133 
0134     cp.setCustomProperty(app, key, empty);
0135     QCOMPARE(cp.customProperty(app, key), empty);
0136 
0137     cp.removeCustomProperty(app, key);
0138     cp.setCustomProperty(app, key, empty);
0139     QCOMPARE(cp.customProperty(app, key), empty);
0140 
0141     key = "X-TEXT";
0142     cp.setNonKDECustomProperty(key, empty);
0143     QCOMPARE(cp.nonKDECustomProperty(key), empty);
0144 
0145     cp.removeNonKDECustomProperty(key);
0146     cp.setNonKDECustomProperty(key, empty);
0147     QCOMPARE(cp.nonKDECustomProperty(key), empty);
0148 }
0149 
0150 void CustomPropertiesTest::testDataStreamIn()
0151 {
0152     QMap<QByteArray, QString> cpmap;
0153     cpmap.insert("X-key1", QStringLiteral("val1"));
0154     cpmap.insert("X-key2", QStringLiteral("val2"));
0155     cpmap.insert("X-key3", QStringLiteral("val3"));
0156     cpmap.insert("X-key4", QStringLiteral("val4"));
0157     cpmap.insert("X-key5", QStringLiteral("val5"));
0158 
0159     CustomProperties cp;
0160     cp.setCustomProperties(cpmap);
0161     QByteArray byteArray;
0162     QDataStream out_stream(&byteArray, QIODevice::WriteOnly);
0163 
0164     out_stream << cp;
0165 
0166     QDataStream in_stream(&byteArray, QIODevice::ReadOnly);
0167 
0168     QMap<QByteArray, QString> cpmap2;
0169 
0170     in_stream >> cpmap2;
0171 
0172     QVERIFY(cpmap == cpmap2);
0173 }
0174 
0175 void CustomPropertiesTest::testVolatile()
0176 {
0177     QMap<QByteArray, QString> cpmap;
0178     cpmap.insert("X-key1", QStringLiteral("val1"));
0179     cpmap.insert("X-KDE-VOLATILE-FOO", QStringLiteral("val2"));
0180 
0181     CustomProperties cp;
0182     cp.setCustomProperties(cpmap);
0183 
0184     QCOMPARE(cp.customProperties().count(), 2);
0185 
0186     QMap<QByteArray, QString> cpmap2;
0187     cpmap2.insert("X-key1", QStringLiteral("val1"));
0188     CustomProperties cp2;
0189     cp2.setCustomProperties(cpmap2);
0190     QCOMPARE(cp, cp2);
0191 
0192     cp.removeCustomProperty("VOLATILE", "FOO");
0193     QCOMPARE(cp.customProperties().count(), 1);
0194 
0195     cp.setCustomProperty("VOLATILE", "FOO", QStringLiteral("BAR"));
0196     QCOMPARE(cp.customProperties().count(), 2);
0197 
0198     QByteArray byteArray;
0199     QDataStream out_stream(&byteArray, QIODevice::WriteOnly);
0200 
0201     out_stream << cp;
0202     QDataStream in_stream(&byteArray, QIODevice::ReadOnly);
0203     in_stream >> cp;
0204 
0205     QCOMPARE(cp.customProperties().count(), 1);
0206 }
0207 
0208 void CustomPropertiesTest::testDataStreamOut()
0209 {
0210     QMap<QByteArray, QString> cpmap;
0211     cpmap.insert("X-key1", QStringLiteral("val1"));
0212     cpmap.insert("X-key2", QStringLiteral("val2"));
0213     cpmap.insert("X-key3", QStringLiteral("val3"));
0214     cpmap.insert("X-key4", QStringLiteral("val4"));
0215     cpmap.insert("X-key5", QStringLiteral("val5"));
0216 
0217     CustomProperties cp;
0218     CustomProperties cp2;
0219     cp.setCustomProperties(cpmap);
0220     QByteArray byteArray;
0221     QDataStream out_stream(&byteArray, QIODevice::WriteOnly);
0222 
0223     out_stream << cp;
0224 
0225     QDataStream in_stream(&byteArray, QIODevice::ReadOnly);
0226 
0227     in_stream >> cp2;
0228 
0229     QVERIFY(cp2 == cp);
0230 }
0231 
0232 #include "moc_testcustomproperties.cpp"