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"