File indexing completed on 2024-03-24 03:55:26
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"