summaryrefslogtreecommitdiffstats
path: root/kdecore/tests/kconfigtest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdecore/tests/kconfigtest.cpp')
-rw-r--r--kdecore/tests/kconfigtest.cpp162
1 files changed, 162 insertions, 0 deletions
diff --git a/kdecore/tests/kconfigtest.cpp b/kdecore/tests/kconfigtest.cpp
new file mode 100644
index 000000000..5ec4c309f
--- /dev/null
+++ b/kdecore/tests/kconfigtest.cpp
@@ -0,0 +1,162 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997 Matthias Kalle Dalheimer (kalle@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include <kunittest/tester.h>
+#include <kunittest/module.h>
+
+#include <kconfig.h>
+
+class KConfigTest : public KUnitTest::Tester
+{
+public:
+ void allTests();
+private:
+ void writeConfigFile();
+ void revertEntries();
+};
+
+KUNITTEST_MODULE( kunittest_kconfig, "KConfigTest" )
+KUNITTEST_MODULE_REGISTER_TESTER( KConfigTest )
+
+// test data
+#define BOOLENTRY1 true
+#define BOOLENTRY2 false
+#define STRINGENTRY1 "hello"
+#define STRINGENTRY2 " hello"
+#define STRINGENTRY3 "hello "
+#define STRINGENTRY4 " hello "
+#define STRINGENTRY5 " "
+#define STRINGENTRY6 ""
+#define LOCAL8BITENTRY "Hello äöü"
+#define POINTENTRY QPoint( 4351, 1235 )
+#define SIZEENTRY QSize( 10, 20 )
+#define RECTENTRY QRect( 10, 23, 5321, 13 )
+#define DATETIMEENTRY QDateTime( QDate( 2002, 06, 23 ), QTime( 12, 55, 40 ) )
+#define STRINGLISTENTRY QStringList( "Hello," )
+
+void KConfigTest::writeConfigFile()
+{
+ KConfig sc( "kconfigtest" );
+
+ sc.setGroup("AAA");
+ sc.writeEntry("stringEntry1", STRINGENTRY1, true, true);
+ sc.deleteEntry("stringEntry2", false, true);
+
+ sc.setGroup("Hello");
+ sc.writeEntry( "boolEntry1", BOOLENTRY1 );
+ sc.writeEntry( "boolEntry2", BOOLENTRY2 );
+
+ sc.writeEntry( "Test", QString::fromLocal8Bit( LOCAL8BITENTRY ) );
+ sc.writeEntry( "Test2", "");
+ sc.writeEntry( "stringEntry1", STRINGENTRY1 );
+ sc.writeEntry( "stringEntry2", STRINGENTRY2 );
+ sc.writeEntry( "stringEntry3", STRINGENTRY3 );
+ sc.writeEntry( "stringEntry4", STRINGENTRY4 );
+ sc.writeEntry( "stringEntry5", STRINGENTRY5 );
+// sc.writeEntry( "stringEntry6", STRINGENTRY6 );
+ sc.writeEntry( "keywith=equalsign", STRINGENTRY1 );
+ sc.deleteEntry( "stringEntry5" );
+ sc.deleteEntry( "stringEntry6" );
+
+ sc.deleteGroup("deleteMe", true);
+
+ sc.setGroup("Bye");
+ sc.writeEntry( "rectEntry", RECTENTRY );
+ sc.writeEntry( "pointEntry", POINTENTRY );
+ sc.writeEntry( "sizeEntry", SIZEENTRY );
+ sc.writeEntry( "dateTimeEntry", DATETIMEENTRY );
+ sc.writeEntry( "stringListEntry", STRINGLISTENTRY );
+ sc.sync();
+}
+
+// ### TODO: call this, and test the state of things afterwards
+void KConfigTest::revertEntries()
+{
+ qWarning("Reverting entries");
+ KConfig sc( "kconfigtest" );
+
+ sc.setGroup("Hello");
+ sc.revertToDefault( "boolEntry1");
+ sc.revertToDefault( "boolEntry2");
+
+ sc.revertToDefault( "Test" );
+ sc.revertToDefault( "Test2" );
+ sc.revertToDefault( "stringEntry1" );
+ sc.revertToDefault( "stringEntry2" );
+ sc.revertToDefault( "stringEntry3" );
+ sc.revertToDefault( "stringEntry4" );
+ sc.revertToDefault( "stringEntry5" );
+ sc.sync();
+}
+
+void KConfigTest::allTests()
+{
+ writeConfigFile();
+
+ KConfig sc2( "kconfigtest" );
+
+ KConfigGroup sc3( &sc2, "AAA");
+ bool bImmutable = sc3.entryIsImmutable("stringEntry1");
+
+ CHECK( bImmutable, false );
+ //qWarning("sc3.entryIsImmutable() 1: %s", bImmutable ? "true" : "false");
+
+ sc2.setGroup("AAA");
+ CHECK( sc2.hasKey( "stringEntry1" ), true );
+ CHECK( sc2.readEntry( "stringEntry1" ), QString( STRINGENTRY1 ) );
+ CHECK( sc2.entryIsImmutable("stringEntry1"), bImmutable );
+ CHECK( sc2.hasKey( "stringEntry2" ), false );
+ CHECK( sc2.readEntry( "stringEntry2", "bla" ), QString( "bla" ) );
+
+ CHECK( sc2.hasDefault( "stringEntry1" ), false );
+
+ sc2.setGroup("Hello");
+ CHECK( sc2.readEntry( "Test" ), QString::fromLocal8Bit( LOCAL8BITENTRY ) );
+ CHECK( sc2.readEntry("Test2", "Fietsbel").isEmpty(), true );
+ CHECK( sc2.readEntry( "stringEntry1" ), QString( STRINGENTRY1 ) );
+ CHECK( sc2.readEntry( "stringEntry2" ), QString( STRINGENTRY2 ) );
+ CHECK( sc2.readEntry( "stringEntry3" ), QString( STRINGENTRY3 ) );
+ CHECK( sc2.readEntry( "stringEntry4" ), QString( STRINGENTRY4 ) );
+ CHECK( sc2.hasKey( "stringEntry5" ), false);
+ CHECK( sc2.readEntry( "stringEntry5", "test" ), QString( "test" ) );
+ CHECK( sc2.hasKey( "stringEntry6" ), false);
+ CHECK( sc2.readEntry( "stringEntry6", "foo" ), QString( "foo" ) );
+ CHECK( sc2.readBoolEntry( "boolEntry1" ), BOOLENTRY1 );
+ CHECK( sc2.readBoolEntry( "boolEntry2" ), BOOLENTRY2 );
+
+#if 0
+ QString s;
+ s = sc2.readEntry( "keywith=equalsign" );
+ fprintf(stderr, "comparing keywith=equalsign %s with %s -> ", STRINGENTRY1, s.latin1());
+ if (s == STRINGENTRY1)
+ fprintf(stderr, "OK\n");
+ else {
+ fprintf(stderr, "not OK\n");
+ exit(-1);
+ }
+#endif
+
+ sc2.setGroup("Bye");
+
+ CHECK( sc2.readPointEntry( "pointEntry" ), POINTENTRY );
+ CHECK( sc2.readSizeEntry( "sizeEntry" ), SIZEENTRY);
+ CHECK( sc2.readRectEntry( "rectEntry" ), RECTENTRY );
+ CHECK( sc2.readDateTimeEntry( "dateTimeEntry" ).toString(), DATETIMEENTRY.toString() );
+ CHECK( sc2.readListEntry( "stringListEntry").join( "," ), STRINGLISTENTRY.join( "," ) );
+}