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);
|
---|