File indexing completed on 2024-04-28 15:19:31
0001 /* This file is part of the KDE libraries 0002 SPDX-FileCopyrightText: 2006 Olivier Goffart <ogoffart at kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "kconfigskeletontest.h" 0008 0009 #include <QFont> 0010 #include <QtTestGui> 0011 #include <kconfig.h> 0012 0013 QTEST_MAIN(KConfigSkeletonTest) 0014 0015 // clazy:excludeall=non-pod-global-static 0016 0017 static const bool s_default_setting1{false}; 0018 static const QColor s_default_setting2{1, 2, 3}; 0019 static const QString s_default_setting4{QStringLiteral("Hello World")}; 0020 0021 static const bool s_write_setting1{true}; 0022 static const QColor s_write_setting2{3, 2, 1}; 0023 static const QString s_write_setting4{QStringLiteral("KDE")}; 0024 0025 static QFont defaultSetting3() 0026 { 0027 return QFont{QStringLiteral("helvetica"), 12}; 0028 } 0029 0030 static QFont writeSettings3() 0031 { 0032 return QFont{QStringLiteral("helvetica"), 14}; 0033 } 0034 0035 void KConfigSkeletonTest::initTestCase() 0036 { 0037 QStandardPaths::setTestModeEnabled(true); 0038 } 0039 0040 void KConfigSkeletonTest::init() 0041 { 0042 QFile::remove(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + QLatin1String{"/kconfigskeletontestrc"}); 0043 s = new KConfigSkeleton(QStringLiteral("kconfigskeletontestrc")); 0044 s->setCurrentGroup(QStringLiteral("MyGroup")); 0045 itemBool = s->addItemBool(QStringLiteral("MySetting1"), mMyBool, s_default_setting1); 0046 s->addItemColor(QStringLiteral("MySetting2"), mMyColor, s_default_setting2); 0047 0048 s->setCurrentGroup(QStringLiteral("MyOtherGroup")); 0049 s->addItemFont(QStringLiteral("MySetting3"), mMyFont, defaultSetting3()); 0050 s->addItemString(QStringLiteral("MySetting4"), mMyString, s_default_setting4); 0051 0052 QCOMPARE(mMyBool, s_default_setting1); 0053 QCOMPARE(mMyColor, s_default_setting2); 0054 QCOMPARE(mMyFont, defaultSetting3()); 0055 QCOMPARE(mMyString, s_default_setting4); 0056 0057 QVERIFY(s->isDefaults()); 0058 QVERIFY(!s->isSaveNeeded()); 0059 } 0060 0061 void KConfigSkeletonTest::cleanup() 0062 { 0063 delete s; 0064 } 0065 0066 void KConfigSkeletonTest::testSimple() 0067 { 0068 mMyBool = s_write_setting1; 0069 mMyColor = s_write_setting2; 0070 mMyFont = writeSettings3(); 0071 mMyString = s_write_setting4; 0072 0073 QVERIFY(s->isSaveNeeded()); 0074 QVERIFY(!s->isDefaults()); 0075 0076 s->save(); 0077 0078 QVERIFY(!s->isSaveNeeded()); 0079 QVERIFY(!s->isDefaults()); 0080 0081 mMyBool = false; 0082 mMyColor = QColor(); 0083 mMyString.clear(); 0084 mMyFont = QFont(); 0085 0086 QVERIFY(s->isSaveNeeded()); 0087 QVERIFY(!s->isDefaults()); 0088 0089 s->read(); 0090 0091 QVERIFY(!s->isSaveNeeded()); 0092 QVERIFY(!s->isDefaults()); 0093 0094 QCOMPARE(mMyBool, s_write_setting1); 0095 QCOMPARE(mMyColor, s_write_setting2); 0096 QCOMPARE(mMyFont, writeSettings3()); 0097 QCOMPARE(mMyString, s_write_setting4); 0098 } 0099 0100 void KConfigSkeletonTest::testRemoveItem() 0101 { 0102 QVERIFY(s->findItem(QStringLiteral("MySetting1"))); 0103 s->removeItem(QStringLiteral("MySetting1")); 0104 QVERIFY(!s->findItem(QStringLiteral("MySetting1"))); 0105 } 0106 0107 void KConfigSkeletonTest::testClear() 0108 { 0109 QVERIFY(s->findItem(QStringLiteral("MySetting2"))); 0110 QVERIFY(s->findItem(QStringLiteral("MySetting3"))); 0111 QVERIFY(s->findItem(QStringLiteral("MySetting4"))); 0112 0113 s->clearItems(); 0114 0115 QVERIFY(!s->findItem(QStringLiteral("MySetting2"))); 0116 QVERIFY(!s->findItem(QStringLiteral("MySetting3"))); 0117 QVERIFY(!s->findItem(QStringLiteral("MySetting4"))); 0118 } 0119 0120 void KConfigSkeletonTest::testDefaults() 0121 { 0122 mMyBool = s_write_setting1; 0123 mMyColor = s_write_setting2; 0124 mMyFont = writeSettings3(); 0125 mMyString = s_write_setting4; 0126 0127 QVERIFY(s->isSaveNeeded()); 0128 QVERIFY(!s->isDefaults()); 0129 0130 s->save(); 0131 0132 QVERIFY(!s->isSaveNeeded()); 0133 QVERIFY(!s->isDefaults()); 0134 0135 s->setDefaults(); 0136 0137 QVERIFY(s->isSaveNeeded()); 0138 QVERIFY(s->isDefaults()); 0139 0140 QCOMPARE(mMyBool, s_default_setting1); 0141 QCOMPARE(mMyColor, s_default_setting2); 0142 QCOMPARE(mMyFont, defaultSetting3()); 0143 QCOMPARE(mMyString, s_default_setting4); 0144 0145 s->save(); 0146 0147 QVERIFY(!s->isSaveNeeded()); 0148 QVERIFY(s->isDefaults()); 0149 } 0150 0151 void KConfigSkeletonTest::testKConfigDirty() 0152 { 0153 itemBool->setValue(true); 0154 itemBool->writeConfig(s->sharedConfig().data()); 0155 QVERIFY(s->sharedConfig()->isDirty()); 0156 s->save(); 0157 QVERIFY(!s->sharedConfig()->isDirty()); 0158 0159 itemBool->setValue(false); 0160 itemBool->writeConfig(s->sharedConfig().data()); 0161 QVERIFY(s->sharedConfig()->isDirty()); 0162 s->save(); 0163 QVERIFY(!s->sharedConfig()->isDirty()); 0164 } 0165 0166 void KConfigSkeletonTest::testSaveRead() 0167 { 0168 itemBool->setValue(true); 0169 s->save(); 0170 0171 itemBool->setValue(false); 0172 s->save(); 0173 0174 mMyBool = true; 0175 0176 s->read(); 0177 QCOMPARE(mMyBool, false); 0178 } 0179 0180 #include "moc_kconfigskeletontest.cpp"