src/3rdparty/libgq/gconf/test-gconf.cpp
changeset 37 758a864f9613
equal deleted inserted replaced
36:ef0373b55136 37:758a864f9613
       
     1 #include "test-gconf.h"
       
     2 
       
     3 #define MYLOGLEVEL 2
       
     4 void myMessageOutput(QtMsgType type, const char *msg)
       
     5 {
       
     6     switch (type) {
       
     7     case QtDebugMsg:
       
     8         if (MYLOGLEVEL <= 0)
       
     9             fprintf(stderr, "Debug: %s\n", msg);
       
    10         break;
       
    11     case QtWarningMsg:
       
    12         if (MYLOGLEVEL <= 1)
       
    13             fprintf(stderr, "Warning: %s\n", msg);
       
    14         break;
       
    15     case QtCriticalMsg:
       
    16         if (MYLOGLEVEL <= 2)
       
    17             fprintf(stderr, "Critical: %s\n", msg);
       
    18         break;
       
    19     case QtFatalMsg:
       
    20         if (MYLOGLEVEL <= 3)
       
    21             fprintf(stderr, "Fatal: %s\n", msg);
       
    22         abort();
       
    23     }
       
    24 }
       
    25 
       
    26 //
       
    27 // Definition of testcases: Normal tests
       
    28 //
       
    29 
       
    30 void GConfItemTests::timeout()
       
    31 {
       
    32     timed_out = true;
       
    33     timer.stop();
       
    34 }
       
    35 
       
    36 // Before all tests
       
    37 void GConfItemTests::initTestCase()
       
    38 {
       
    39     connect(&timer, SIGNAL(timeout()),
       
    40             this, SLOT(timeout()));
       
    41 }
       
    42 
       
    43 // After all tests
       
    44 void GConfItemTests::cleanupTestCase()
       
    45 {
       
    46 }
       
    47 
       
    48 // Before each test
       
    49 void GConfItemTests::init()
       
    50 {
       
    51     boolItem = new GConfItem("/Test/Bool");
       
    52     intItem = new GConfItem("/Test/Int");
       
    53     stringItem = new GConfItem("/Test/String");
       
    54     doubleItem = new GConfItem("/Test/Double");
       
    55     stringListItem = new GConfItem("/Test/StringList");
       
    56     intListItem = new GConfItem("/Test/IntList");
       
    57     doubleListItem = new GConfItem("/Test/DoubleList");
       
    58     boolListItem = new GConfItem("/Test/BoolList");
       
    59     unsetBeforeItem = new GConfItem("/Test/UnsetBefore");
       
    60     unsetAfterItem = new GConfItem("/Test/UnsetAfter");
       
    61     signalSpy = new SignalListener();
       
    62     QObject::connect(boolItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    63     QObject::connect(intItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    64     QObject::connect(stringItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    65     QObject::connect(doubleItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    66     QObject::connect(stringListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    67     QObject::connect(intListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    68     QObject::connect(doubleListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    69     QObject::connect(boolListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    70 }
       
    71 
       
    72 // After each test
       
    73 void GConfItemTests::cleanup()
       
    74 {
       
    75     QObject::disconnect(boolItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    76     QObject::disconnect(intItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    77     QObject::disconnect(stringItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    78     QObject::disconnect(doubleItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    79     QObject::disconnect(stringListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    80     QObject::disconnect(intListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    81     QObject::disconnect(doubleListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    82     QObject::disconnect(boolListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
       
    83     delete signalSpy;
       
    84     delete boolItem;
       
    85     delete intItem;
       
    86     delete stringItem;
       
    87     delete doubleItem;
       
    88     delete stringListItem;
       
    89     delete intListItem;
       
    90     delete doubleListItem;
       
    91     delete boolListItem;
       
    92     delete unsetBeforeItem;
       
    93     delete unsetAfterItem;
       
    94 
       
    95     timer.stop();
       
    96 }
       
    97 
       
    98 void GConfItemTests::path()
       
    99 {
       
   100     QCOMPARE(boolItem->key(), QString("/Test/Bool"));
       
   101     QCOMPARE(intItem->key(), QString("/Test/Int"));
       
   102     QCOMPARE(stringItem->key(), QString("/Test/String"));
       
   103     QCOMPARE(doubleItem->key(), QString("/Test/Double"));
       
   104     QCOMPARE(stringListItem->key(), QString("/Test/StringList"));
       
   105     QCOMPARE(intListItem->key(), QString("/Test/IntList"));
       
   106     QCOMPARE(doubleListItem->key(), QString("/Test/DoubleList"));
       
   107     QCOMPARE(boolListItem->key(), QString("/Test/BoolList"));
       
   108     QCOMPARE(unsetBeforeItem->key(), QString("/Test/UnsetBefore"));
       
   109     QCOMPARE(unsetAfterItem->key(), QString("/Test/UnsetAfter"));
       
   110 }
       
   111 
       
   112 void GConfItemTests::external_values()
       
   113 {
       
   114     // These values are set before this program starts.
       
   115     QCOMPARE(boolItem->value().toBool(), true);
       
   116     QCOMPARE(intItem->value().toInt(), 123);
       
   117     QCOMPARE(stringItem->value().toString(), QString("Hello GConf"));
       
   118     QCOMPARE(doubleItem->value().toDouble(), 3.5);
       
   119     QCOMPARE(stringListItem->value().toStringList(), QStringList() << "Hello" << "GConf" << QString::fromUtf8("ÄÖÜ"));
       
   120     QCOMPARE(intListItem->value().toList(), QList<QVariant>() << 1 << 2 << 3 << 4);
       
   121     QCOMPARE(doubleListItem->value().toList(), QList<QVariant>() << 3.5 << 3.5 << 3.5);
       
   122     QCOMPARE(boolListItem->value().toList(), QList<QVariant>() << false << true << true << false);
       
   123     QCOMPARE(unsetBeforeItem->value().isValid(), false);
       
   124     QCOMPARE(unsetAfterItem->value().isValid(), true);
       
   125 }
       
   126 
       
   127 void GConfItemTests::set_bool()
       
   128 {
       
   129     signalSpy->numberOfCalls = 0;
       
   130 
       
   131     boolItem->set(false);
       
   132     QCOMPARE(boolItem->value().toBool(), false);
       
   133     boolItem->set(true);
       
   134     QCOMPARE(boolItem->value().toBool(), true);
       
   135 
       
   136     QCOMPARE(signalSpy->numberOfCalls, 2);
       
   137 }
       
   138 
       
   139 void GConfItemTests::set_int()
       
   140 {
       
   141     signalSpy->numberOfCalls = 0;
       
   142 
       
   143     intItem->set(12);
       
   144     QCOMPARE(intItem->value().toInt(), 12);
       
   145     intItem->set(-5);
       
   146     QCOMPARE(intItem->value().toInt(), -5);
       
   147 
       
   148     QCOMPARE(signalSpy->numberOfCalls, 2);
       
   149 }
       
   150 
       
   151 void GConfItemTests::set_string()
       
   152 {
       
   153     signalSpy->numberOfCalls = 0;
       
   154 
       
   155     stringItem->set("Hi");
       
   156     QCOMPARE(stringItem->value().toString(), QString("Hi"));
       
   157 
       
   158     QCOMPARE(signalSpy->numberOfCalls, 1);
       
   159 }
       
   160 
       
   161 void GConfItemTests::set_unicode_string()
       
   162 {
       
   163     signalSpy->numberOfCalls = 0;
       
   164 
       
   165     stringItem->set(QString::fromUtf8("Höäü"));
       
   166     QCOMPARE(stringItem->value().toString(), QString::fromUtf8("Höäü"));
       
   167 
       
   168     QCOMPARE(signalSpy->numberOfCalls, 1);
       
   169 }
       
   170 
       
   171 void GConfItemTests::set_double()
       
   172 {
       
   173     signalSpy->numberOfCalls = 0;
       
   174 
       
   175     doubleItem->set(1.2345);
       
   176     QCOMPARE(doubleItem->value().toDouble(), 1.2345);
       
   177 
       
   178     QCOMPARE(signalSpy->numberOfCalls, 1);
       
   179 }
       
   180 
       
   181 void GConfItemTests::set_string_list()
       
   182 {
       
   183     signalSpy->numberOfCalls = 0;
       
   184 
       
   185     stringListItem->set(QStringList() << "one" << "two" << "three");
       
   186     QCOMPARE(stringListItem->value().toStringList(), QStringList() << "one" << "two" << "three");
       
   187 
       
   188     QCOMPARE(signalSpy->numberOfCalls, 1);
       
   189 }
       
   190 
       
   191 void GConfItemTests::set_int_list()
       
   192 {
       
   193     signalSpy->numberOfCalls = 0;
       
   194 
       
   195     intListItem->set(QList<QVariant>() << 10 << 11 << 12);
       
   196     QCOMPARE(intListItem->value().toList(), QList<QVariant>() << 10 << 11 << 12);
       
   197 
       
   198     QCOMPARE(signalSpy->numberOfCalls, 1);
       
   199 }
       
   200 
       
   201 void GConfItemTests::set_double_list()
       
   202 {
       
   203     signalSpy->numberOfCalls = 0;
       
   204 
       
   205     doubleListItem->set(QList<QVariant>() << 1.1 << 2.2 << 3.3);
       
   206     QCOMPARE(doubleListItem->value().toList(), QList<QVariant>() << 1.1 << 2.2 << 3.3);
       
   207 
       
   208     QCOMPARE(signalSpy->numberOfCalls, 1);
       
   209 }
       
   210 
       
   211 void GConfItemTests::set_bool_list()
       
   212 {
       
   213     signalSpy->numberOfCalls = 0;
       
   214 
       
   215     boolListItem->set(QList<QVariant>() << true << true << false);
       
   216     QCOMPARE(boolListItem->value().toList(), QList<QVariant>() << true << true << false);
       
   217 
       
   218     QCOMPARE(signalSpy->numberOfCalls, 1);
       
   219 }
       
   220 
       
   221 void GConfItemTests::unset ()
       
   222 {
       
   223     signalSpy->numberOfCalls = 0;
       
   224 
       
   225     boolItem->unset();
       
   226     QCOMPARE(boolItem->value().isValid(), false);
       
   227 
       
   228     QCOMPARE(signalSpy->numberOfCalls, 1);
       
   229 }
       
   230 
       
   231 void GConfItemTests::list_dirs ()
       
   232 {
       
   233     GConfItem test("/Test");
       
   234     QStringList dirs = test.listDirs();
       
   235 
       
   236     QVERIFY (!dirs.contains("/Test/Bool"));
       
   237     QVERIFY (!dirs.contains("/Test/Int"));
       
   238     QVERIFY (!dirs.contains("/Test/String"));
       
   239     QVERIFY (!dirs.contains("/Test/Double"));
       
   240     QVERIFY (!dirs.contains("/Test/StringList"));
       
   241     QVERIFY (!dirs.contains("/Test/IntList"));
       
   242     QVERIFY (!dirs.contains("/Test/DoubleList"));
       
   243     QVERIFY (!dirs.contains("/Test/BoolList"));
       
   244     QVERIFY (!dirs.contains("/Test/UnsetBefore"));
       
   245     QVERIFY (!dirs.contains("/Test/UnsetAfter"));
       
   246     QVERIFY (dirs.contains("/Test/Dir"));
       
   247 }
       
   248 
       
   249 void GConfItemTests::list_entries ()
       
   250 {
       
   251     GConfItem test("/Test");
       
   252     QStringList entries = test.listEntries();
       
   253 
       
   254     QVERIFY (!entries.contains("/Test/Bool"));  // has been unset above
       
   255     QVERIFY (entries.contains("/Test/Int"));
       
   256     QVERIFY (entries.contains("/Test/String"));
       
   257     QVERIFY (entries.contains("/Test/Double"));
       
   258     QVERIFY (entries.contains("/Test/StringList"));
       
   259     QVERIFY (entries.contains("/Test/IntList"));
       
   260     QVERIFY (entries.contains("/Test/DoubleList"));
       
   261     QVERIFY (entries.contains("/Test/BoolList"));
       
   262     QVERIFY (!entries.contains("/Test/UnsetBefore"));
       
   263     QVERIFY (entries.contains("/Test/UnsetAfter"));
       
   264     QVERIFY (!entries.contains("/Test/Dir"));
       
   265 }
       
   266 
       
   267 void GConfItemTests::get_default ()
       
   268 {
       
   269     intItem->unset();
       
   270     QCOMPARE(intItem->value(123).toInt(), 123);
       
   271     intItem->set(234);
       
   272     QCOMPARE(intItem->value(123).toInt(), 234);
       
   273 }
       
   274 
       
   275 void GConfItemTests::propagate ()
       
   276 {
       
   277     GConfItem secondIntItem("/Test/Int");
       
   278     secondIntItem.set(3000);
       
   279     QVERIFY_TIMEOUT(2000, intItem->value() == secondIntItem.value());
       
   280     QCOMPARE(signalSpy->numberOfCalls, 2);
       
   281 }
       
   282 
       
   283 void GConfItemTests::set_external()
       
   284 {
       
   285     // This must be the last test case.  The values that are set here
       
   286     // are checked after this program exits.
       
   287 
       
   288     boolItem->set(false);
       
   289     intItem->set(54321);
       
   290     stringItem->set("Good bye GConf");
       
   291     doubleItem->set(-2.5);
       
   292     stringListItem->set(QStringList() << "Good" << "bye" << "GConf" << QString::fromUtf8("äöü"));
       
   293     intListItem->set(QList<QVariant>() << 5 << 4 << 3 << 2 << 1);
       
   294     doubleListItem->set(QList<QVariant>() << -2.5 << -2.5);
       
   295     boolListItem->set(QList<QVariant>() << false << false << true << true);
       
   296     unsetAfterItem->set(QVariant());
       
   297 }
       
   298 
       
   299 QTEST_MAIN(GConfItemTests);