24 void TestJson::QMJsonObject_create(
void)
26 auto hash1 = QHash<QString, QMPointer<QMJsonValue> >();
27 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
28 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(4));
29 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(8));
30 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(15));
32 hash1[
"key1"] = value1;
33 hash1[
"key2"] = value2;
34 hash1[
"key3"] = value3;
35 object1->insert(
"key1", value1);
36 object1->insert(
"key2", value2);
37 object1->insert(
"key3", value3);
39 auto object2 = QMPointer<QMJsonObject>(
new QMJsonObject(hash1));
41 QVERIFY(object1->toDouble(
"key1") == object2->toDouble(
"key1"));
42 QVERIFY(object1->toDouble(
"key2") == object2->toDouble(
"key2"));
43 QVERIFY(object1->toDouble(
"key3") == object2->toDouble(
"key3"));
46 void TestJson::QMJsonObject_insert(
void)
48 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue());
49 auto array1 = QMPointer<QMJsonArray>(
new QMJsonArray());
50 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
51 auto object2 = QMPointer<QMJsonObject>(
new QMJsonObject());
57 QVERIFY(object1->value(
"key1").isNull() ==
false);
58 QVERIFY(object1->value(
"key1")->isNull() ==
true);
60 object1->insert(
"key1", QMPointer<QMJsonValue>());
61 QVERIFY(object1->value(
"key1").isNull() ==
false);
62 QVERIFY(object1->value(
"key1")->isNull() ==
true);
64 object1->insert(
"key1", value1);
65 QVERIFY(object1->value(
"key1").isNull() ==
false);
66 QVERIFY(object1->value(
"key1")->isNull() ==
true);
68 object1->insert(
"key1", rawValue1);
69 QVERIFY(object1->value(
"key1").isNull() ==
false);
70 QVERIFY(object1->value(
"key1")->isNull() ==
true);
73 QVERIFY(object1->value(
"key1").isNull() ==
false);
74 QVERIFY(object1->value(
"key1")->isArray() ==
true);
76 object1->insert(
"key1", QMPointer<QMJsonArray>());
77 QVERIFY(object1->value(
"key1").isNull() ==
false);
78 QVERIFY(object1->value(
"key1")->isArray() ==
true);
80 object1->insert(
"key1", array1);
81 QVERIFY(object1->value(
"key1").isNull() ==
false);
82 QVERIFY(object1->value(
"key1")->isArray() ==
true);
84 object1->insert(
"key1", rawArray1);
85 QVERIFY(object1->value(
"key1").isNull() ==
false);
86 QVERIFY(object1->value(
"key1")->isArray() ==
true);
89 QVERIFY(object1->value(
"key1").isNull() ==
false);
90 QVERIFY(object1->value(
"key1")->isObject() ==
true);
92 object1->insert(
"key1", QMPointer<QMJsonObject>());
93 QVERIFY(object1->value(
"key1").isNull() ==
false);
94 QVERIFY(object1->value(
"key1")->isObject() ==
true);
96 object1->insert(
"key1", object1);
97 QVERIFY(object1->value(
"key1").isNull() ==
false);
98 QVERIFY(object1->value(
"key1")->isObject() ==
true);
100 object1->insert(
"key1", rawObject1);
101 QVERIFY(object1->value(
"key1").isNull() ==
false);
102 QVERIFY(object1->value(
"key1")->isObject() ==
true);
104 object1->insert(
"key1", QMPointer<QMJsonValue>());
105 QVERIFY(object1->value(
"key1").isNull() ==
false);
106 QVERIFY(object1->value(
"key1")->isNull() ==
true);
108 object1->insert(
"key1", 4.8);
109 QVERIFY(object1->value(
"key1").isNull() ==
false);
110 QVERIFY(object1->value(
"key1")->isDouble() ==
true);
112 object1->insert(
"key1",
"Hello World");
113 QVERIFY(object1->value(
"key1").isNull() ==
false);
114 QVERIFY(object1->value(
"key1")->isString() ==
true);
116 object1->insert(
"key1", QString(
"Hello World"));
117 QVERIFY(object1->value(
"key1").isNull() ==
false);
118 QVERIFY(object1->value(
"key1")->isString() ==
true);
121 QVERIFY(object1->value(
"key1").isNull() ==
false);
122 QVERIFY(object1->value(
"key1")->isDouble() ==
true);
124 object1->insert(
"key1",
new QMJsonValue(
"Hello World"));
125 QVERIFY(object1->value(
"key1").isNull() ==
false);
126 QVERIFY(object1->value(
"key1")->isString() ==
true);
128 object1->insert(
"key1",
new QMJsonValue(QString(
"Hello World")));
129 QVERIFY(object1->value(
"key1").isNull() ==
false);
130 QVERIFY(object1->value(
"key1")->isString() ==
true);
132 object1->insert(
"key1", QMPointer<QMJsonValue>(
new QMJsonValue(4.8)));
133 QVERIFY(object1->value(
"key1").isNull() ==
false);
134 QVERIFY(object1->value(
"key1")->isDouble() ==
true);
136 object1->insert(
"key1", QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World")));
137 QVERIFY(object1->value(
"key1").isNull() ==
false);
138 QVERIFY(object1->value(
"key1")->isString() ==
true);
140 object1->insert(
"key1", QMPointer<QMJsonValue>(
new QMJsonValue(QString(
"Hello World"))));
141 QVERIFY(object1->value(
"key1").isNull() ==
false);
142 QVERIFY(object1->value(
"key1")->isString() ==
true);
145 void TestJson::QMJsonObject_unite(
void)
147 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
148 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
149 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
150 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
151 auto array1 = QMPointer<QMJsonArray>(
new QMJsonArray());
152 auto array2 = QMPointer<QMJsonArray>(
new QMJsonArray());
153 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
154 auto object2 = QMPointer<QMJsonObject>(
new QMJsonObject());
156 array2->append(value2);
157 array2->append(value3);
158 object2->insert(
"key0", value2);
159 object2->insert(
"key2", value3);
160 object2->insert(
"array", array2);
163 array1->append(value0);
164 array1->append(value1);
165 object1->insert(
"key0", value0);
166 object1->insert(
"key1", value1);
167 object1->insert(
"array", array1);
170 QVERIFY(object1->isString(
"key0") ==
true);
171 QVERIFY(object1->isBool(
"key1") ==
true);
172 QVERIFY(object1->isDouble(
"key2") ==
true);
173 QVERIFY(object1->toArray(
"array")->isNull(0) ==
true);
174 QVERIFY(object1->toArray(
"array")->isBool(1) ==
true);
175 QVERIFY(object1->toArray(
"array")->isString(2) ==
true);
176 QVERIFY(object1->toArray(
"array")->isDouble(3) ==
true);
179 array1->append(value0);
180 array1->append(value1);
181 object1->insert(
"key0", value0);
182 object1->insert(
"key1", value1);
183 object1->insert(
"array", array1);
186 QVERIFY(object1->isString(
"key0") ==
true);
187 QVERIFY(object1->isBool(
"key1") ==
true);
188 QVERIFY(object1->isDouble(
"key2") ==
true);
189 QVERIFY(object1->toArray(
"array")->isDouble(0) ==
true);
190 QVERIFY(object1->toArray(
"array")->isString(1) ==
true);
191 QVERIFY(object1->toArray(
"array")->isNull(2) ==
true);
192 QVERIFY(object1->toArray(
"array")->isBool(3) ==
true);
195 array1->append(value0);
196 array1->append(value1);
197 object1->insert(
"key0", value0);
198 object1->insert(
"key1", value1);
199 object1->insert(
"array", array1);
202 QVERIFY(object1->isNull(
"key0") ==
true);
203 QVERIFY(object1->isBool(
"key1") ==
true);
204 QVERIFY(object1->isDouble(
"key2") ==
true);
205 QVERIFY(object1->toArray(
"array")->isNull(0) ==
true);
206 QVERIFY(object1->toArray(
"array")->isBool(1) ==
true);
207 QVERIFY(object1->toArray(
"array")->isString(2) ==
true);
208 QVERIFY(object1->toArray(
"array")->isDouble(3) ==
true);
211 array1->append(value0);
212 array1->append(value1);
213 object1->insert(
"key0", value0);
214 object1->insert(
"key1", value1);
215 object1->insert(
"array", array1);
218 QVERIFY(object1->isNull(
"key0") ==
true);
219 QVERIFY(object1->isBool(
"key1") ==
true);
220 QVERIFY(object1->isDouble(
"key2") ==
true);
221 QVERIFY(object1->toArray(
"array")->isDouble(0) ==
true);
222 QVERIFY(object1->toArray(
"array")->isString(1) ==
true);
223 QVERIFY(object1->toArray(
"array")->isNull(2) ==
true);
224 QVERIFY(object1->toArray(
"array")->isBool(3) ==
true);
227 void TestJson::QMJsonObject_iter(
void)
229 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
230 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
231 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
232 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
233 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
235 object1->insert(
"key0", value0);
236 object1->insert(
"key1", value1);
237 object1->insert(
"key2", value2);
238 object1->insert(
"key3", value3);
240 auto iter0 = object1->find(
"key0");
241 QVERIFY(iter0.value() == value0);
243 auto iter1 = object1->find(
"key1");
244 QVERIFY(iter1.value() == value1);
246 auto iter2 = object1->find(
"key2");
247 QVERIFY(iter2.value() == value2);
249 auto iter3 = object1->find(
"key3");
250 QVERIFY(iter3.value() == value3);
252 auto iter4 = object1->find(
"blah");
253 QVERIFY(iter4 == object1->end());
255 auto iter5 = object1->begin();
256 QVERIFY(iter5 != object1->end());
258 const auto const_iter0 = object1->cfind(
"key0");
259 QVERIFY(const_iter0.value() == value0);
261 const auto const_iter1 = object1->cfind(
"key1");
262 QVERIFY(const_iter1.value() == value1);
264 const auto const_iter2 = object1->cfind(
"key2");
265 QVERIFY(const_iter2.value() == value2);
267 const auto const_iter3 = object1->cfind(
"key3");
268 QVERIFY(const_iter3.value() == value3);
270 const auto const_iter4 = object1->cfind(
"blah");
271 QVERIFY(const_iter4 == object1->cend());
273 const auto const_iter5 = object1->cbegin();
274 QVERIFY(const_iter5 != object1->cend());
276 auto iter = object1->begin();
277 while(iter != object1->end())
278 iter = object1->erase(iter);
280 QVERIFY(object1->count() == 0);
283 void TestJson::QMJsonObject_count(
void)
285 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
286 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
287 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
288 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
289 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
291 QVERIFY(object1->count() == 0);
292 QVERIFY(object1->size() == 0);
294 object1->insert(
"key0", value0);
295 QVERIFY(object1->count() == 1);
296 QVERIFY(object1->size() == 1);
298 object1->insert(
"key1", value1);
299 QVERIFY(object1->count() == 2);
300 QVERIFY(object1->size() == 2);
302 object1->insert(
"key2", value2);
303 QVERIFY(object1->count() == 3);
304 QVERIFY(object1->size() == 3);
306 object1->insert(
"key3", value3);
307 QVERIFY(object1->count() == 4);
308 QVERIFY(object1->size() == 4);
311 QVERIFY(object1->count() == 0);
312 QVERIFY(object1->size() == 0);
315 void TestJson::QMJsonObject_clear(
void)
317 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
318 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
319 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
320 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
321 auto array1 = QMPointer<QMJsonArray>(
new QMJsonArray());
322 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
323 auto object2 = QMPointer<QMJsonObject>(
new QMJsonObject());
324 auto document1 = QMPointer<QMJsonValue>(
new QMJsonValue(array1));
325 auto document2 = QMPointer<QMJsonValue>(
new QMJsonValue(object1));
326 auto document3 = QMPointer<QMJsonValue>(
new QMJsonValue(object2));
328 array1->append(value0);
329 array1->append(value1);
330 object1->insert(
"key2", value2);
331 object1->insert(
"key3", value3);
332 object2->insert(
"array", array1);
333 object2->insert(
"object", object1);
337 QVERIFY(document1->toJson() ==
"[]");
338 QVERIFY(document2->toJson() ==
"{}");
339 QVERIFY(document3->toJson() ==
"{}");
342 void TestJson::QMJsonObject_empty(
void)
344 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
345 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
346 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
347 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
348 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
350 QVERIFY(object1->isEmpty() ==
true);
351 QVERIFY(object1->empty() ==
true);
353 object1->insert(
"key0", value0);
354 object1->insert(
"key1", value1);
355 object1->insert(
"key2", value2);
356 object1->insert(
"key3", value3);
358 QVERIFY(object1->isEmpty() ==
false);
359 QVERIFY(object1->empty() ==
false);
363 QVERIFY(object1->isEmpty() ==
true);
364 QVERIFY(object1->empty() ==
true);
367 void TestJson::QMJsonObject_contains(
void)
369 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
370 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
371 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
372 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
373 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
375 QVERIFY(object1->contains(
"") ==
false);
376 QVERIFY(object1->contains(QString()) ==
false);
377 QVERIFY(object1->contains(
"key0") ==
false);
378 QVERIFY(object1->contains(
"key1") ==
false);
379 QVERIFY(object1->contains(
"key2") ==
false);
380 QVERIFY(object1->contains(
"key3") ==
false);
381 QVERIFY(object1->contains(
"key4") ==
false);
383 object1->insert(
"key0", value0);
384 object1->insert(
"key1", value1);
385 object1->insert(
"key2", value2);
386 object1->insert(
"key3", value3);
388 QVERIFY(object1->contains(
"key0") ==
true);
389 QVERIFY(object1->contains(
"key1") ==
true);
390 QVERIFY(object1->contains(
"key2") ==
true);
391 QVERIFY(object1->contains(
"key3") ==
true);
392 QVERIFY(object1->contains(
"key4") ==
false);
396 QVERIFY(object1->contains(
"key0") ==
false);
397 QVERIFY(object1->contains(
"key1") ==
false);
398 QVERIFY(object1->contains(
"key2") ==
false);
399 QVERIFY(object1->contains(
"key3") ==
false);
400 QVERIFY(object1->contains(
"key4") ==
false);
403 void TestJson::QMJsonObject_remove(
void)
405 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
406 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
407 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
408 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
409 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
412 object1->remove(QString());
413 object1->remove(
"key0");
414 QVERIFY(object1->count() == 0);
415 QVERIFY(object1->take(
"key0").isNull() ==
false);
416 QVERIFY(object1->take(
"key0", value0).isNull() ==
false);
417 QVERIFY(object1->take(
"key0", 4.8).isNull() ==
false);
418 QVERIFY(object1->count() == 0);
420 auto array = object1->take(
"array", QMPointer<QMJsonArray>());
421 QVERIFY(array.isNull() ==
false);
422 QVERIFY(array->toArray().isNull() ==
false);
424 auto object = object1->take(
"object", QMPointer<QMJsonObject>());
425 QVERIFY(
object.isNull() ==
false);
426 QVERIFY(object->toArray().isNull() ==
false);
428 object1->insert(
"key0", value0);
429 object1->insert(
"key1", value1);
430 object1->insert(
"key2", value2);
431 object1->insert(
"key3", value3);
433 object1->remove(
"key0");
434 QVERIFY(object1->count() == 3);
435 QVERIFY(object1->take(
"key1") == value1);
436 QVERIFY(object1->take(
"key2", value0) == value2);
437 QVERIFY(object1->take(
"key3", 4.8) == value3);
438 QVERIFY(object1->count() == 0);
441 void TestJson::QMJsonObject_key(
void)
443 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
444 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
445 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
446 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
447 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
449 QVERIFY(object1->key(QMPointer<QMJsonValue>()) == QString());
450 QVERIFY(object1->key(value0) == QString());
451 QVERIFY(object1->key(value0,
"test") ==
"test");
453 object1->insert(
"key0", value0);
454 object1->insert(
"key1", value1);
455 object1->insert(
"key2", value2);
456 object1->insert(
"key3", value3);
458 QVERIFY(object1->key(value0) ==
"key0");
459 QVERIFY(object1->key(value0,
"test") ==
"key0");
461 QVERIFY(object1->key(value1) ==
"key1");
462 QVERIFY(object1->key(value1,
"test") ==
"key1");
464 QVERIFY(object1->key(value2) ==
"key2");
465 QVERIFY(object1->key(value2,
"test") ==
"key2");
467 QVERIFY(object1->key(value3) ==
"key3");
468 QVERIFY(object1->key(value3,
"test") ==
"key3");
471 void TestJson::QMJsonObject_value(
void)
473 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
474 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
475 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
476 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
477 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
479 QVERIFY(object1->value(
"").isNull() ==
false);
480 QVERIFY(object1->value(QString()).isNull() ==
false);
481 QVERIFY(object1->value(
"key0").isNull() ==
false);
482 QVERIFY(object1->value(
"key0", QMPointer<QMJsonValue>()).isNull() ==
true);
483 QVERIFY(object1->value(
"key0", value2) == value2);
484 QVERIFY(object1->value(
"key0", 4.8).isNull() ==
false);
486 auto array = object1->value(
"array", QMPointer<QMJsonArray>());
487 QVERIFY(array.isNull() ==
false);
488 QVERIFY(array->toArray().isNull() ==
false);
490 auto object = object1->value(
"object", QMPointer<QMJsonObject>());
491 QVERIFY(
object.isNull() ==
false);
492 QVERIFY(object->toArray().isNull() ==
false);
494 object1->insert(
"key0", value0);
495 object1->insert(
"key1", value1);
496 object1->insert(
"key2", value2);
497 object1->insert(
"key3", value3);
499 QVERIFY(object1->value(
"key0") == value0);
500 QVERIFY(object1->value(
"key0", QMPointer<QMJsonValue>()) == value0);
501 QVERIFY(object1->value(
"key0", value2) == value0);
502 QVERIFY(object1->value(
"key0", 4.8) == value0);
504 QVERIFY(object1->value(
"key1") == value1);
505 QVERIFY(object1->value(
"key1", QMPointer<QMJsonValue>()) == value1);
506 QVERIFY(object1->value(
"key1", value2) == value1);
507 QVERIFY(object1->value(
"key1", 4.8) == value1);
509 QVERIFY(object1->value(
"key2") == value2);
510 QVERIFY(object1->value(
"key2", QMPointer<QMJsonValue>()) == value2);
511 QVERIFY(object1->value(
"key2", value0) == value2);
512 QVERIFY(object1->value(
"key2", 4.8) == value2);
514 QVERIFY(object1->value(
"key3") == value3);
515 QVERIFY(object1->value(
"key3", QMPointer<QMJsonValue>()) == value3);
516 QVERIFY(object1->value(
"key3", value2) == value3);
517 QVERIFY(object1->value(
"key3", 4.8) == value3);
520 void TestJson::QMJsonObject_keys(
void)
522 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
523 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
524 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
525 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
526 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
528 QVERIFY(object1->keys() == QList<QString>());
529 QVERIFY(object1->keys().count() == 0);
531 object1->insert(
"key0", value0);
532 object1->insert(
"key1", value1);
533 object1->insert(
"key2", value2);
534 object1->insert(
"key3", value3);
536 QStringList keys = object1->keys();
539 QVERIFY(keys == QStringList() <<
"key0" <<
"key1" <<
"key2" <<
"key3");
540 QVERIFY(keys.count() == 4);
543 void TestJson::QMJsonObject_values(
void)
545 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
546 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
547 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
548 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
549 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
551 QVERIFY(object1->values() == QList<QMPointer<QMJsonValue> >());
552 QVERIFY(object1->values().count() == 0);
554 object1->insert(
"key0", value0);
555 object1->insert(
"key1", value1);
556 object1->insert(
"key2", value2);
557 object1->insert(
"key3", value3);
559 auto values = object1->values();
560 QVERIFY(values.contains(value0) ==
true);
561 QVERIFY(values.contains(value1) ==
true);
562 QVERIFY(values.contains(value2) ==
true);
563 QVERIFY(values.contains(value3) ==
true);
564 QVERIFY(values.count() == 4);
567 void TestJson::QMJsonObject_hash(
void)
569 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
570 auto value1 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
571 auto value2 = QMPointer<QMJsonValue>(
new QMJsonValue(
"Hello World"));
572 auto value3 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
573 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
575 auto emptyHash = QHash<QString, QMPointer<QMJsonValue> >();
577 QVERIFY(object1->hash() == emptyHash);
578 QVERIFY(object1->hash().count() == 0);
580 object1->insert(
"key0", value0);
581 object1->insert(
"key1", value1);
582 object1->insert(
"key2", value2);
583 object1->insert(
"key3", value3);
585 auto hash = object1->hash();
586 QVERIFY(hash.contains(
"key0") ==
true);
587 QVERIFY(hash.contains(
"key1") ==
true);
588 QVERIFY(hash.contains(
"key2") ==
true);
589 QVERIFY(hash.contains(
"key3") ==
true);
590 QVERIFY(hash.count() == 4);
593 void TestJson::QMJsonObject_null(
void)
595 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue());
596 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
598 object1->insert(
"key0", value0);
600 QVERIFY(object1->isNull(
"key0") ==
true);
601 QVERIFY(object1->isBool(
"key0") ==
false);
602 QVERIFY(object1->isDouble(
"key0") ==
false);
603 QVERIFY(object1->isString(
"key0") ==
false);
604 QVERIFY(object1->isArray(
"key0") ==
false);
605 QVERIFY(object1->isObject(
"key0") ==
false);
606 QVERIFY(object1->is<QRect>(
"key0") ==
false);
608 QVERIFY(object1->toBool(
"key0") ==
false);
609 QVERIFY(object1->toDouble(
"key0") == 0);
610 QVERIFY(object1->toString(
"key0") ==
"null");
611 QVERIFY(object1->toArray(
"key0").isNull() ==
false);
612 QVERIFY(object1->toObject(
"key0").isNull() ==
false);
614 QVERIFY(object1->toBool(
"key0",
true) ==
true);
615 QVERIFY(object1->toDouble(
"key0", 4.8) == 4.8);
616 QVERIFY(object1->toString(
"key0",
"15.16") ==
"15.16");
617 QVERIFY(object1->toArray(
"key0", QMPointer<QMJsonArray>()).isNull() ==
true);
618 QVERIFY(object1->toObject(
"key0", QMPointer<QMJsonObject>()).isNull() ==
true);
619 QVERIFY(object1->to<QRect>(
"key0", QRect()) == QRect());
620 QVERIFY(object1->from(
"key0", value0) ==
true);
621 QVERIFY(object1->from<QSize>(
"key0", QSize(15, 16)) ==
false);
624 void TestJson::QMJsonObject_bool(
void)
626 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue(
true));
627 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
629 object1->insert(
"key0", value0);
631 QVERIFY(object1->isNull(
"key0") ==
false);
632 QVERIFY(object1->isBool(
"key0") ==
true);
633 QVERIFY(object1->isDouble(
"key0") ==
false);
634 QVERIFY(object1->isString(
"key0") ==
false);
635 QVERIFY(object1->isArray(
"key0") ==
false);
636 QVERIFY(object1->isObject(
"key0") ==
false);
637 QVERIFY(object1->is<QRect>(
"key0") ==
false);
639 QVERIFY(object1->toBool(
"key0") ==
true);
640 QVERIFY(object1->toDouble(
"key0") == 1);
641 QVERIFY(object1->toString(
"key0") ==
"true");
642 QVERIFY(object1->toArray(
"key0").isNull() ==
false);
643 QVERIFY(object1->toObject(
"key0").isNull() ==
false);
645 QVERIFY(object1->toBool(
"key0",
false) ==
true);
646 QVERIFY(object1->toDouble(
"key0", 4.8) == 4.8);
647 QVERIFY(object1->toString(
"key0",
"15.16") ==
"15.16");
648 QVERIFY(object1->toArray(
"key0", QMPointer<QMJsonArray>()).isNull() ==
true);
649 QVERIFY(object1->toObject(
"key0", QMPointer<QMJsonObject>()).isNull() ==
true);
650 QVERIFY(object1->to<QRect>(
"key0", QRect()) == QRect());
652 QVERIFY(object1->from(
"key0", value0) ==
true);
653 QVERIFY(object1->fromBool(
"key0",
false) ==
true);
654 QVERIFY(object1->fromDouble(
"key0", 4.8) ==
true);
655 QVERIFY(object1->fromString(
"key0",
"false") ==
true);
656 QVERIFY(object1->fromArray(
"key0", QMPointer<QMJsonArray>()) ==
false);
657 QVERIFY(object1->fromObject(
"key0", QMPointer<QMJsonObject>()) ==
false);
658 QVERIFY(object1->from<QSize>(
"key0", QSize(15, 16)) ==
false);
661 void TestJson::QMJsonObject_double(
void)
663 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue(4.8));
664 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
666 object1->insert(
"key0", value0);
668 QVERIFY(object1->isNull(
"key0") ==
false);
669 QVERIFY(object1->isBool(
"key0") ==
false);
670 QVERIFY(object1->isDouble(
"key0") ==
true);
671 QVERIFY(object1->isString(
"key0") ==
false);
672 QVERIFY(object1->isArray(
"key0") ==
false);
673 QVERIFY(object1->isObject(
"key0") ==
false);
674 QVERIFY(object1->is<QRect>(
"key0") ==
false);
676 QVERIFY(object1->toBool(
"key0") ==
true);
677 QVERIFY(object1->toDouble(
"key0") == 4.8);
678 QVERIFY(object1->toString(
"key0") ==
"4.8");
679 QVERIFY(object1->toArray(
"key0").isNull() ==
false);
680 QVERIFY(object1->toObject(
"key0").isNull() ==
false);
682 QVERIFY(object1->toBool(
"key0",
false) ==
false);
683 QVERIFY(object1->toDouble(
"key0", 15.16) == 4.8);
684 QVERIFY(object1->toString(
"key0",
"15.16") ==
"15.16");
685 QVERIFY(object1->toArray(
"key0", QMPointer<QMJsonArray>()).isNull() ==
true);
686 QVERIFY(object1->toObject(
"key0", QMPointer<QMJsonObject>()).isNull() ==
true);
687 QVERIFY(object1->to<QRect>(
"key0", QRect()) == QRect());
689 QVERIFY(object1->from(
"key0", value0) ==
true);
690 QVERIFY(object1->fromBool(
"key0",
false) ==
true);
691 QVERIFY(object1->fromDouble(
"key0", 15.16) ==
true);
692 QVERIFY(object1->fromString(
"key0",
"false") ==
false);
693 QVERIFY(object1->fromArray(
"key0", QMPointer<QMJsonArray>()) ==
false);
694 QVERIFY(object1->fromObject(
"key0", QMPointer<QMJsonObject>()) ==
false);
695 QVERIFY(object1->from<QSize>(
"key0", QSize(15, 16)) ==
false);
698 void TestJson::QMJsonObject_string(
void)
700 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue(
"test"));
701 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
703 object1->insert(
"key0", value0);
705 QVERIFY(object1->isNull(
"key0") ==
false);
706 QVERIFY(object1->isBool(
"key0") ==
false);
707 QVERIFY(object1->isDouble(
"key0") ==
false);
708 QVERIFY(object1->isString(
"key0") ==
true);
709 QVERIFY(object1->isArray(
"key0") ==
false);
710 QVERIFY(object1->isObject(
"key0") ==
false);
711 QVERIFY(object1->is<QRect>(
"key0") ==
false);
713 QVERIFY(object1->toBool(
"key0") ==
false);
714 QVERIFY(object1->toDouble(
"key0") == 0);
715 QVERIFY(object1->toString(
"key0") ==
"test");
716 QVERIFY(object1->toArray(
"key0").isNull() ==
false);
717 QVERIFY(object1->toObject(
"key0").isNull() ==
false);
719 QVERIFY(object1->toBool(
"key0",
true) ==
true);
720 QVERIFY(object1->toDouble(
"key0", 15.16) == 15.16);
721 QVERIFY(object1->toString(
"key0",
"15.16") ==
"test");
722 QVERIFY(object1->toArray(
"key0", QMPointer<QMJsonArray>()).isNull() ==
true);
723 QVERIFY(object1->toObject(
"key0", QMPointer<QMJsonObject>()).isNull() ==
true);
724 QVERIFY(object1->to<QRect>(
"key0", QRect()) == QRect());
726 QVERIFY(object1->from(
"key0", value0) ==
true);
727 QVERIFY(object1->fromBool(
"key0",
false) ==
true);
728 QVERIFY(object1->fromDouble(
"key0", 15.16) ==
true);
729 QVERIFY(object1->fromString(
"key0",
"15.16") ==
true);
730 QVERIFY(object1->fromArray(
"key0", QMPointer<QMJsonArray>()) ==
false);
731 QVERIFY(object1->fromObject(
"key0", QMPointer<QMJsonObject>()) ==
false);
732 QVERIFY(object1->from<QSize>(
"key0", QSize(15, 16)) ==
false);
735 void TestJson::QMJsonObject_array(
void)
738 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
740 object1->insert(
"key0", value0);
742 QVERIFY(object1->isNull(
"key0") ==
false);
743 QVERIFY(object1->isBool(
"key0") ==
false);
744 QVERIFY(object1->isDouble(
"key0") ==
false);
745 QVERIFY(object1->isString(
"key0") ==
false);
746 QVERIFY(object1->isArray(
"key0") ==
true);
747 QVERIFY(object1->isObject(
"key0") ==
false);
748 QVERIFY(object1->is<QRect>(
"key0") ==
false);
750 QVERIFY(object1->toBool(
"key0") ==
false);
751 QVERIFY(object1->toDouble(
"key0") == 0);
752 QVERIFY(object1->toString(
"key0") == QString());
753 QVERIFY(object1->toArray(
"key0").isNull() ==
false);
754 QVERIFY(object1->toObject(
"key0").isNull() ==
false);
756 QVERIFY(object1->toBool(
"key0",
true) ==
true);
757 QVERIFY(object1->toDouble(
"key0", 15.16) == 15.16);
758 QVERIFY(object1->toString(
"key0",
"15.16") ==
"15.16");
759 QVERIFY(object1->toArray(
"key0", QMPointer<QMJsonArray>()).isNull() ==
false);
760 QVERIFY(object1->toObject(
"key0", QMPointer<QMJsonObject>()).isNull() ==
true);
761 QVERIFY(object1->to<QRect>(
"key0", QRect()) == QRect());
763 QVERIFY(object1->from(
"key0", value0) ==
true);
764 QVERIFY(object1->fromBool(
"key0",
false) ==
false);
765 QVERIFY(object1->fromDouble(
"key0", 15.16) ==
false);
766 QVERIFY(object1->fromString(
"key0",
"15.16") ==
false);
767 QVERIFY(object1->fromArray(
"key0", QMPointer<QMJsonArray>()) ==
true);
768 QVERIFY(object1->fromObject(
"key0", QMPointer<QMJsonObject>()) ==
false);
769 QVERIFY(object1->from<QSize>(
"key0", QSize(15, 16)) ==
false);
772 void TestJson::QMJsonObject_object(
void)
775 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
777 object1->insert(
"key0", value0);
779 QVERIFY(object1->isNull(
"key0") ==
false);
780 QVERIFY(object1->isBool(
"key0") ==
false);
781 QVERIFY(object1->isDouble(
"key0") ==
false);
782 QVERIFY(object1->isString(
"key0") ==
false);
783 QVERIFY(object1->isArray(
"key0") ==
false);
784 QVERIFY(object1->isObject(
"key0") ==
true);
785 QVERIFY(object1->is<QRect>(
"key0") ==
false);
787 QVERIFY(object1->toBool(
"key0") ==
false);
788 QVERIFY(object1->toDouble(
"key0") == 0);
789 QVERIFY(object1->toString(
"key0") == QString());
790 QVERIFY(object1->toArray(
"key0").isNull() ==
false);
791 QVERIFY(object1->toObject(
"key0").isNull() ==
false);
793 QVERIFY(object1->toBool(
"key0",
true) ==
true);
794 QVERIFY(object1->toDouble(
"key0", 15.16) == 15.16);
795 QVERIFY(object1->toString(
"key0",
"15.16") ==
"15.16");
796 QVERIFY(object1->toArray(
"key0", QMPointer<QMJsonArray>()).isNull() ==
true);
797 QVERIFY(object1->toObject(
"key0", QMPointer<QMJsonObject>()).isNull() ==
false);
798 QVERIFY(object1->to<QRect>(
"key0", QRect()) == QRect());
800 QVERIFY(object1->from(
"key0", value0) ==
true);
801 QVERIFY(object1->fromBool(
"key0",
false) ==
false);
802 QVERIFY(object1->fromDouble(
"key0", 15.16) ==
false);
803 QVERIFY(object1->fromString(
"key0",
"15.16") ==
false);
804 QVERIFY(object1->fromArray(
"key0", QMPointer<QMJsonArray>()) ==
false);
805 QVERIFY(object1->fromObject(
"key0", QMPointer<QMJsonObject>()) ==
true);
806 QVERIFY(object1->from<QSize>(
"key0", QSize(15, 16)) ==
false);
809 void TestJson::QMJsonObject_custom(
void)
811 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue(QSize(4, 8)));
812 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
814 object1->insert(
"key0", value0);
816 QVERIFY(object1->isNull(
"key0") ==
false);
817 QVERIFY(object1->isBool(
"key0") ==
false);
818 QVERIFY(object1->isDouble(
"key0") ==
false);
819 QVERIFY(object1->isString(
"key0") ==
false);
820 QVERIFY(object1->isArray(
"key0") ==
false);
821 QVERIFY(object1->isObject(
"key0") ==
false);
822 QVERIFY(object1->is<QSize>(
"key0") ==
true);
824 QVERIFY(object1->toBool(
"key0") ==
false);
825 QVERIFY(object1->toDouble(
"key0") == 0);
826 QVERIFY(object1->toString(
"key0") == QString());
827 QVERIFY(object1->toArray(
"key0").isNull() ==
false);
828 QVERIFY(object1->toObject(
"key0").isNull() ==
false);
830 QVERIFY(object1->toBool(
"key0",
true) ==
true);
831 QVERIFY(object1->toDouble(
"key0", 15.16) == 15.16);
832 QVERIFY(object1->toString(
"key0",
"15.16") ==
"15.16");
833 QVERIFY(object1->toArray(
"key0", QMPointer<QMJsonArray>()).isNull() ==
true);
834 QVERIFY(object1->toObject(
"key0", QMPointer<QMJsonObject>()).isNull() ==
true);
835 QVERIFY(object1->to<QSize>(
"key0", QSize()) == QSize(4, 8));
837 QVERIFY(object1->from(
"key0", value0) ==
false);
838 QVERIFY(object1->fromBool(
"key0",
false) ==
false);
839 QVERIFY(object1->fromDouble(
"key0", 15.16) ==
false);
840 QVERIFY(object1->fromString(
"key0",
"15.16") ==
false);
841 QVERIFY(object1->fromArray(
"key0", QMPointer<QMJsonArray>()) ==
false);
842 QVERIFY(object1->fromObject(
"key0", QMPointer<QMJsonObject>()) ==
false);
843 QVERIFY(object1->from<QSize>(
"key0", QSize(15, 16)) ==
true);
846 void TestJson::QMJsonObject_signals(
void)
848 auto value0 = QMPointer<QMJsonValue>(
new QMJsonValue(
"15.16"));
849 auto object1 = QMPointer<QMJsonObject>(
new QMJsonObject());
850 auto object2 = QMPointer<QMJsonObject>(
new QMJsonObject());
859 QVERIFY(mCount == 0);
862 object1->remove(
"key0");
863 QVERIFY(mCount == 0);
866 object1->take(
"key1");
867 object1->take(
"key2", value0);
868 object1->take(
"key3", 15.16);
869 QVERIFY(mCount == 0);
872 object1->erase(object1->find(
"key4"));
873 QVERIFY(mCount == 0);
876 object1->insert(
"key0", value0);
877 object1->insert(
"key1", value0);
878 object1->insert(
"key2", value0);
879 QVERIFY(mCount == 3);
882 object2->insert(
"key2", value0);
883 object2->insert(
"key3", value0);
884 object2->insert(
"key4", value0);
885 object2->insert(
"key5", value0);
886 QVERIFY(mCount == 4);
889 object1->unite(object2);
890 QVERIFY(mCount == 5);
893 object1->remove(
"key0");
894 QVERIFY(mCount == 1);
897 object1->take(
"key1");
898 object1->take(
"key2", value0);
899 object1->take(
"key3", 15.16);
900 QVERIFY(mCount == 3);
903 object1->erase(object1->find(
"key4"));
904 QVERIFY(mCount == 1);
908 QVERIFY(mCount == 1);
void itemRemoved(const QString &key, const QMPointer< QMJsonValue > &value)
void itemAdded(const QString &key, const QMPointer< QMJsonValue > &value)