File indexing completed on 2024-04-28 03:53:12

0001 /*
0002     SPDX-FileCopyrightText: 2010 Martin Blumenstingl <darklight.xdarklight@googlemail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 #include "kconfigloadertest.h"
0007 
0008 #include <kconfig.h>
0009 #include <kconfiggroup.h>
0010 #include <kconfigloader.h>
0011 #include <kconfigskeleton.h>
0012 
0013 Q_DECLARE_METATYPE(QList<int>)
0014 
0015 static const QString s_testName(QStringLiteral("kconfigloadertest")); // clazy:exclude=non-pod-global-static
0016 
0017 #define GET_CONFIG_ITEM_VALUE(type, configName)                                                                                                                \
0018     KConfigSkeletonItem *item = cl->findItem(s_testName, configName);                                                                                          \
0019     /* Check if we got back a valid item. */                                                                                                                   \
0020     QVERIFY(item != nullptr);                                                                                                                                  \
0021     /* Cast the item to the given type. */                                                                                                                     \
0022     type typeItem = dynamic_cast<type>(item);                                                                                                                  \
0023     /* Make sure the cast was successful. */                                                                                                                   \
0024     QVERIFY(typeItem != nullptr);
0025 
0026 void ConfigLoaderTest::init()
0027 {
0028     QString fileName = s_testName + QLatin1String(".xml");
0029     configFile = new QFile(QFINDTESTDATA(QString::fromLatin1("/") + fileName));
0030     cl = new KConfigLoader(configFile->fileName(), configFile);
0031 }
0032 
0033 void ConfigLoaderTest::cleanup()
0034 {
0035     delete cl;
0036     delete configFile;
0037 }
0038 
0039 void ConfigLoaderTest::boolDefaultValue()
0040 {
0041     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemBool *, QStringLiteral("DefaultBoolItem"));
0042 
0043     QVERIFY(typeItem->isEqual(true));
0044 }
0045 
0046 void ConfigLoaderTest::colorDefaultValue()
0047 {
0048     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemColor *, QStringLiteral("DefaultColorItem"));
0049 
0050     QVERIFY(typeItem->isEqual(QColor("#00FF00")));
0051 }
0052 
0053 void ConfigLoaderTest::dateTimeDefaultValue()
0054 {
0055     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemDateTime *, QStringLiteral("DefaultDateTimeItem"));
0056 
0057     QVERIFY(typeItem->isEqual(QDateTime::fromString(QStringLiteral("Thu Sep 09 2010"))));
0058 }
0059 
0060 void ConfigLoaderTest::enumDefaultValue()
0061 {
0062     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemEnum *, QStringLiteral("DefaultEnumItem"));
0063 
0064     QVERIFY(typeItem->isEqual(3));
0065 }
0066 
0067 void ConfigLoaderTest::enumDefaultValueString()
0068 {
0069     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemEnum *, QStringLiteral("DefaultEnumItemString"));
0070 
0071     QVERIFY(typeItem->isEqual(2));
0072 }
0073 
0074 void ConfigLoaderTest::fontDefaultValue()
0075 {
0076     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemFont *, QStringLiteral("DefaultFontItem"));
0077 
0078     QVERIFY(typeItem->isEqual(QFont(QStringLiteral("DejaVu Sans"))));
0079 }
0080 
0081 void ConfigLoaderTest::intDefaultValue()
0082 {
0083     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemInt *, QStringLiteral("DefaultIntItem"));
0084 
0085     QVERIFY(typeItem->isEqual(27));
0086 }
0087 
0088 void ConfigLoaderTest::passwordDefaultValue()
0089 {
0090     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemPassword *, QStringLiteral("DefaultPasswordItem"));
0091 
0092     QVERIFY(typeItem->isEqual(QString::fromLatin1("h4x.")));
0093 }
0094 
0095 void ConfigLoaderTest::pathDefaultValue()
0096 {
0097     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemPath *, QStringLiteral("DefaultPathItem"));
0098 
0099     QVERIFY(typeItem->isEqual(QString::fromLatin1("/dev/null")));
0100 }
0101 
0102 void ConfigLoaderTest::stringDefaultValue()
0103 {
0104     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemString *, QStringLiteral("DefaultStringItem"));
0105 
0106     QVERIFY(typeItem->isEqual(QString::fromLatin1("TestString")));
0107 }
0108 
0109 void ConfigLoaderTest::stringListDefaultValue()
0110 {
0111     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemStringList *, QStringLiteral("DefaultStringListItem"));
0112 
0113     // Create a string list with the expected values.
0114     QStringList expected;
0115     expected.append(QStringLiteral("One"));
0116     expected.append(QStringLiteral("Two"));
0117     expected.append(QStringLiteral("Three"));
0118     expected.append(QStringLiteral("Four"));
0119     expected.append(QStringLiteral("Five"));
0120 
0121     QVERIFY(typeItem->isEqual(expected));
0122 }
0123 
0124 void ConfigLoaderTest::uintDefaultValue()
0125 {
0126     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemUInt *, QStringLiteral("DefaultUIntItem"));
0127 
0128     QVERIFY(typeItem->isEqual(7U));
0129 }
0130 
0131 void ConfigLoaderTest::urlDefaultValue()
0132 {
0133     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemUrl *, QStringLiteral("DefaultUrlItem"));
0134 
0135     QVERIFY(typeItem->isEqual(QUrl(QStringLiteral("http://kde.org"))));
0136 }
0137 
0138 void ConfigLoaderTest::doubleDefaultValue()
0139 {
0140     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemDouble *, QStringLiteral("DefaultDoubleItem"));
0141 
0142     QVERIFY(typeItem->isEqual(13.37));
0143 }
0144 
0145 void ConfigLoaderTest::intListDefaultValue()
0146 {
0147     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemIntList *, QStringLiteral("DefaultIntListItem"));
0148 
0149     // Create a int list with the expected values.
0150     QList<int> expected;
0151     expected.append(1);
0152     expected.append(1);
0153     expected.append(2);
0154     expected.append(3);
0155     expected.append(5);
0156     expected.append(8);
0157 
0158     QVERIFY(typeItem->isEqual(QVariant::fromValue(expected)));
0159 }
0160 
0161 void ConfigLoaderTest::intListEmptyDefaultValue()
0162 {
0163     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemIntList *, QStringLiteral("EmptyDefaultIntListItem"));
0164 
0165     QVERIFY(typeItem->value().isEmpty());
0166 }
0167 
0168 void ConfigLoaderTest::longLongDefaultValue()
0169 {
0170     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemLongLong *, QStringLiteral("DefaultLongLongItem"));
0171 
0172     QVERIFY(typeItem->isEqual(Q_INT64_C(-9211372036854775808)));
0173 }
0174 
0175 void ConfigLoaderTest::pointDefaultValue()
0176 {
0177     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemPoint *, QStringLiteral("DefaultPointItem"));
0178 
0179     QVERIFY(typeItem->isEqual(QPoint(185, 857)));
0180 }
0181 
0182 void ConfigLoaderTest::pointFDefaultValue()
0183 {
0184     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemPointF *, QStringLiteral("DefaultPointFItem"));
0185 
0186     QVERIFY(typeItem->isEqual(QPointF(185.5, 857.5)));
0187 }
0188 
0189 void ConfigLoaderTest::rectDefaultValue()
0190 {
0191     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemRect *, QStringLiteral("DefaultRectItem"));
0192 
0193     // Create a new QRect with the expected value.
0194     QRect expected;
0195     expected.setCoords(3, 7, 951, 358);
0196 
0197     QVERIFY(typeItem->isEqual(expected));
0198 }
0199 
0200 void ConfigLoaderTest::rectFDefaultValue()
0201 {
0202     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemRectF *, QStringLiteral("DefaultRectFItem"));
0203 
0204     // Create a new QRectF with the expected value.
0205     QRectF expected;
0206     expected.setCoords(3.5, 7.5, 951.5, 358.5);
0207 
0208     QVERIFY(typeItem->isEqual(expected));
0209 }
0210 
0211 void ConfigLoaderTest::sizeDefaultValue()
0212 {
0213     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemSize *, QStringLiteral("DefaultSizeItem"));
0214 
0215     QVERIFY(typeItem->isEqual(QSize(640, 480)));
0216 }
0217 
0218 void ConfigLoaderTest::sizeFDefaultValue()
0219 {
0220     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemSizeF *, QStringLiteral("DefaultSizeFItem"));
0221 
0222     QVERIFY(typeItem->isEqual(QSizeF(640.5, 480.5)));
0223 }
0224 
0225 void ConfigLoaderTest::ulongLongDefaultValue()
0226 {
0227     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemULongLong *, QStringLiteral("DefaultULongLongItem"));
0228 
0229     QVERIFY(typeItem->isEqual(Q_UINT64_C(9223372036854775806)));
0230 }
0231 
0232 QTEST_MAIN(ConfigLoaderTest)
0233 
0234 #include "moc_kconfigloadertest.cpp"