source: trunk/src/3rdparty/libgq/gconf/test-gconf.cpp

Last change on this file was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 9.4 KB
Line 
1#include "test-gconf.h"
2
3#define MYLOGLEVEL 2
4void 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
30void GConfItemTests::timeout()
31{
32 timed_out = true;
33 timer.stop();
34}
35
36// Before all tests
37void GConfItemTests::initTestCase()
38{
39 connect(&timer, SIGNAL(timeout()),
40 this, SLOT(timeout()));
41}
42
43// After all tests
44void GConfItemTests::cleanupTestCase()
45{
46}
47
48// Before each test
49void 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
73void 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
98void 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
112void 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
127void 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
139void 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
151void 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
161void 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
171void 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
181void 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
191void 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
201void 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
211void 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
221void 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
231void 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
249void 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
267void 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
275void 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
283void 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
299QTEST_MAIN(GConfItemTests);
Note: See TracBrowser for help on using the repository browser.