1
#include "test-gconf.h"
4
void myMessageOutput(QtMsgType type, const char *msg)
9
fprintf(stderr, "Debug: %s\n", msg);
13
fprintf(stderr, "Warning: %s\n", msg);
17
fprintf(stderr, "Critical: %s\n", msg);
21
fprintf(stderr, "Fatal: %s\n", msg);
27
// Definition of testcases: Normal tests
30
void GConfItemTests::timeout()
37
void GConfItemTests::initTestCase()
39
connect(&timer, SIGNAL(timeout()),
40
this, SLOT(timeout()));
44
void GConfItemTests::cleanupTestCase()
49
void GConfItemTests::init()
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()));
73
void GConfItemTests::cleanup()
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()));
88
delete stringListItem;
90
delete doubleListItem;
92
delete unsetBeforeItem;
93
delete unsetAfterItem;
98
void GConfItemTests::path()
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"));
112
void GConfItemTests::external_values()
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);
127
void GConfItemTests::set_bool()
129
signalSpy->numberOfCalls = 0;
131
boolItem->set(false);
132
QCOMPARE(boolItem->value().toBool(), false);
134
QCOMPARE(boolItem->value().toBool(), true);
136
QCOMPARE(signalSpy->numberOfCalls, 2);
139
void GConfItemTests::set_int()
141
signalSpy->numberOfCalls = 0;
144
QCOMPARE(intItem->value().toInt(), 12);
146
QCOMPARE(intItem->value().toInt(), -5);
148
QCOMPARE(signalSpy->numberOfCalls, 2);
151
void GConfItemTests::set_string()
153
signalSpy->numberOfCalls = 0;
155
stringItem->set("Hi");
156
QCOMPARE(stringItem->value().toString(), QString("Hi"));
158
QCOMPARE(signalSpy->numberOfCalls, 1);
161
void GConfItemTests::set_unicode_string()
163
signalSpy->numberOfCalls = 0;
165
stringItem->set(QString::fromUtf8("Höäü"));
166
QCOMPARE(stringItem->value().toString(), QString::fromUtf8("Höäü"));
168
QCOMPARE(signalSpy->numberOfCalls, 1);
171
void GConfItemTests::set_double()
173
signalSpy->numberOfCalls = 0;
175
doubleItem->set(1.2345);
176
QCOMPARE(doubleItem->value().toDouble(), 1.2345);
178
QCOMPARE(signalSpy->numberOfCalls, 1);
181
void GConfItemTests::set_string_list()
183
signalSpy->numberOfCalls = 0;
185
stringListItem->set(QStringList() << "one" << "two" << "three");
186
QCOMPARE(stringListItem->value().toStringList(), QStringList() << "one" << "two" << "three");
188
QCOMPARE(signalSpy->numberOfCalls, 1);
191
void GConfItemTests::set_int_list()
193
signalSpy->numberOfCalls = 0;
195
intListItem->set(QList<QVariant>() << 10 << 11 << 12);
196
QCOMPARE(intListItem->value().toList(), QList<QVariant>() << 10 << 11 << 12);
198
QCOMPARE(signalSpy->numberOfCalls, 1);
201
void GConfItemTests::set_double_list()
203
signalSpy->numberOfCalls = 0;
205
doubleListItem->set(QList<QVariant>() << 1.1 << 2.2 << 3.3);
206
QCOMPARE(doubleListItem->value().toList(), QList<QVariant>() << 1.1 << 2.2 << 3.3);
208
QCOMPARE(signalSpy->numberOfCalls, 1);
211
void GConfItemTests::set_bool_list()
213
signalSpy->numberOfCalls = 0;
215
boolListItem->set(QList<QVariant>() << true << true << false);
216
QCOMPARE(boolListItem->value().toList(), QList<QVariant>() << true << true << false);
218
QCOMPARE(signalSpy->numberOfCalls, 1);
221
void GConfItemTests::unset ()
223
signalSpy->numberOfCalls = 0;
226
QCOMPARE(boolItem->value().isValid(), false);
228
QCOMPARE(signalSpy->numberOfCalls, 1);
231
void GConfItemTests::list_dirs ()
233
GConfItem test("/Test");
234
QStringList dirs = test.listDirs();
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"));
249
void GConfItemTests::list_entries ()
251
GConfItem test("/Test");
252
QStringList entries = test.listEntries();
254
QVERIFY (entries.contains("/Test/Bool"));
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"));
267
void GConfItemTests::get_default ()
270
QCOMPARE(intItem->value(123).toInt(), 123);
272
QCOMPARE(intItem->value(123).toInt(), 234);
275
void GConfItemTests::propagate ()
277
GConfItem secondIntItem("/Test/Int");
278
secondIntItem.set(3000);
279
QVERIFY_TIMEOUT(2000, intItem->value() == secondIntItem.value());
280
QCOMPARE(signalSpy->numberOfCalls, 1);
283
void GConfItemTests::set_external()
285
// This must be the last test case. The values that are set here
286
// are checked after this program exits.
288
boolItem->set(false);
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());
299
QTEST_MAIN(GConfItemTests);