20 #include <ripple/json/json_reader.h>
21 #include <ripple/json/json_value.h>
22 #include <ripple/json/json_writer.h>
23 #include <ripple/beast/core/LexicalCast.h>
24 #include <ripple/beast/type_name.h>
25 #include <ripple/beast/unit_test.h>
36 static constexpr
char sample[] {
"Contents of a Json::StaticString"};
39 char const* addrTest1 {test1};
41 BEAST_EXPECT (addrTest1 == &sample[0]);
42 BEAST_EXPECT (test1.c_str() == &sample[0]);
45 "Contents of a Json::StaticString"};
48 BEAST_EXPECT (test1 == test2);
49 BEAST_EXPECT (test1 != test3);
52 BEAST_EXPECT (str == test2);
53 BEAST_EXPECT (str != test3);
54 BEAST_EXPECT (test2 == str);
55 BEAST_EXPECT (test3 != str);
67 BEAST_EXPECT (val.type() == typ);
68 BEAST_EXPECT (cpy.type() == typ);
73 BEAST_EXPECT ( nullV.isNull());
74 BEAST_EXPECT (! nullV.isBool());
75 BEAST_EXPECT (! nullV.isInt());
76 BEAST_EXPECT (! nullV.isUInt());
77 BEAST_EXPECT (! nullV.isIntegral());
78 BEAST_EXPECT (! nullV.isDouble());
79 BEAST_EXPECT (! nullV.isNumeric());
80 BEAST_EXPECT (! nullV.isString());
81 BEAST_EXPECT (! nullV.isArray());
82 BEAST_EXPECT ( nullV.isArrayOrNull());
83 BEAST_EXPECT (! nullV.isObject());
84 BEAST_EXPECT ( nullV.isObjectOrNull());
88 BEAST_EXPECT (! intV.isNull());
89 BEAST_EXPECT (! intV.isBool());
90 BEAST_EXPECT ( intV.isInt());
91 BEAST_EXPECT (! intV.isUInt());
92 BEAST_EXPECT ( intV.isIntegral());
93 BEAST_EXPECT (! intV.isDouble());
94 BEAST_EXPECT ( intV.isNumeric());
95 BEAST_EXPECT (! intV.isString());
96 BEAST_EXPECT (! intV.isArray());
97 BEAST_EXPECT (! intV.isArrayOrNull());
98 BEAST_EXPECT (! intV.isObject());
99 BEAST_EXPECT (! intV.isObjectOrNull());
103 BEAST_EXPECT (! uintV.isNull());
104 BEAST_EXPECT (! uintV.isBool());
105 BEAST_EXPECT (! uintV.isInt());
106 BEAST_EXPECT ( uintV.isUInt());
107 BEAST_EXPECT ( uintV.isIntegral());
108 BEAST_EXPECT (! uintV.isDouble());
109 BEAST_EXPECT ( uintV.isNumeric());
110 BEAST_EXPECT (! uintV.isString());
111 BEAST_EXPECT (! uintV.isArray());
112 BEAST_EXPECT (! uintV.isArrayOrNull());
113 BEAST_EXPECT (! uintV.isObject());
114 BEAST_EXPECT (! uintV.isObjectOrNull());
118 BEAST_EXPECT (! realV.isNull());
119 BEAST_EXPECT (! realV.isBool());
120 BEAST_EXPECT (! realV.isInt());
121 BEAST_EXPECT (! realV.isUInt());
122 BEAST_EXPECT (! realV.isIntegral());
123 BEAST_EXPECT ( realV.isDouble());
124 BEAST_EXPECT ( realV.isNumeric());
125 BEAST_EXPECT (! realV.isString());
126 BEAST_EXPECT (! realV.isArray());
127 BEAST_EXPECT (! realV.isArrayOrNull());
128 BEAST_EXPECT (! realV.isObject());
129 BEAST_EXPECT (! realV.isObjectOrNull());
133 BEAST_EXPECT (! stringV.isNull());
134 BEAST_EXPECT (! stringV.isBool());
135 BEAST_EXPECT (! stringV.isInt());
136 BEAST_EXPECT (! stringV.isUInt());
137 BEAST_EXPECT (! stringV.isIntegral());
138 BEAST_EXPECT (! stringV.isDouble());
139 BEAST_EXPECT (! stringV.isNumeric());
140 BEAST_EXPECT ( stringV.isString());
141 BEAST_EXPECT (! stringV.isArray());
142 BEAST_EXPECT (! stringV.isArrayOrNull());
143 BEAST_EXPECT (! stringV.isObject());
144 BEAST_EXPECT (! stringV.isObjectOrNull());
153 BEAST_EXPECT (! staticStrV.isNull());
154 BEAST_EXPECT (! staticStrV.isBool());
155 BEAST_EXPECT (! staticStrV.isInt());
156 BEAST_EXPECT (! staticStrV.isUInt());
157 BEAST_EXPECT (! staticStrV.isIntegral());
158 BEAST_EXPECT (! staticStrV.isDouble());
159 BEAST_EXPECT (! staticStrV.isNumeric());
160 BEAST_EXPECT ( staticStrV.isString());
161 BEAST_EXPECT (! staticStrV.isArray());
162 BEAST_EXPECT (! staticStrV.isArrayOrNull());
163 BEAST_EXPECT (! staticStrV.isObject());
164 BEAST_EXPECT (! staticStrV.isObjectOrNull());
168 BEAST_EXPECT (! boolV.isNull());
169 BEAST_EXPECT ( boolV.isBool());
170 BEAST_EXPECT (! boolV.isInt());
171 BEAST_EXPECT (! boolV.isUInt());
172 BEAST_EXPECT ( boolV.isIntegral());
173 BEAST_EXPECT (! boolV.isDouble());
174 BEAST_EXPECT ( boolV.isNumeric());
175 BEAST_EXPECT (! boolV.isString());
176 BEAST_EXPECT (! boolV.isArray());
177 BEAST_EXPECT (! boolV.isArrayOrNull());
178 BEAST_EXPECT (! boolV.isObject());
179 BEAST_EXPECT (! boolV.isObjectOrNull());
183 BEAST_EXPECT (! arrayV.isNull());
184 BEAST_EXPECT (! arrayV.isBool());
185 BEAST_EXPECT (! arrayV.isInt());
186 BEAST_EXPECT (! arrayV.isUInt());
187 BEAST_EXPECT (! arrayV.isIntegral());
188 BEAST_EXPECT (! arrayV.isDouble());
189 BEAST_EXPECT (! arrayV.isNumeric());
190 BEAST_EXPECT (! arrayV.isString());
191 BEAST_EXPECT ( arrayV.isArray());
192 BEAST_EXPECT ( arrayV.isArrayOrNull());
193 BEAST_EXPECT (! arrayV.isObject());
194 BEAST_EXPECT (! arrayV.isObjectOrNull());
198 BEAST_EXPECT (! objectV.isNull());
199 BEAST_EXPECT (! objectV.isBool());
200 BEAST_EXPECT (! objectV.isInt());
201 BEAST_EXPECT (! objectV.isUInt());
202 BEAST_EXPECT (! objectV.isIntegral());
203 BEAST_EXPECT (! objectV.isDouble());
204 BEAST_EXPECT (! objectV.isNumeric());
205 BEAST_EXPECT (! objectV.isString());
206 BEAST_EXPECT (! objectV.isArray());
207 BEAST_EXPECT (! objectV.isArrayOrNull());
208 BEAST_EXPECT ( objectV.isObject());
209 BEAST_EXPECT ( objectV.isObjectOrNull());
215 auto doCompare = [
this] (
222 auto fmt = [
this] (
bool cond,
char const* text,
int line)
227 this->fail (text, __FILE__, line);
229 fmt ((lhs == rhs) == lhsEqRhs,
"Value ==", line);
230 fmt ((lhs != rhs) != lhsEqRhs,
"Value !=", line);
231 fmt ((lhs < rhs) == (! (lhsEqRhs | !lhsLtRhs)),
"Value <", line);
232 fmt ((lhs <= rhs) == ( lhsEqRhs | lhsLtRhs ),
"Value <=", line);
233 fmt ((lhs >= rhs) == ( lhsEqRhs | !lhsLtRhs ),
"Value >=", line);
234 fmt ((lhs > rhs) == (! (lhsEqRhs | lhsLtRhs)),
"Value >", line);
269 doCompare (null0,
Json::Value{},
true,
false, __LINE__);
270 doCompare (null0, intNeg1,
false,
true, __LINE__);
271 doCompare (null0, int0,
false,
true, __LINE__);
272 doCompare (null0, intPos1,
false,
true, __LINE__);
273 doCompare (null0, uint0,
false,
true, __LINE__);
274 doCompare (null0, uint1,
false,
true, __LINE__);
275 doCompare (null0, realNeg1,
false,
true, __LINE__);
276 doCompare (null0, real0,
false,
true, __LINE__);
277 doCompare (null0, realPos1,
false,
true, __LINE__);
278 doCompare (null0, str0,
false,
true, __LINE__);
279 doCompare (null0, str1,
false,
true, __LINE__);
280 doCompare (null0, boolF,
false,
true, __LINE__);
281 doCompare (null0, boolT,
false,
true, __LINE__);
282 doCompare (null0, array0,
false,
true, __LINE__);
283 doCompare (null0, array1,
false,
true, __LINE__);
284 doCompare (null0, obj0,
false,
true, __LINE__);
285 doCompare (null0, obj1,
false,
true, __LINE__);
287 doCompare (intNeg1, null0,
false,
false, __LINE__);
288 doCompare (intNeg1, intNeg1,
true,
false, __LINE__);
289 doCompare (intNeg1, int0,
false,
true, __LINE__);
290 doCompare (intNeg1, intPos1,
false,
true, __LINE__);
291 doCompare (intNeg1, uint0,
false,
true, __LINE__);
292 doCompare (intNeg1, uint1,
false,
true, __LINE__);
293 doCompare (intNeg1, realNeg1,
false,
true, __LINE__);
294 doCompare (intNeg1, real0,
false,
true, __LINE__);
295 doCompare (intNeg1, realPos1,
false,
true, __LINE__);
296 doCompare (intNeg1, str0,
false,
true, __LINE__);
297 doCompare (intNeg1, str1,
false,
true, __LINE__);
298 doCompare (intNeg1, boolF,
false,
true, __LINE__);
299 doCompare (intNeg1, boolT,
false,
true, __LINE__);
300 doCompare (intNeg1, array0,
false,
true, __LINE__);
301 doCompare (intNeg1, array1,
false,
true, __LINE__);
302 doCompare (intNeg1, obj0,
false,
true, __LINE__);
303 doCompare (intNeg1, obj1,
false,
true, __LINE__);
305 doCompare (int0, null0,
false,
false, __LINE__);
306 doCompare (int0, intNeg1,
false,
false, __LINE__);
307 doCompare (int0, int0,
true,
false, __LINE__);
308 doCompare (int0, intPos1,
false,
true, __LINE__);
309 doCompare (int0, uint0,
true,
false, __LINE__);
310 doCompare (int0, uint1,
false,
true, __LINE__);
311 doCompare (int0, realNeg1,
false,
true, __LINE__);
312 doCompare (int0, real0,
false,
true, __LINE__);
313 doCompare (int0, realPos1,
false,
true, __LINE__);
314 doCompare (int0, str0,
false,
true, __LINE__);
315 doCompare (int0, str1,
false,
true, __LINE__);
316 doCompare (int0, boolF,
false,
true, __LINE__);
317 doCompare (int0, boolT,
false,
true, __LINE__);
318 doCompare (int0, array0,
false,
true, __LINE__);
319 doCompare (int0, array1,
false,
true, __LINE__);
320 doCompare (int0, obj0,
false,
true, __LINE__);
321 doCompare (int0, obj1,
false,
true, __LINE__);
323 doCompare (intPos1, null0,
false,
false, __LINE__);
324 doCompare (intPos1, intNeg1,
false,
false, __LINE__);
325 doCompare (intPos1, int0,
false,
false, __LINE__);
326 doCompare (intPos1, intPos1,
true,
false, __LINE__);
327 doCompare (intPos1, uint0,
false,
false, __LINE__);
328 doCompare (intPos1, uint1,
true,
false, __LINE__);
329 doCompare (intPos1, realNeg1,
false,
true, __LINE__);
330 doCompare (intPos1, real0,
false,
true, __LINE__);
331 doCompare (intPos1, realPos1,
false,
true, __LINE__);
332 doCompare (intPos1, str0,
false,
true, __LINE__);
333 doCompare (intPos1, str1,
false,
true, __LINE__);
334 doCompare (intPos1, boolF,
false,
true, __LINE__);
335 doCompare (intPos1, boolT,
false,
true, __LINE__);
336 doCompare (intPos1, array0,
false,
true, __LINE__);
337 doCompare (intPos1, array1,
false,
true, __LINE__);
338 doCompare (intPos1, obj0,
false,
true, __LINE__);
339 doCompare (intPos1, obj1,
false,
true, __LINE__);
341 doCompare (uint0, null0,
false,
false, __LINE__);
342 doCompare (uint0, intNeg1,
false,
false, __LINE__);
343 doCompare (uint0, int0,
true,
false, __LINE__);
344 doCompare (uint0, intPos1,
false,
true, __LINE__);
345 doCompare (uint0, uint0,
true,
false, __LINE__);
346 doCompare (uint0, uint1,
false,
true, __LINE__);
347 doCompare (uint0, realNeg1,
false,
true, __LINE__);
348 doCompare (uint0, real0,
false,
true, __LINE__);
349 doCompare (uint0, realPos1,
false,
true, __LINE__);
350 doCompare (uint0, str0,
false,
true, __LINE__);
351 doCompare (uint0, str1,
false,
true, __LINE__);
352 doCompare (uint0, boolF,
false,
true, __LINE__);
353 doCompare (uint0, boolT,
false,
true, __LINE__);
354 doCompare (uint0, array0,
false,
true, __LINE__);
355 doCompare (uint0, array1,
false,
true, __LINE__);
356 doCompare (uint0, obj0,
false,
true, __LINE__);
357 doCompare (uint0, obj1,
false,
true, __LINE__);
359 doCompare (uint1, null0,
false,
false, __LINE__);
360 doCompare (uint1, intNeg1,
false,
false, __LINE__);
361 doCompare (uint1, int0,
false,
false, __LINE__);
362 doCompare (uint1, intPos1,
true,
false, __LINE__);
363 doCompare (uint1, uint0,
false,
false, __LINE__);
364 doCompare (uint1, uint1,
true,
false, __LINE__);
365 doCompare (uint1, realNeg1,
false,
true, __LINE__);
366 doCompare (uint1, real0,
false,
true, __LINE__);
367 doCompare (uint1, realPos1,
false,
true, __LINE__);
368 doCompare (uint1, str0,
false,
true, __LINE__);
369 doCompare (uint1, str1,
false,
true, __LINE__);
370 doCompare (uint1, boolF,
false,
true, __LINE__);
371 doCompare (uint1, boolT,
false,
true, __LINE__);
372 doCompare (uint1, array0,
false,
true, __LINE__);
373 doCompare (uint1, array1,
false,
true, __LINE__);
374 doCompare (uint1, obj0,
false,
true, __LINE__);
375 doCompare (uint1, obj1,
false,
true, __LINE__);
377 doCompare (realNeg1, null0,
false,
false, __LINE__);
378 doCompare (realNeg1, intNeg1,
false,
false, __LINE__);
379 doCompare (realNeg1, int0,
false,
false, __LINE__);
380 doCompare (realNeg1, intPos1,
false,
false, __LINE__);
381 doCompare (realNeg1, uint0,
false,
false, __LINE__);
382 doCompare (realNeg1, uint1,
false,
false, __LINE__);
383 doCompare (realNeg1, realNeg1,
true,
false, __LINE__);
384 doCompare (realNeg1, real0,
false,
true, __LINE__);
385 doCompare (realNeg1, realPos1,
false,
true, __LINE__);
386 doCompare (realNeg1, str0,
false,
true, __LINE__);
387 doCompare (realNeg1, str1,
false,
true, __LINE__);
388 doCompare (realNeg1, boolF,
false,
true, __LINE__);
389 doCompare (realNeg1, boolT,
false,
true, __LINE__);
390 doCompare (realNeg1, array0,
false,
true, __LINE__);
391 doCompare (realNeg1, array1,
false,
true, __LINE__);
392 doCompare (realNeg1, obj0,
false,
true, __LINE__);
393 doCompare (realNeg1, obj1,
false,
true, __LINE__);
395 doCompare (real0, null0,
false,
false, __LINE__);
396 doCompare (real0, intNeg1,
false,
false, __LINE__);
397 doCompare (real0, int0,
false,
false, __LINE__);
398 doCompare (real0, intPos1,
false,
false, __LINE__);
399 doCompare (real0, uint0,
false,
false, __LINE__);
400 doCompare (real0, uint1,
false,
false, __LINE__);
401 doCompare (real0, realNeg1,
false,
false, __LINE__);
402 doCompare (real0, real0,
true,
false, __LINE__);
403 doCompare (real0, realPos1,
false,
true, __LINE__);
404 doCompare (real0, str0,
false,
true, __LINE__);
405 doCompare (real0, str1,
false,
true, __LINE__);
406 doCompare (real0, boolF,
false,
true, __LINE__);
407 doCompare (real0, boolT,
false,
true, __LINE__);
408 doCompare (real0, array0,
false,
true, __LINE__);
409 doCompare (real0, array1,
false,
true, __LINE__);
410 doCompare (real0, obj0,
false,
true, __LINE__);
411 doCompare (real0, obj1,
false,
true, __LINE__);
413 doCompare (realPos1, null0,
false,
false, __LINE__);
414 doCompare (realPos1, intNeg1,
false,
false, __LINE__);
415 doCompare (realPos1, int0,
false,
false, __LINE__);
416 doCompare (realPos1, intPos1,
false,
false, __LINE__);
417 doCompare (realPos1, uint0,
false,
false, __LINE__);
418 doCompare (realPos1, uint1,
false,
false, __LINE__);
419 doCompare (realPos1, realNeg1,
false,
false, __LINE__);
420 doCompare (realPos1, real0,
false,
false, __LINE__);
421 doCompare (realPos1, realPos1,
true,
false, __LINE__);
422 doCompare (realPos1, str0,
false,
true, __LINE__);
423 doCompare (realPos1, str1,
false,
true, __LINE__);
424 doCompare (realPos1, boolF,
false,
true, __LINE__);
425 doCompare (realPos1, boolT,
false,
true, __LINE__);
426 doCompare (realPos1, array0,
false,
true, __LINE__);
427 doCompare (realPos1, array1,
false,
true, __LINE__);
428 doCompare (realPos1, obj0,
false,
true, __LINE__);
429 doCompare (realPos1, obj1,
false,
true, __LINE__);
431 doCompare (str0, null0,
false,
false, __LINE__);
432 doCompare (str0, intNeg1,
false,
false, __LINE__);
433 doCompare (str0, int0,
false,
false, __LINE__);
434 doCompare (str0, intPos1,
false,
false, __LINE__);
435 doCompare (str0, uint0,
false,
false, __LINE__);
436 doCompare (str0, uint1,
false,
false, __LINE__);
437 doCompare (str0, realNeg1,
false,
false, __LINE__);
438 doCompare (str0, real0,
false,
false, __LINE__);
439 doCompare (str0, realPos1,
false,
false, __LINE__);
440 doCompare (str0, str0,
true,
false, __LINE__);
441 doCompare (str0, str1,
false,
true, __LINE__);
442 doCompare (str0, boolF,
false,
true, __LINE__);
443 doCompare (str0, boolT,
false,
true, __LINE__);
444 doCompare (str0, array0,
false,
true, __LINE__);
445 doCompare (str0, array1,
false,
true, __LINE__);
446 doCompare (str0, obj0,
false,
true, __LINE__);
447 doCompare (str0, obj1,
false,
true, __LINE__);
449 doCompare (str1, null0,
false,
false, __LINE__);
450 doCompare (str1, intNeg1,
false,
false, __LINE__);
451 doCompare (str1, int0,
false,
false, __LINE__);
452 doCompare (str1, intPos1,
false,
false, __LINE__);
453 doCompare (str1, uint0,
false,
false, __LINE__);
454 doCompare (str1, uint1,
false,
false, __LINE__);
455 doCompare (str1, realNeg1,
false,
false, __LINE__);
456 doCompare (str1, real0,
false,
false, __LINE__);
457 doCompare (str1, realPos1,
false,
false, __LINE__);
458 doCompare (str1, str0,
false,
false, __LINE__);
459 doCompare (str1, str1,
true,
false, __LINE__);
460 doCompare (str1, boolF,
false,
true, __LINE__);
461 doCompare (str1, boolT,
false,
true, __LINE__);
462 doCompare (str1, array0,
false,
true, __LINE__);
463 doCompare (str1, array1,
false,
true, __LINE__);
464 doCompare (str1, obj0,
false,
true, __LINE__);
465 doCompare (str1, obj1,
false,
true, __LINE__);
467 doCompare (boolF, null0,
false,
false, __LINE__);
468 doCompare (boolF, intNeg1,
false,
false, __LINE__);
469 doCompare (boolF, int0,
false,
false, __LINE__);
470 doCompare (boolF, intPos1,
false,
false, __LINE__);
471 doCompare (boolF, uint0,
false,
false, __LINE__);
472 doCompare (boolF, uint1,
false,
false, __LINE__);
473 doCompare (boolF, realNeg1,
false,
false, __LINE__);
474 doCompare (boolF, real0,
false,
false, __LINE__);
475 doCompare (boolF, realPos1,
false,
false, __LINE__);
476 doCompare (boolF, str0,
false,
false, __LINE__);
477 doCompare (boolF, str1,
false,
false, __LINE__);
478 doCompare (boolF, boolF,
true,
false, __LINE__);
479 doCompare (boolF, boolT,
false,
true, __LINE__);
480 doCompare (boolF, array0,
false,
true, __LINE__);
481 doCompare (boolF, array1,
false,
true, __LINE__);
482 doCompare (boolF, obj0,
false,
true, __LINE__);
483 doCompare (boolF, obj1,
false,
true, __LINE__);
485 doCompare (boolT, null0,
false,
false, __LINE__);
486 doCompare (boolT, intNeg1,
false,
false, __LINE__);
487 doCompare (boolT, int0,
false,
false, __LINE__);
488 doCompare (boolT, intPos1,
false,
false, __LINE__);
489 doCompare (boolT, uint0,
false,
false, __LINE__);
490 doCompare (boolT, uint1,
false,
false, __LINE__);
491 doCompare (boolT, realNeg1,
false,
false, __LINE__);
492 doCompare (boolT, real0,
false,
false, __LINE__);
493 doCompare (boolT, realPos1,
false,
false, __LINE__);
494 doCompare (boolT, str0,
false,
false, __LINE__);
495 doCompare (boolT, str1,
false,
false, __LINE__);
496 doCompare (boolT, boolF,
false,
false, __LINE__);
497 doCompare (boolT, boolT,
true,
false, __LINE__);
498 doCompare (boolT, array0,
false,
true, __LINE__);
499 doCompare (boolT, array1,
false,
true, __LINE__);
500 doCompare (boolT, obj0,
false,
true, __LINE__);
501 doCompare (boolT, obj1,
false,
true, __LINE__);
503 doCompare (array0, null0,
false,
false, __LINE__);
504 doCompare (array0, intNeg1,
false,
false, __LINE__);
505 doCompare (array0, int0,
false,
false, __LINE__);
506 doCompare (array0, intPos1,
false,
false, __LINE__);
507 doCompare (array0, uint0,
false,
false, __LINE__);
508 doCompare (array0, uint1,
false,
false, __LINE__);
509 doCompare (array0, realNeg1,
false,
false, __LINE__);
510 doCompare (array0, real0,
false,
false, __LINE__);
511 doCompare (array0, realPos1,
false,
false, __LINE__);
512 doCompare (array0, str0,
false,
false, __LINE__);
513 doCompare (array0, str1,
false,
false, __LINE__);
514 doCompare (array0, boolF,
false,
false, __LINE__);
515 doCompare (array0, boolT,
false,
false, __LINE__);
516 doCompare (array0, array0,
true,
false, __LINE__);
517 doCompare (array0, array1,
false,
true, __LINE__);
518 doCompare (array0, obj0,
false,
true, __LINE__);
519 doCompare (array0, obj1,
false,
true, __LINE__);
521 doCompare (array1, null0,
false,
false, __LINE__);
522 doCompare (array1, intNeg1,
false,
false, __LINE__);
523 doCompare (array1, int0,
false,
false, __LINE__);
524 doCompare (array1, intPos1,
false,
false, __LINE__);
525 doCompare (array1, uint0,
false,
false, __LINE__);
526 doCompare (array1, uint1,
false,
false, __LINE__);
527 doCompare (array1, realNeg1,
false,
false, __LINE__);
528 doCompare (array1, real0,
false,
false, __LINE__);
529 doCompare (array1, realPos1,
false,
false, __LINE__);
530 doCompare (array1, str0,
false,
false, __LINE__);
531 doCompare (array1, str1,
false,
false, __LINE__);
532 doCompare (array1, boolF,
false,
false, __LINE__);
533 doCompare (array1, boolT,
false,
false, __LINE__);
534 doCompare (array1, array0,
false,
false, __LINE__);
535 doCompare (array1, array1,
true,
false, __LINE__);
536 doCompare (array1, obj0,
false,
true, __LINE__);
537 doCompare (array1, obj1,
false,
true, __LINE__);
539 doCompare (obj0, null0,
false,
false, __LINE__);
540 doCompare (obj0, intNeg1,
false,
false, __LINE__);
541 doCompare (obj0, int0,
false,
false, __LINE__);
542 doCompare (obj0, intPos1,
false,
false, __LINE__);
543 doCompare (obj0, uint0,
false,
false, __LINE__);
544 doCompare (obj0, uint1,
false,
false, __LINE__);
545 doCompare (obj0, realNeg1,
false,
false, __LINE__);
546 doCompare (obj0, real0,
false,
false, __LINE__);
547 doCompare (obj0, realPos1,
false,
false, __LINE__);
548 doCompare (obj0, str0,
false,
false, __LINE__);
549 doCompare (obj0, str1,
false,
false, __LINE__);
550 doCompare (obj0, boolF,
false,
false, __LINE__);
551 doCompare (obj0, boolT,
false,
false, __LINE__);
552 doCompare (obj0, array0,
false,
false, __LINE__);
553 doCompare (obj0, array1,
false,
false, __LINE__);
554 doCompare (obj0, obj0,
true,
false, __LINE__);
555 doCompare (obj0, obj1,
false,
true, __LINE__);
557 doCompare (obj1, null0,
false,
false, __LINE__);
558 doCompare (obj1, intNeg1,
false,
false, __LINE__);
559 doCompare (obj1, int0,
false,
false, __LINE__);
560 doCompare (obj1, intPos1,
false,
false, __LINE__);
561 doCompare (obj1, uint0,
false,
false, __LINE__);
562 doCompare (obj1, uint1,
false,
false, __LINE__);
563 doCompare (obj1, realNeg1,
false,
false, __LINE__);
564 doCompare (obj1, real0,
false,
false, __LINE__);
565 doCompare (obj1, realPos1,
false,
false, __LINE__);
566 doCompare (obj1, str0,
false,
false, __LINE__);
567 doCompare (obj1, str1,
false,
false, __LINE__);
568 doCompare (obj1, boolF,
false,
false, __LINE__);
569 doCompare (obj1, boolT,
false,
false, __LINE__);
570 doCompare (obj1, array0,
false,
false, __LINE__);
571 doCompare (obj1, array1,
false,
false, __LINE__);
572 doCompare (obj1, obj0,
false,
false, __LINE__);
573 doCompare (obj1, obj1,
true,
false, __LINE__);
589 BEAST_EXPECT(! array);
591 BEAST_EXPECT(
bool (array));
594 BEAST_EXPECT(!
object);
596 BEAST_EXPECT(
bool (
object));
602 "{\"method\":\"ledger\",\"params\":[{\"ledger_index\":1e300}]}"
635 BEAST_EXPECT(r1.
parse (json, j1));
636 BEAST_EXPECT(j1[
"max_uint"].asUInt() == max_uint);
637 BEAST_EXPECT(j1[
"max_int"].asInt() == max_int);
638 BEAST_EXPECT(j1[
"min_int"].asInt() == min_int);
639 BEAST_EXPECT(j1[
"a_uint"].asUInt() == a_uint);
640 BEAST_EXPECT(j1[
"a_uint"] > a_large_int);
641 BEAST_EXPECT(j1[
"a_uint"] > a_small_int);
642 BEAST_EXPECT(j1[
"a_large_int"].asInt() == a_large_int);
643 BEAST_EXPECT(j1[
"a_large_int"].asUInt() == a_large_int);
644 BEAST_EXPECT(j1[
"a_large_int"] < a_uint);
645 BEAST_EXPECT(j1[
"a_small_int"].asInt() == a_small_int);
646 BEAST_EXPECT(j1[
"a_small_int"] < a_uint);
648 json =
"{\"overflow\":";
655 BEAST_EXPECT(!r2.
parse (json, j2));
657 json =
"{\"underflow\":";
664 BEAST_EXPECT(!r3.
parse (json, j3));
669 [[maybe_unused]]
std::uint32_t const uTooBig {intString.asUInt()};
670 fail(
"4294967296", __FILE__, __LINE__);
676 intString =
"4294967295";
677 BEAST_EXPECT (intString.asUInt() == 4294967295u);
680 BEAST_EXPECT (intString.asUInt() == 0);
685 [[maybe_unused]]
std::uint32_t const uTooSmall {intString.asUInt()};
686 fail(
"-1", __FILE__, __LINE__);
692 intString =
"2147483648";
695 [[maybe_unused]]
std::int32_t tooPos {intString.asInt()};
696 fail(
"2147483648", __FILE__, __LINE__);
702 intString =
"2147483647";
703 BEAST_EXPECT (intString.asInt() == 2147483647);
705 intString =
"-2147483648";
706 BEAST_EXPECT (intString.asInt() == -2147483648LL);
708 intString =
"-2147483649";
711 [[maybe_unused]]
std::int32_t tooNeg {intString.asInt()};
712 fail(
"-2147483649", __FILE__, __LINE__);
723 BEAST_EXPECT(v1.isDouble ());
724 BEAST_EXPECT(v1.asDouble () == 2.5);
727 BEAST_EXPECT(v1.isDouble ());
728 BEAST_EXPECT(v1.asDouble () == 2.5);
730 BEAST_EXPECT(v2.
asDouble () == 2.5);
731 BEAST_EXPECT(v1 == v2);
734 BEAST_EXPECT(v1.isDouble ());
735 BEAST_EXPECT(v1.asDouble () == 2.5);
737 BEAST_EXPECT(v2.
asDouble () == 2.5);
738 BEAST_EXPECT(v1 == v2);
747 BEAST_EXPECT(v1.isDouble ());
748 BEAST_EXPECT(v1.asDouble () == 2.5);
753 BEAST_EXPECT(v2.
asDouble () == 2.5);
754 BEAST_EXPECT(v1 != v2);
757 BEAST_EXPECT(v1.isDouble ());
758 BEAST_EXPECT(v1.asDouble () == 2.5);
760 BEAST_EXPECT(v1 != v2);
770 BEAST_EXPECT(a == b);
771 BEAST_EXPECT(a <= b);
772 BEAST_EXPECT(a >= b);
774 BEAST_EXPECT(! (a != b));
775 BEAST_EXPECT(! (a < b));
776 BEAST_EXPECT(! (a > b));
778 BEAST_EXPECT(b == a);
779 BEAST_EXPECT(b <= a);
780 BEAST_EXPECT(b >= a);
782 BEAST_EXPECT(! (b != a));
783 BEAST_EXPECT(! (b < a));
784 BEAST_EXPECT(! (b > a));
787 auto testGreaterThan = [&] (
std::string const& name) {
788 BEAST_EXPECT(! (a == b));
789 BEAST_EXPECT(! (a <= b));
790 BEAST_EXPECT(a >= b);
792 BEAST_EXPECT(a != b);
793 BEAST_EXPECT(! (a < b));
796 BEAST_EXPECT(! (b == a));
797 BEAST_EXPECT(b <= a);
798 BEAST_EXPECT(! (b >= a));
800 BEAST_EXPECT(b != a);
802 BEAST_EXPECT(! (b > a));
810 testGreaterThan (
"negative");
818 testGreaterThan (
"big");
825 char const* s (
"{\"array\":[{\"12\":23},{},null,false,0.5]}");
834 BEAST_EXPECT(r.
parse(s,j));
838 BEAST_EXPECT(countLines(ss.
str()) > 1);
843 BEAST_EXPECT(countLines(ss.
str()) == 1);
856 BEAST_EXPECT(val.
isNull());
859 BEAST_EXPECT(val.
asInt() == 0);
860 BEAST_EXPECT(val.
asUInt() == 0);
861 BEAST_EXPECT(val.
asDouble() == 0.0);
862 BEAST_EXPECT(val.
asBool() ==
false);
876 BEAST_EXPECT(val.
isInt());
878 BEAST_EXPECT(val.
asString() ==
"-1234");
879 BEAST_EXPECT(val.
asInt() == -1234);
881 BEAST_EXPECT(val.
asDouble() == -1234.0);
882 BEAST_EXPECT(val.
asBool() ==
true);
896 BEAST_EXPECT(val.
isUInt());
898 BEAST_EXPECT(val.
asString() ==
"1234");
899 BEAST_EXPECT(val.
asInt() == 1234);
900 BEAST_EXPECT(val.
asUInt() == 1234u);
901 BEAST_EXPECT(val.
asDouble() == 1234.0);
902 BEAST_EXPECT(val.
asBool() ==
true);
920 BEAST_EXPECT(val.
asInt() == 2);
921 BEAST_EXPECT(val.
asUInt() == 2u);
922 BEAST_EXPECT(val.
asDouble() == 2.0);
923 BEAST_EXPECT(val.
asBool() ==
true);
938 BEAST_EXPECT(strcmp (val.
asCString(),
"54321") == 0);
939 BEAST_EXPECT(val.
asString() ==
"54321");
940 BEAST_EXPECT(val.
asInt() == 54321);
941 BEAST_EXPECT(val.
asUInt() == 54321u);
943 BEAST_EXPECT(val.
asBool() ==
true);
958 BEAST_EXPECT(val.
asCString() ==
nullptr);
961 BEAST_EXPECT(val.
asInt() == 0);
962 fail(
"expected exception", __FILE__, __LINE__);
967 BEAST_EXPECT(val.
asUInt() == 0);
968 fail(
"expected exception", __FILE__, __LINE__);
973 BEAST_EXPECT(val.
asBool() ==
false);
987 BEAST_EXPECT(val.
isBool());
989 BEAST_EXPECT(val.
asString() ==
"false");
990 BEAST_EXPECT(val.
asInt() == 0);
991 BEAST_EXPECT(val.
asUInt() == 0);
992 BEAST_EXPECT(val.
asDouble() == 0.0);
993 BEAST_EXPECT(val.
asBool() ==
false);
1007 BEAST_EXPECT(val.
isBool());
1009 BEAST_EXPECT(val.
asString() ==
"true");
1010 BEAST_EXPECT(val.
asInt() == 1);
1011 BEAST_EXPECT(val.
asUInt() == 1);
1012 BEAST_EXPECT(val.
asDouble() == 1.0);
1013 BEAST_EXPECT(val.
asBool() ==
true);
1033 BEAST_EXPECT(val.
asBool() ==
false);
1053 BEAST_EXPECT(val.
asBool() ==
false);
1071 BEAST_EXPECT (val.
size() == 0);
1073 BEAST_EXPECT (! val.
isMember(
"key"));
1077 BEAST_EXPECT (! constVal.
isMember(
"key"));
1080 BEAST_EXPECT (constVal.
get (1u,
"default0") ==
"default0");
1082 BEAST_EXPECT (constVal.
get (
"missing",
"default2") ==
"default2");
1087 BEAST_EXPECT (val.
size() == 0);
1089 BEAST_EXPECT (! val.
isMember(
"key"));
1093 BEAST_EXPECT (val.
size() == 0);
1095 BEAST_EXPECT (! val.
isMember(
"key"));
1099 BEAST_EXPECT (val.
size() == 0);
1101 BEAST_EXPECT (! val.
isMember(
"key"));
1105 BEAST_EXPECT (val.
size() == 0);
1107 BEAST_EXPECT (! val.
isMember(
"key"));
1111 BEAST_EXPECT (val.
size() == 0);
1113 BEAST_EXPECT (! val.
isMember(
"key"));
1117 BEAST_EXPECT (val.
size() == 0);
1119 val[staticThree] = 3;
1121 BEAST_EXPECT (val.
size() == 2);
1124 BEAST_EXPECT (val[staticThree] == 3);
1125 BEAST_EXPECT (val.
isMember(
"two"));
1126 BEAST_EXPECT (val.
isMember(staticThree));
1127 BEAST_EXPECT (! val.
isMember(
"key"));
1130 BEAST_EXPECT (constVal[
"two"] == 2);
1132 BEAST_EXPECT (constVal[staticThree] == 3);
1133 BEAST_EXPECT (constVal.
isMember(
"two"));
1134 BEAST_EXPECT (constVal.
isMember(staticThree));
1135 BEAST_EXPECT (! constVal.
isMember(
"key"));
1137 BEAST_EXPECT (val.
get (
"missing",
"default2") ==
"default2");
1142 BEAST_EXPECT (val.
size() == 0);
1145 BEAST_EXPECT (val.
size() == 2);
1149 BEAST_EXPECT (! val.
isMember(
"key"));
1152 BEAST_EXPECT (constVal[0u] ==
"zero");
1154 BEAST_EXPECT (! constVal.
isMember(
"key"));
1155 BEAST_EXPECT (val.
get (1u,
"default0") ==
"one");
1156 BEAST_EXPECT (val.
get (3u,
"default1") ==
"default1");
1169 val[staticThree] = 3;
1171 BEAST_EXPECT (val.
size() == 2);
1175 BEAST_EXPECT (val.
size() == 2);
1178 BEAST_EXPECT (val.
size() == 1);
1181 BEAST_EXPECT (val.
size() == 1);
1184 BEAST_EXPECT (val.
size() == 0);
1188 BEAST_EXPECT (val.
size() == 0);
1210 BEAST_EXPECT (b != e);
1211 BEAST_EXPECT (! (b == e));
1212 BEAST_EXPECT (i1.
key() == 0);
1213 BEAST_EXPECT (i2.
key() == 3);
1214 BEAST_EXPECT (i1.
index() == 0);
1215 BEAST_EXPECT (i2.
index() == 3);
1221 BEAST_EXPECT (*i1 ==
"one");
1226 BEAST_EXPECT (*i2 ==
"two");
1227 BEAST_EXPECT (i1 == i2);
1229 BEAST_EXPECT (*i1 ==
"2");
1249 BEAST_EXPECT (i1 != i2);
1250 BEAST_EXPECT (! (i1 == i2));
1251 BEAST_EXPECT (i1.key() ==
"0");
1252 BEAST_EXPECT (i2.key() ==
"3");
1253 BEAST_EXPECT (i1.index() == -1);
1254 BEAST_EXPECT (i2.index() == -1);
1255 BEAST_EXPECT (
std::strcmp (i1.memberName(),
"0") == 0);
1256 BEAST_EXPECT (
std::strcmp (i2.memberName(),
"3") == 0);
1259 BEAST_EXPECT (*i1++ == 0);
1260 BEAST_EXPECT (*i1 == 1);
1263 BEAST_EXPECT (*i2-- == 3);
1264 BEAST_EXPECT (*i2 == 2);
1265 BEAST_EXPECT (i1 == i2);
1266 BEAST_EXPECT (*i1 == 2);
1271 BEAST_EXPECT (nul.begin() == nul.end());
1276 BEAST_EXPECT (i.begin() == i.end());
1298 BEAST_EXPECT(r.
parse(json, j));
1305 BEAST_EXPECT(!r.
parse(json, j));
1312 s +=
"\"array\":[{";
1322 BEAST_EXPECT(!r.
parse(json, j));
1336 a = std::move(a[0u]);
1342 temp[
"a"] =
"Probably avoids the small string optimization";
1343 temp[
"b"] =
"Also probably avoids the small string optimization";
1347 BEAST_EXPECT (b.
size() == 1);
1349 b.
append (std::move (temp));
1350 BEAST_EXPECT (b.
size() == 2);