summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/libgq/gconf/test-gconf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/libgq/gconf/test-gconf.cpp')
-rw-r--r--src/3rdparty/libgq/gconf/test-gconf.cpp299
1 files changed, 299 insertions, 0 deletions
diff --git a/src/3rdparty/libgq/gconf/test-gconf.cpp b/src/3rdparty/libgq/gconf/test-gconf.cpp
new file mode 100644
index 0000000000..52eb28171a
--- /dev/null
+++ b/src/3rdparty/libgq/gconf/test-gconf.cpp
@@ -0,0 +1,299 @@
+#include "test-gconf.h"
+
+#define MYLOGLEVEL 2
+void myMessageOutput(QtMsgType type, const char *msg)
+{
+ switch (type) {
+ case QtDebugMsg:
+ if (MYLOGLEVEL <= 0)
+ fprintf(stderr, "Debug: %s\n", msg);
+ break;
+ case QtWarningMsg:
+ if (MYLOGLEVEL <= 1)
+ fprintf(stderr, "Warning: %s\n", msg);
+ break;
+ case QtCriticalMsg:
+ if (MYLOGLEVEL <= 2)
+ fprintf(stderr, "Critical: %s\n", msg);
+ break;
+ case QtFatalMsg:
+ if (MYLOGLEVEL <= 3)
+ fprintf(stderr, "Fatal: %s\n", msg);
+ abort();
+ }
+}
+
+//
+// Definition of testcases: Normal tests
+//
+
+void GConfItemTests::timeout()
+{
+ timed_out = true;
+ timer.stop();
+}
+
+// Before all tests
+void GConfItemTests::initTestCase()
+{
+ connect(&timer, SIGNAL(timeout()),
+ this, SLOT(timeout()));
+}
+
+// After all tests
+void GConfItemTests::cleanupTestCase()
+{
+}
+
+// Before each test
+void GConfItemTests::init()
+{
+ boolItem = new GConfItem("/Test/Bool");
+ intItem = new GConfItem("/Test/Int");
+ stringItem = new GConfItem("/Test/String");
+ doubleItem = new GConfItem("/Test/Double");
+ stringListItem = new GConfItem("/Test/StringList");
+ intListItem = new GConfItem("/Test/IntList");
+ doubleListItem = new GConfItem("/Test/DoubleList");
+ boolListItem = new GConfItem("/Test/BoolList");
+ unsetBeforeItem = new GConfItem("/Test/UnsetBefore");
+ unsetAfterItem = new GConfItem("/Test/UnsetAfter");
+ signalSpy = new SignalListener();
+ QObject::connect(boolItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::connect(intItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::connect(stringItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::connect(doubleItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::connect(stringListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::connect(intListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::connect(doubleListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::connect(boolListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+}
+
+// After each test
+void GConfItemTests::cleanup()
+{
+ QObject::disconnect(boolItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::disconnect(intItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::disconnect(stringItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::disconnect(doubleItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::disconnect(stringListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::disconnect(intListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::disconnect(doubleListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ QObject::disconnect(boolListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
+ delete signalSpy;
+ delete boolItem;
+ delete intItem;
+ delete stringItem;
+ delete doubleItem;
+ delete stringListItem;
+ delete intListItem;
+ delete doubleListItem;
+ delete boolListItem;
+ delete unsetBeforeItem;
+ delete unsetAfterItem;
+
+ timer.stop();
+}
+
+void GConfItemTests::path()
+{
+ QCOMPARE(boolItem->key(), QString("/Test/Bool"));
+ QCOMPARE(intItem->key(), QString("/Test/Int"));
+ QCOMPARE(stringItem->key(), QString("/Test/String"));
+ QCOMPARE(doubleItem->key(), QString("/Test/Double"));
+ QCOMPARE(stringListItem->key(), QString("/Test/StringList"));
+ QCOMPARE(intListItem->key(), QString("/Test/IntList"));
+ QCOMPARE(doubleListItem->key(), QString("/Test/DoubleList"));
+ QCOMPARE(boolListItem->key(), QString("/Test/BoolList"));
+ QCOMPARE(unsetBeforeItem->key(), QString("/Test/UnsetBefore"));
+ QCOMPARE(unsetAfterItem->key(), QString("/Test/UnsetAfter"));
+}
+
+void GConfItemTests::external_values()
+{
+ // These values are set before this program starts.
+ QCOMPARE(boolItem->value().toBool(), true);
+ QCOMPARE(intItem->value().toInt(), 123);
+ QCOMPARE(stringItem->value().toString(), QString("Hello GConf"));
+ QCOMPARE(doubleItem->value().toDouble(), 3.5);
+ QCOMPARE(stringListItem->value().toStringList(), QStringList() << "Hello" << "GConf" << QString::fromUtf8("ÄÖÜ"));
+ QCOMPARE(intListItem->value().toList(), QList<QVariant>() << 1 << 2 << 3 << 4);
+ QCOMPARE(doubleListItem->value().toList(), QList<QVariant>() << 3.5 << 3.5 << 3.5);
+ QCOMPARE(boolListItem->value().toList(), QList<QVariant>() << false << true << true << false);
+ QCOMPARE(unsetBeforeItem->value().isValid(), false);
+ QCOMPARE(unsetAfterItem->value().isValid(), true);
+}
+
+void GConfItemTests::set_bool()
+{
+ signalSpy->numberOfCalls = 0;
+
+ boolItem->set(false);
+ QCOMPARE(boolItem->value().toBool(), false);
+ boolItem->set(true);
+ QCOMPARE(boolItem->value().toBool(), true);
+
+ QCOMPARE(signalSpy->numberOfCalls, 2);
+}
+
+void GConfItemTests::set_int()
+{
+ signalSpy->numberOfCalls = 0;
+
+ intItem->set(12);
+ QCOMPARE(intItem->value().toInt(), 12);
+ intItem->set(-5);
+ QCOMPARE(intItem->value().toInt(), -5);
+
+ QCOMPARE(signalSpy->numberOfCalls, 2);
+}
+
+void GConfItemTests::set_string()
+{
+ signalSpy->numberOfCalls = 0;
+
+ stringItem->set("Hi");
+ QCOMPARE(stringItem->value().toString(), QString("Hi"));
+
+ QCOMPARE(signalSpy->numberOfCalls, 1);
+}
+
+void GConfItemTests::set_unicode_string()
+{
+ signalSpy->numberOfCalls = 0;
+
+ stringItem->set(QString::fromUtf8("Höäü"));
+ QCOMPARE(stringItem->value().toString(), QString::fromUtf8("Höäü"));
+
+ QCOMPARE(signalSpy->numberOfCalls, 1);
+}
+
+void GConfItemTests::set_double()
+{
+ signalSpy->numberOfCalls = 0;
+
+ doubleItem->set(1.2345);
+ QCOMPARE(doubleItem->value().toDouble(), 1.2345);
+
+ QCOMPARE(signalSpy->numberOfCalls, 1);
+}
+
+void GConfItemTests::set_string_list()
+{
+ signalSpy->numberOfCalls = 0;
+
+ stringListItem->set(QStringList() << "one" << "two" << "three");
+ QCOMPARE(stringListItem->value().toStringList(), QStringList() << "one" << "two" << "three");
+
+ QCOMPARE(signalSpy->numberOfCalls, 1);
+}
+
+void GConfItemTests::set_int_list()
+{
+ signalSpy->numberOfCalls = 0;
+
+ intListItem->set(QList<QVariant>() << 10 << 11 << 12);
+ QCOMPARE(intListItem->value().toList(), QList<QVariant>() << 10 << 11 << 12);
+
+ QCOMPARE(signalSpy->numberOfCalls, 1);
+}
+
+void GConfItemTests::set_double_list()
+{
+ signalSpy->numberOfCalls = 0;
+
+ doubleListItem->set(QList<QVariant>() << 1.1 << 2.2 << 3.3);
+ QCOMPARE(doubleListItem->value().toList(), QList<QVariant>() << 1.1 << 2.2 << 3.3);
+
+ QCOMPARE(signalSpy->numberOfCalls, 1);
+}
+
+void GConfItemTests::set_bool_list()
+{
+ signalSpy->numberOfCalls = 0;
+
+ boolListItem->set(QList<QVariant>() << true << true << false);
+ QCOMPARE(boolListItem->value().toList(), QList<QVariant>() << true << true << false);
+
+ QCOMPARE(signalSpy->numberOfCalls, 1);
+}
+
+void GConfItemTests::unset ()
+{
+ signalSpy->numberOfCalls = 0;
+
+ boolItem->unset();
+ QCOMPARE(boolItem->value().isValid(), false);
+
+ QCOMPARE(signalSpy->numberOfCalls, 1);
+}
+
+void GConfItemTests::list_dirs ()
+{
+ GConfItem test("/Test");
+ QStringList dirs = test.listDirs();
+
+ QVERIFY (!dirs.contains("/Test/Bool"));
+ QVERIFY (!dirs.contains("/Test/Int"));
+ QVERIFY (!dirs.contains("/Test/String"));
+ QVERIFY (!dirs.contains("/Test/Double"));
+ QVERIFY (!dirs.contains("/Test/StringList"));
+ QVERIFY (!dirs.contains("/Test/IntList"));
+ QVERIFY (!dirs.contains("/Test/DoubleList"));
+ QVERIFY (!dirs.contains("/Test/BoolList"));
+ QVERIFY (!dirs.contains("/Test/UnsetBefore"));
+ QVERIFY (!dirs.contains("/Test/UnsetAfter"));
+ QVERIFY (dirs.contains("/Test/Dir"));
+}
+
+void GConfItemTests::list_entries ()
+{
+ GConfItem test("/Test");
+ QStringList entries = test.listEntries();
+
+ QVERIFY (!entries.contains("/Test/Bool")); // has been unset above
+ QVERIFY (entries.contains("/Test/Int"));
+ QVERIFY (entries.contains("/Test/String"));
+ QVERIFY (entries.contains("/Test/Double"));
+ QVERIFY (entries.contains("/Test/StringList"));
+ QVERIFY (entries.contains("/Test/IntList"));
+ QVERIFY (entries.contains("/Test/DoubleList"));
+ QVERIFY (entries.contains("/Test/BoolList"));
+ QVERIFY (!entries.contains("/Test/UnsetBefore"));
+ QVERIFY (entries.contains("/Test/UnsetAfter"));
+ QVERIFY (!entries.contains("/Test/Dir"));
+}
+
+void GConfItemTests::get_default ()
+{
+ intItem->unset();
+ QCOMPARE(intItem->value(123).toInt(), 123);
+ intItem->set(234);
+ QCOMPARE(intItem->value(123).toInt(), 234);
+}
+
+void GConfItemTests::propagate ()
+{
+ GConfItem secondIntItem("/Test/Int");
+ secondIntItem.set(3000);
+ QVERIFY_TIMEOUT(2000, intItem->value() == secondIntItem.value());
+ QCOMPARE(signalSpy->numberOfCalls, 2);
+}
+
+void GConfItemTests::set_external()
+{
+ // This must be the last test case. The values that are set here
+ // are checked after this program exits.
+
+ boolItem->set(false);
+ intItem->set(54321);
+ stringItem->set("Good bye GConf");
+ doubleItem->set(-2.5);
+ stringListItem->set(QStringList() << "Good" << "bye" << "GConf" << QString::fromUtf8("äöü"));
+ intListItem->set(QList<QVariant>() << 5 << 4 << 3 << 2 << 1);
+ doubleListItem->set(QList<QVariant>() << -2.5 << -2.5);
+ boolListItem->set(QList<QVariant>() << false << false << true << true);
+ unsetAfterItem->set(QVariant());
+}
+
+QTEST_MAIN(GConfItemTests);