diff options
| -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;          }      } | 
