File indexing completed on 2024-04-28 15:19:31

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::fontDefaultValue()
0068 {
0069     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemFont *, QStringLiteral("DefaultFontItem"));
0070 
0071     QVERIFY(typeItem->isEqual(QFont(QStringLiteral("DejaVu Sans"))));
0072 }
0073 
0074 void ConfigLoaderTest::intDefaultValue()
0075 {
0076     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemInt *, QStringLiteral("DefaultIntItem"));
0077 
0078     QVERIFY(typeItem->isEqual(27));
0079 }
0080 
0081 void ConfigLoaderTest::passwordDefaultValue()
0082 {
0083     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemPassword *, QStringLiteral("DefaultPasswordItem"));
0084 
0085     QVERIFY(typeItem->isEqual(QString::fromLatin1("h4x.")));
0086 }
0087 
0088 void ConfigLoaderTest::pathDefaultValue()
0089 {
0090     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemPath *, QStringLiteral("DefaultPathItem"));
0091 
0092     QVERIFY(typeItem->isEqual(QString::fromLatin1("/dev/null")));
0093 }
0094 
0095 void ConfigLoaderTest::stringDefaultValue()
0096 {
0097     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemString *, QStringLiteral("DefaultStringItem"));
0098 
0099     QVERIFY(typeItem->isEqual(QString::fromLatin1("TestString")));
0100 }
0101 
0102 void ConfigLoaderTest::stringListDefaultValue()
0103 {
0104     GET_CONFIG_ITEM_VALUE(KConfigSkeleton::ItemStringList *, QStringLiteral("DefaultStringListItem"));
0105 
0106     // Create a string list with the expected values.
0107     QStringList expected;
0108     expected.append(QStringLiteral("One"));
0109     expected.append(QStringLiteral("Two"));
0110     expected.append(QStringLiteral("Three"));
0111     expected.append(QStringLiteral("Four"));
0112     expected.append(QStringLiteral("Five"));
0113 
0114     QVERIFY(typeItem->isEqual(expected));
0115 }
0116 
0117 void ConfigLoaderTest::uintDefaultValue()
0118 {
0119     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemUInt *, QStringLiteral("DefaultUIntItem"));
0120 
0121     QVERIFY(typeItem->isEqual(7U));
0122 }
0123 
0124 void ConfigLoaderTest::urlDefaultValue()
0125 {
0126     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemUrl *, QStringLiteral("DefaultUrlItem"));
0127 
0128     QVERIFY(typeItem->isEqual(QUrl(QStringLiteral("http://kde.org"))));
0129 }
0130 
0131 void ConfigLoaderTest::doubleDefaultValue()
0132 {
0133     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemDouble *, QStringLiteral("DefaultDoubleItem"));
0134 
0135     QVERIFY(typeItem->isEqual(13.37));
0136 }
0137 
0138 void ConfigLoaderTest::intListDefaultValue()
0139 {
0140     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemIntList *, QStringLiteral("DefaultIntListItem"));
0141 
0142     // Create a int list with the expected values.
0143     QList<int> expected;
0144     expected.append(1);
0145     expected.append(1);
0146     expected.append(2);
0147     expected.append(3);
0148     expected.append(5);
0149     expected.append(8);
0150 
0151     QVERIFY(typeItem->isEqual(QVariant::fromValue(expected)));
0152 }
0153 
0154 void ConfigLoaderTest::intListEmptyDefaultValue()
0155 {
0156     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemIntList *, QStringLiteral("EmptyDefaultIntListItem"));
0157 
0158     QVERIFY(typeItem->value().isEmpty());
0159 }
0160 
0161 void ConfigLoaderTest::longLongDefaultValue()
0162 {
0163     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemLongLong *, QStringLiteral("DefaultLongLongItem"));
0164 
0165     QVERIFY(typeItem->isEqual(Q_INT64_C(-9211372036854775808)));
0166 }
0167 
0168 void ConfigLoaderTest::pointDefaultValue()
0169 {
0170     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemPoint *, QStringLiteral("DefaultPointItem"));
0171 
0172     QVERIFY(typeItem->isEqual(QPoint(185, 857)));
0173 }
0174 
0175 void ConfigLoaderTest::rectDefaultValue()
0176 {
0177     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemRect *, QStringLiteral("DefaultRectItem"));
0178 
0179     // Create a new QRect with the expected value.
0180     QRect expected;
0181     expected.setCoords(3, 7, 951, 358);
0182 
0183     QVERIFY(typeItem->isEqual(expected));
0184 }
0185 
0186 void ConfigLoaderTest::sizeDefaultValue()
0187 {
0188     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemSize *, QStringLiteral("DefaultSizeItem"));
0189 
0190     QVERIFY(typeItem->isEqual(QSize(640, 480)));
0191 }
0192 
0193 void ConfigLoaderTest::ulongLongDefaultValue()
0194 {
0195     GET_CONFIG_ITEM_VALUE(KCoreConfigSkeleton::ItemULongLong *, QStringLiteral("DefaultULongLongItem"));
0196 
0197     QVERIFY(typeItem->isEqual(Q_UINT64_C(9223372036854775806)));
0198 }
0199 
0200 QTEST_MAIN(ConfigLoaderTest)
0201 
0202 #include "moc_kconfigloadertest.cpp"