#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() << 1 << 2 << 3 << 4); QCOMPARE(doubleListItem->value().toList(), QList() << 3.5 << 3.5 << 3.5); QCOMPARE(boolListItem->value().toList(), QList() << 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() << 10 << 11 << 12); QCOMPARE(intListItem->value().toList(), QList() << 10 << 11 << 12); QCOMPARE(signalSpy->numberOfCalls, 1); } void GConfItemTests::set_double_list() { signalSpy->numberOfCalls = 0; doubleListItem->set(QList() << 1.1 << 2.2 << 3.3); QCOMPARE(doubleListItem->value().toList(), QList() << 1.1 << 2.2 << 3.3); QCOMPARE(signalSpy->numberOfCalls, 1); } void GConfItemTests::set_bool_list() { signalSpy->numberOfCalls = 0; boolListItem->set(QList() << true << true << false); QCOMPARE(boolListItem->value().toList(), QList() << 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() << 5 << 4 << 3 << 2 << 1); doubleListItem->set(QList() << -2.5 << -2.5); boolListItem->set(QList() << false << false << true << true); unsetAfterItem->set(QVariant()); } QTEST_MAIN(GConfItemTests);