diff options
author | Albert Astals Cid <aacid@kde.org> | 2015-01-07 00:54:10 +0100 |
---|---|---|
committer | Albert Astals Cid <aacid@kde.org> | 2015-01-07 00:55:00 +0100 |
commit | 257b66e049483d198723e515c3c1e65e18b6afb3 (patch) | |
tree | 8fda0c355cbbebda4249ed737807206ea243cf9c | |
parent | 915976c1238be811f169eab1b02f7e8dad6410e0 (diff) | |
download | kconfig-257b66e049483d198723e515c3c1e65e18b6afb3.tar.gz kconfig-257b66e049483d198723e515c3c1e65e18b6afb3.tar.bz2 |
Fix KCoreConfigSkeleton when toggling a value with saves in between
REVIEW: 121838
Acked by Matthew Dawson
-rw-r--r-- | autotests/kconfigskeletontest.cpp | 84 | ||||
-rw-r--r-- | autotests/kconfigskeletontest.h | 9 | ||||
-rw-r--r-- | src/core/kcoreconfigskeleton.cpp | 5 | ||||
-rw-r--r-- | src/core/kcoreconfigskeleton.h | 1 |
4 files changed, 76 insertions, 23 deletions
diff --git a/autotests/kconfigskeletontest.cpp b/autotests/kconfigskeletontest.cpp index f401b9f0..898366c0 100644 --- a/autotests/kconfigskeletontest.cpp +++ b/autotests/kconfigskeletontest.cpp @@ -35,15 +35,17 @@ QTEST_MAIN(KConfigSkeletonTest) #define WRITE_SETTING3 QFont("helvetica",14) #define WRITE_SETTING4 QString("KDE") -void KConfigSkeletonTest::initTestCase() +void KConfigSkeletonTest::init() { - setCurrentGroup("MyGroup"); - addItemBool("MySetting1", mMyBool, DEFAULT_SETTING1); - addItemColor("MySetting2", mMyColor, DEFAULT_SETTING2); + QFile::remove(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/kconfigskeletontestrc"); + s = new KConfigSkeleton("kconfigskeletontestrc"); + s->setCurrentGroup("MyGroup"); + itemBool = s->addItemBool("MySetting1", mMyBool, DEFAULT_SETTING1); + s->addItemColor("MySetting2", mMyColor, DEFAULT_SETTING2); - setCurrentGroup("MyOtherGroup"); - addItemFont("MySetting3", mMyFont, DEFAULT_SETTING3); - addItemString("MySetting4", mMyString, DEFAULT_SETTING4); + s->setCurrentGroup("MyOtherGroup"); + s->addItemFont("MySetting3", mMyFont, DEFAULT_SETTING3); + s->addItemString("MySetting4", mMyString, DEFAULT_SETTING4); QCOMPARE(mMyBool, DEFAULT_SETTING1); QCOMPARE(mMyColor, DEFAULT_SETTING2); @@ -51,6 +53,11 @@ void KConfigSkeletonTest::initTestCase() QCOMPARE(mMyString, DEFAULT_SETTING4); } +void KConfigSkeletonTest::cleanup() +{ + delete s; +} + void KConfigSkeletonTest::testSimple() { mMyBool = WRITE_SETTING1; @@ -58,14 +65,14 @@ void KConfigSkeletonTest::testSimple() mMyFont = WRITE_SETTING3; mMyString = WRITE_SETTING4; - save(); + s->save(); mMyBool = false; mMyColor = QColor(); mMyString.clear(); mMyFont = QFont(); - read(); + s->read(); QCOMPARE(mMyBool, WRITE_SETTING1); QCOMPARE(mMyColor, WRITE_SETTING2); @@ -75,33 +82,68 @@ void KConfigSkeletonTest::testSimple() void KConfigSkeletonTest::testRemoveItem() { - QVERIFY(findItem("MySetting1")); - removeItem("MySetting1"); - QVERIFY(!findItem("MySetting1")); + QVERIFY(s->findItem("MySetting1")); + s->removeItem("MySetting1"); + QVERIFY(!s->findItem("MySetting1")); } void KConfigSkeletonTest::testClear() { - QVERIFY(findItem("MySetting2")); - QVERIFY(findItem("MySetting3")); - QVERIFY(findItem("MySetting4")); + QVERIFY(s->findItem("MySetting2")); + QVERIFY(s->findItem("MySetting3")); + QVERIFY(s->findItem("MySetting4")); - clearItems(); + s->clearItems(); - QVERIFY(!findItem("MySetting2")); - QVERIFY(!findItem("MySetting3")); - QVERIFY(!findItem("MySetting4")); + QVERIFY(!s->findItem("MySetting2")); + QVERIFY(!s->findItem("MySetting3")); + QVERIFY(!s->findItem("MySetting4")); } void KConfigSkeletonTest::testDefaults() { - setDefaults(); + mMyBool = WRITE_SETTING1; + mMyColor = WRITE_SETTING2; + mMyFont = WRITE_SETTING3; + mMyString = WRITE_SETTING4; + + s->save(); + + s->setDefaults(); QCOMPARE(mMyBool, DEFAULT_SETTING1); QCOMPARE(mMyColor, DEFAULT_SETTING2); QCOMPARE(mMyFont, DEFAULT_SETTING3); QCOMPARE(mMyString, DEFAULT_SETTING4); - save(); + s->save(); } +void KConfigSkeletonTest::testKConfigDirty() +{ + itemBool->setValue(true); + itemBool->writeConfig(s->sharedConfig().data()); + QVERIFY(s->sharedConfig()->isDirty()); + s->save(); + QVERIFY(!s->sharedConfig()->isDirty()); + + itemBool->setValue(false); + itemBool->writeConfig(s->sharedConfig().data()); + QVERIFY(s->sharedConfig()->isDirty()); + s->save(); + QVERIFY(!s->sharedConfig()->isDirty()); +} + +void KConfigSkeletonTest::testSaveRead() +{ + itemBool->setValue(true); + s->save(); + + itemBool->setValue(false); + s->save(); + + mMyBool = true; + + s->read(); + QCOMPARE(mMyBool, false); +} diff --git a/autotests/kconfigskeletontest.h b/autotests/kconfigskeletontest.h index c54c7b07..5cdcc9d3 100644 --- a/autotests/kconfigskeletontest.h +++ b/autotests/kconfigskeletontest.h @@ -21,19 +21,24 @@ #include <kconfigskeleton.h> -class KConfigSkeletonTest : public KConfigSkeleton +class KConfigSkeletonTest : public QObject { Q_OBJECT public: private Q_SLOTS: - void initTestCase(); + void init(); + void cleanup(); void testSimple(); void testDefaults(); void testRemoveItem(); void testClear(); + void testKConfigDirty(); + void testSaveRead(); private: + KConfigSkeleton *s; + KConfigSkeleton::ItemBool *itemBool; bool mMyBool; QColor mMyColor; QFont mMyFont; diff --git a/src/core/kcoreconfigskeleton.cpp b/src/core/kcoreconfigskeleton.cpp index e4255a60..1569a94f 100644 --- a/src/core/kcoreconfigskeleton.cpp +++ b/src/core/kcoreconfigskeleton.cpp @@ -152,6 +152,7 @@ void KCoreConfigSkeleton::ItemString::writeConfig(KConfig *config) } else { cg.writeEntry(mKey, mReference); } + mLoadedValue = mReference; } } @@ -218,6 +219,7 @@ void KCoreConfigSkeleton::ItemUrl::writeConfig(KConfig *config) } else { cg.writeEntry<QString>(mKey, mReference.toString()); } + mLoadedValue = mReference; } } @@ -483,6 +485,7 @@ void KCoreConfigSkeleton::ItemEnum::writeConfig(KConfig *config) } else { cg.writeEntry(mKey, mReference); } + mLoadedValue = mReference; } } @@ -881,6 +884,7 @@ void KCoreConfigSkeleton::ItemPathList::writeConfig(KConfig *config) QStringList sl = mReference; cg.writePathEntry(mKey, sl); } + mLoadedValue = mReference; } } @@ -925,6 +929,7 @@ void KCoreConfigSkeleton::ItemUrlList::writeConfig(KConfig *config) } cg.writeEntry<QStringList>(mKey, strList); } + mLoadedValue = mReference; } } diff --git a/src/core/kcoreconfigskeleton.h b/src/core/kcoreconfigskeleton.h index f8313d1e..bb3d0f61 100644 --- a/src/core/kcoreconfigskeleton.h +++ b/src/core/kcoreconfigskeleton.h @@ -277,6 +277,7 @@ public: } else { cg.writeEntry(mKey, mReference); } + mLoadedValue = mReference; } } |