+void FileConfigTestCase::Save()
+{
+ wxStringInputStream sis(testconfig);
+ wxFileConfig fc(sis);
+ CPPUNIT_ASSERT( Dump(fc) == testconfig );
+}
+
+void FileConfigTestCase::DeleteEntry()
+{
+ wxStringInputStream sis(testconfig);
+ wxFileConfig fc(sis);
+
+ CPPUNIT_ASSERT( !fc.DeleteEntry(_T("foo")) );
+
+ CPPUNIT_ASSERT( fc.DeleteEntry(_T("root/group1/subgroup/subentry")) );
+ CPPUNIT_ASSERT( Dump(fc) == _T("[root]\n")
+ _T("entry=value\n")
+ _T("[root/group1]\n")
+ _T("[root/group1/subgroup]\n")
+ _T("subentry2=subvalue2\n")
+ _T("[root/group2]\n") );
+
+ // group should be deleted now as well as it became empty
+ wxConfigPathChanger change(&fc, _T("root/group1/subgroup/subentry2"));
+ CPPUNIT_ASSERT( fc.DeleteEntry(_T("subentry2")) );
+ CPPUNIT_ASSERT( Dump(fc) == _T("[root]\n")
+ _T("entry=value\n")
+ _T("[root/group1]\n")
+ _T("[root/group2]\n") );
+}
+
+void FileConfigTestCase::DeleteGroup()
+{
+ wxStringInputStream sis(testconfig);
+ wxFileConfig fc(sis);
+
+ CPPUNIT_ASSERT( !fc.DeleteGroup(_T("foo")) );
+
+ CPPUNIT_ASSERT( fc.DeleteGroup(_T("root/group1")) );
+ CPPUNIT_ASSERT( Dump(fc) == _T("[root]\n")
+ _T("entry=value\n")
+ _T("[root/group2]\n") );
+
+ CPPUNIT_ASSERT( fc.DeleteGroup(_T("root/group2")) );
+ CPPUNIT_ASSERT( Dump(fc) == _T("[root]\n")
+ _T("entry=value\n") );
+
+ CPPUNIT_ASSERT( fc.DeleteGroup(_T("root")) );
+ CPPUNIT_ASSERT( Dump(fc).empty() );
+}
+
+void FileConfigTestCase::DeleteAll()
+{
+ wxStringInputStream sis(testconfig);
+ wxFileConfig fc(sis);
+
+ CPPUNIT_ASSERT( fc.DeleteAll() );
+ CPPUNIT_ASSERT( Dump(fc).empty() );
+}
+
+void FileConfigTestCase::RenameEntry()
+{
+ wxStringInputStream sis(testconfig);
+ wxFileConfig fc(sis);
+
+ fc.SetPath(_T("root"));
+ CPPUNIT_ASSERT( fc.RenameEntry(_T("entry"), _T("newname")) );
+ CPPUNIT_ASSERT( Dump(fc) == _T("[root]\n")
+ _T("newname=value\n")
+ _T("[root/group1]\n")
+ _T("[root/group1/subgroup]\n")
+ _T("subentry=subvalue\n")
+ _T("subentry2=subvalue2\n")
+ _T("[root/group2]\n") );
+
+ fc.SetPath(_T("group1/subgroup"));
+ CPPUNIT_ASSERT( !fc.RenameEntry(_T("entry"), _T("newname")) );
+ CPPUNIT_ASSERT( !fc.RenameEntry(_T("subentry"), _T("subentry2")) );
+
+ CPPUNIT_ASSERT( fc.RenameEntry(_T("subentry"), _T("subentry1")) );
+ CPPUNIT_ASSERT( Dump(fc) == _T("[root]\n")
+ _T("newname=value\n")
+ _T("[root/group1]\n")
+ _T("[root/group1/subgroup]\n")
+ _T("subentry2=subvalue2\n")
+ _T("subentry1=subvalue\n")
+ _T("[root/group2]\n") );
+}
+
+void FileConfigTestCase::RenameGroup()
+{
+ wxStringInputStream sis(testconfig);
+ wxFileConfig fc(sis);
+
+ CPPUNIT_ASSERT( fc.RenameGroup(_T("root"), _T("foot")) );
+ CPPUNIT_ASSERT( Dump(fc) == _T("[foot]\n")
+ _T("entry=value\n")
+ _T("[foot/group1]\n")
+ _T("[foot/group1/subgroup]\n")
+ _T("subentry=subvalue\n")
+ _T("subentry2=subvalue2\n")
+ _T("[foot/group2]\n") );
+}
+