20 #include <ripple/beast/core/LexicalCast.h>
21 #include <ripple/beast/type_name.h>
22 #include <ripple/beast/unit_test.h>
23 #include <ripple/json/json_reader.h>
24 #include <ripple/json/json_value.h>
25 #include <ripple/json/json_writer.h>
37 static constexpr
char sample[]{
"Contents of a Json::StaticString"};
40 char const* addrTest1{test1};
42 BEAST_EXPECT(addrTest1 == &sample[0]);
43 BEAST_EXPECT(test1.c_str() == &sample[0]);
46 "Contents of a Json::StaticString"};
49 BEAST_EXPECT(test1 == test2);
50 BEAST_EXPECT(test1 != test3);
53 BEAST_EXPECT(str == test2);
54 BEAST_EXPECT(str != test3);
55 BEAST_EXPECT(test2 == str);
56 BEAST_EXPECT(test3 != str);
68 BEAST_EXPECT(val.type() == typ);
69 BEAST_EXPECT(cpy.type() == typ);
74 BEAST_EXPECT(nullV.isNull());
75 BEAST_EXPECT(!nullV.isBool());
76 BEAST_EXPECT(!nullV.isInt());
77 BEAST_EXPECT(!nullV.isUInt());
78 BEAST_EXPECT(!nullV.isIntegral());
79 BEAST_EXPECT(!nullV.isDouble());
80 BEAST_EXPECT(!nullV.isNumeric());
81 BEAST_EXPECT(!nullV.isString());
82 BEAST_EXPECT(!nullV.isArray());
83 BEAST_EXPECT(nullV.isArrayOrNull());
84 BEAST_EXPECT(!nullV.isObject());
85 BEAST_EXPECT(nullV.isObjectOrNull());
89 BEAST_EXPECT(!intV.isNull());
90 BEAST_EXPECT(!intV.isBool());
91 BEAST_EXPECT(intV.isInt());
92 BEAST_EXPECT(!intV.isUInt());
93 BEAST_EXPECT(intV.isIntegral());
94 BEAST_EXPECT(!intV.isDouble());
95 BEAST_EXPECT(intV.isNumeric());
96 BEAST_EXPECT(!intV.isString());
97 BEAST_EXPECT(!intV.isArray());
98 BEAST_EXPECT(!intV.isArrayOrNull());
99 BEAST_EXPECT(!intV.isObject());
100 BEAST_EXPECT(!intV.isObjectOrNull());
104 BEAST_EXPECT(!uintV.isNull());
105 BEAST_EXPECT(!uintV.isBool());
106 BEAST_EXPECT(!uintV.isInt());
107 BEAST_EXPECT(uintV.isUInt());
108 BEAST_EXPECT(uintV.isIntegral());
109 BEAST_EXPECT(!uintV.isDouble());
110 BEAST_EXPECT(uintV.isNumeric());
111 BEAST_EXPECT(!uintV.isString());
112 BEAST_EXPECT(!uintV.isArray());
113 BEAST_EXPECT(!uintV.isArrayOrNull());
114 BEAST_EXPECT(!uintV.isObject());
115 BEAST_EXPECT(!uintV.isObjectOrNull());
119 BEAST_EXPECT(!realV.isNull());
120 BEAST_EXPECT(!realV.isBool());
121 BEAST_EXPECT(!realV.isInt());
122 BEAST_EXPECT(!realV.isUInt());
123 BEAST_EXPECT(!realV.isIntegral());
124 BEAST_EXPECT(realV.isDouble());
125 BEAST_EXPECT(realV.isNumeric());
126 BEAST_EXPECT(!realV.isString());
127 BEAST_EXPECT(!realV.isArray());
128 BEAST_EXPECT(!realV.isArrayOrNull());
129 BEAST_EXPECT(!realV.isObject());
130 BEAST_EXPECT(!realV.isObjectOrNull());
134 BEAST_EXPECT(!stringV.isNull());
135 BEAST_EXPECT(!stringV.isBool());
136 BEAST_EXPECT(!stringV.isInt());
137 BEAST_EXPECT(!stringV.isUInt());
138 BEAST_EXPECT(!stringV.isIntegral());
139 BEAST_EXPECT(!stringV.isDouble());
140 BEAST_EXPECT(!stringV.isNumeric());
141 BEAST_EXPECT(stringV.isString());
142 BEAST_EXPECT(!stringV.isArray());
143 BEAST_EXPECT(!stringV.isArrayOrNull());
144 BEAST_EXPECT(!stringV.isObject());
145 BEAST_EXPECT(!stringV.isObjectOrNull());
154 BEAST_EXPECT(!staticStrV.isNull());
155 BEAST_EXPECT(!staticStrV.isBool());
156 BEAST_EXPECT(!staticStrV.isInt());
157 BEAST_EXPECT(!staticStrV.isUInt());
158 BEAST_EXPECT(!staticStrV.isIntegral());
159 BEAST_EXPECT(!staticStrV.isDouble());
160 BEAST_EXPECT(!staticStrV.isNumeric());
161 BEAST_EXPECT(staticStrV.isString());
162 BEAST_EXPECT(!staticStrV.isArray());
163 BEAST_EXPECT(!staticStrV.isArrayOrNull());
164 BEAST_EXPECT(!staticStrV.isObject());
165 BEAST_EXPECT(!staticStrV.isObjectOrNull());
169 BEAST_EXPECT(!boolV.isNull());
170 BEAST_EXPECT(boolV.isBool());
171 BEAST_EXPECT(!boolV.isInt());
172 BEAST_EXPECT(!boolV.isUInt());
173 BEAST_EXPECT(boolV.isIntegral());
174 BEAST_EXPECT(!boolV.isDouble());
175 BEAST_EXPECT(boolV.isNumeric());
176 BEAST_EXPECT(!boolV.isString());
177 BEAST_EXPECT(!boolV.isArray());
178 BEAST_EXPECT(!boolV.isArrayOrNull());
179 BEAST_EXPECT(!boolV.isObject());
180 BEAST_EXPECT(!boolV.isObjectOrNull());
184 BEAST_EXPECT(!arrayV.isNull());
185 BEAST_EXPECT(!arrayV.isBool());
186 BEAST_EXPECT(!arrayV.isInt());
187 BEAST_EXPECT(!arrayV.isUInt());
188 BEAST_EXPECT(!arrayV.isIntegral());
189 BEAST_EXPECT(!arrayV.isDouble());
190 BEAST_EXPECT(!arrayV.isNumeric());
191 BEAST_EXPECT(!arrayV.isString());
192 BEAST_EXPECT(arrayV.isArray());
193 BEAST_EXPECT(arrayV.isArrayOrNull());
194 BEAST_EXPECT(!arrayV.isObject());
195 BEAST_EXPECT(!arrayV.isObjectOrNull());
199 BEAST_EXPECT(!objectV.isNull());
200 BEAST_EXPECT(!objectV.isBool());
201 BEAST_EXPECT(!objectV.isInt());
202 BEAST_EXPECT(!objectV.isUInt());
203 BEAST_EXPECT(!objectV.isIntegral());
204 BEAST_EXPECT(!objectV.isDouble());
205 BEAST_EXPECT(!objectV.isNumeric());
206 BEAST_EXPECT(!objectV.isString());
207 BEAST_EXPECT(!objectV.isArray());
208 BEAST_EXPECT(!objectV.isArrayOrNull());
209 BEAST_EXPECT(objectV.isObject());
210 BEAST_EXPECT(objectV.isObjectOrNull());
217 auto doCompare = [
this](
223 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);
263 doCompare(null0,
Json::Value{},
true,
false, __LINE__);
264 doCompare(null0, intNeg1,
false,
true, __LINE__);
265 doCompare(null0, int0,
false,
true, __LINE__);
266 doCompare(null0, intPos1,
false,
true, __LINE__);
267 doCompare(null0, uint0,
false,
true, __LINE__);
268 doCompare(null0, uint1,
false,
true, __LINE__);
269 doCompare(null0, realNeg1,
false,
true, __LINE__);
270 doCompare(null0, real0,
false,
true, __LINE__);
271 doCompare(null0, realPos1,
false,
true, __LINE__);
272 doCompare(null0, str0,
false,
true, __LINE__);
273 doCompare(null0, str1,
false,
true, __LINE__);
274 doCompare(null0, boolF,
false,
true, __LINE__);
275 doCompare(null0, boolT,
false,
true, __LINE__);
276 doCompare(null0, array0,
false,
true, __LINE__);
277 doCompare(null0, array1,
false,
true, __LINE__);
278 doCompare(null0, obj0,
false,
true, __LINE__);
279 doCompare(null0, obj1,
false,
true, __LINE__);
281 doCompare(intNeg1, null0,
false,
false, __LINE__);
282 doCompare(intNeg1, intNeg1,
true,
false, __LINE__);
283 doCompare(intNeg1, int0,
false,
true, __LINE__);
284 doCompare(intNeg1, intPos1,
false,
true, __LINE__);
285 doCompare(intNeg1, uint0,
false,
true, __LINE__);
286 doCompare(intNeg1, uint1,
false,
true, __LINE__);
287 doCompare(intNeg1, realNeg1,
false,
true, __LINE__);
288 doCompare(intNeg1, real0,
false,
true, __LINE__);
289 doCompare(intNeg1, realPos1,
false,
true, __LINE__);
290 doCompare(intNeg1, str0,
false,
true, __LINE__);
291 doCompare(intNeg1, str1,
false,
true, __LINE__);
292 doCompare(intNeg1, boolF,
false,
true, __LINE__);
293 doCompare(intNeg1, boolT,
false,
true, __LINE__);
294 doCompare(intNeg1, array0,
false,
true, __LINE__);
295 doCompare(intNeg1, array1,
false,
true, __LINE__);
296 doCompare(intNeg1, obj0,
false,
true, __LINE__);
297 doCompare(intNeg1, obj1,
false,
true, __LINE__);
299 doCompare(int0, null0,
false,
false, __LINE__);
300 doCompare(int0, intNeg1,
false,
false, __LINE__);
301 doCompare(int0, int0,
true,
false, __LINE__);
302 doCompare(int0, intPos1,
false,
true, __LINE__);
303 doCompare(int0, uint0,
true,
false, __LINE__);
304 doCompare(int0, uint1,
false,
true, __LINE__);
305 doCompare(int0, realNeg1,
false,
true, __LINE__);
306 doCompare(int0, real0,
false,
true, __LINE__);
307 doCompare(int0, realPos1,
false,
true, __LINE__);
308 doCompare(int0, str0,
false,
true, __LINE__);
309 doCompare(int0, str1,
false,
true, __LINE__);
310 doCompare(int0, boolF,
false,
true, __LINE__);
311 doCompare(int0, boolT,
false,
true, __LINE__);
312 doCompare(int0, array0,
false,
true, __LINE__);
313 doCompare(int0, array1,
false,
true, __LINE__);
314 doCompare(int0, obj0,
false,
true, __LINE__);
315 doCompare(int0, obj1,
false,
true, __LINE__);
317 doCompare(intPos1, null0,
false,
false, __LINE__);
318 doCompare(intPos1, intNeg1,
false,
false, __LINE__);
319 doCompare(intPos1, int0,
false,
false, __LINE__);
320 doCompare(intPos1, intPos1,
true,
false, __LINE__);
321 doCompare(intPos1, uint0,
false,
false, __LINE__);
322 doCompare(intPos1, uint1,
true,
false, __LINE__);
323 doCompare(intPos1, realNeg1,
false,
true, __LINE__);
324 doCompare(intPos1, real0,
false,
true, __LINE__);
325 doCompare(intPos1, realPos1,
false,
true, __LINE__);
326 doCompare(intPos1, str0,
false,
true, __LINE__);
327 doCompare(intPos1, str1,
false,
true, __LINE__);
328 doCompare(intPos1, boolF,
false,
true, __LINE__);
329 doCompare(intPos1, boolT,
false,
true, __LINE__);
330 doCompare(intPos1, array0,
false,
true, __LINE__);
331 doCompare(intPos1, array1,
false,
true, __LINE__);
332 doCompare(intPos1, obj0,
false,
true, __LINE__);
333 doCompare(intPos1, obj1,
false,
true, __LINE__);
335 doCompare(uint0, null0,
false,
false, __LINE__);
336 doCompare(uint0, intNeg1,
false,
false, __LINE__);
337 doCompare(uint0, int0,
true,
false, __LINE__);
338 doCompare(uint0, intPos1,
false,
true, __LINE__);
339 doCompare(uint0, uint0,
true,
false, __LINE__);
340 doCompare(uint0, uint1,
false,
true, __LINE__);
341 doCompare(uint0, realNeg1,
false,
true, __LINE__);
342 doCompare(uint0, real0,
false,
true, __LINE__);
343 doCompare(uint0, realPos1,
false,
true, __LINE__);
344 doCompare(uint0, str0,
false,
true, __LINE__);
345 doCompare(uint0, str1,
false,
true, __LINE__);
346 doCompare(uint0, boolF,
false,
true, __LINE__);
347 doCompare(uint0, boolT,
false,
true, __LINE__);
348 doCompare(uint0, array0,
false,
true, __LINE__);
349 doCompare(uint0, array1,
false,
true, __LINE__);
350 doCompare(uint0, obj0,
false,
true, __LINE__);
351 doCompare(uint0, obj1,
false,
true, __LINE__);
353 doCompare(uint1, null0,
false,
false, __LINE__);
354 doCompare(uint1, intNeg1,
false,
false, __LINE__);
355 doCompare(uint1, int0,
false,
false, __LINE__);
356 doCompare(uint1, intPos1,
true,
false, __LINE__);
357 doCompare(uint1, uint0,
false,
false, __LINE__);
358 doCompare(uint1, uint1,
true,
false, __LINE__);
359 doCompare(uint1, realNeg1,
false,
true, __LINE__);
360 doCompare(uint1, real0,
false,
true, __LINE__);
361 doCompare(uint1, realPos1,
false,
true, __LINE__);
362 doCompare(uint1, str0,
false,
true, __LINE__);
363 doCompare(uint1, str1,
false,
true, __LINE__);
364 doCompare(uint1, boolF,
false,
true, __LINE__);
365 doCompare(uint1, boolT,
false,
true, __LINE__);
366 doCompare(uint1, array0,
false,
true, __LINE__);
367 doCompare(uint1, array1,
false,
true, __LINE__);
368 doCompare(uint1, obj0,
false,
true, __LINE__);
369 doCompare(uint1, obj1,
false,
true, __LINE__);
371 doCompare(realNeg1, null0,
false,
false, __LINE__);
372 doCompare(realNeg1, intNeg1,
false,
false, __LINE__);
373 doCompare(realNeg1, int0,
false,
false, __LINE__);
374 doCompare(realNeg1, intPos1,
false,
false, __LINE__);
375 doCompare(realNeg1, uint0,
false,
false, __LINE__);
376 doCompare(realNeg1, uint1,
false,
false, __LINE__);
377 doCompare(realNeg1, realNeg1,
true,
false, __LINE__);
378 doCompare(realNeg1, real0,
false,
true, __LINE__);
379 doCompare(realNeg1, realPos1,
false,
true, __LINE__);
380 doCompare(realNeg1, str0,
false,
true, __LINE__);
381 doCompare(realNeg1, str1,
false,
true, __LINE__);
382 doCompare(realNeg1, boolF,
false,
true, __LINE__);
383 doCompare(realNeg1, boolT,
false,
true, __LINE__);
384 doCompare(realNeg1, array0,
false,
true, __LINE__);
385 doCompare(realNeg1, array1,
false,
true, __LINE__);
386 doCompare(realNeg1, obj0,
false,
true, __LINE__);
387 doCompare(realNeg1, obj1,
false,
true, __LINE__);
389 doCompare(real0, null0,
false,
false, __LINE__);
390 doCompare(real0, intNeg1,
false,
false, __LINE__);
391 doCompare(real0, int0,
false,
false, __LINE__);
392 doCompare(real0, intPos1,
false,
false, __LINE__);
393 doCompare(real0, uint0,
false,
false, __LINE__);
394 doCompare(real0, uint1,
false,
false, __LINE__);
395 doCompare(real0, realNeg1,
false,
false, __LINE__);
396 doCompare(real0, real0,
true,
false, __LINE__);
397 doCompare(real0, realPos1,
false,
true, __LINE__);
398 doCompare(real0, str0,
false,
true, __LINE__);
399 doCompare(real0, str1,
false,
true, __LINE__);
400 doCompare(real0, boolF,
false,
true, __LINE__);
401 doCompare(real0, boolT,
false,
true, __LINE__);
402 doCompare(real0, array0,
false,
true, __LINE__);
403 doCompare(real0, array1,
false,
true, __LINE__);
404 doCompare(real0, obj0,
false,
true, __LINE__);
405 doCompare(real0, obj1,
false,
true, __LINE__);
407 doCompare(realPos1, null0,
false,
false, __LINE__);
408 doCompare(realPos1, intNeg1,
false,
false, __LINE__);
409 doCompare(realPos1, int0,
false,
false, __LINE__);
410 doCompare(realPos1, intPos1,
false,
false, __LINE__);
411 doCompare(realPos1, uint0,
false,
false, __LINE__);
412 doCompare(realPos1, uint1,
false,
false, __LINE__);
413 doCompare(realPos1, realNeg1,
false,
false, __LINE__);
414 doCompare(realPos1, real0,
false,
false, __LINE__);
415 doCompare(realPos1, realPos1,
true,
false, __LINE__);
416 doCompare(realPos1, str0,
false,
true, __LINE__);
417 doCompare(realPos1, str1,
false,
true, __LINE__);
418 doCompare(realPos1, boolF,
false,
true, __LINE__);
419 doCompare(realPos1, boolT,
false,
true, __LINE__);
420 doCompare(realPos1, array0,
false,
true, __LINE__);
421 doCompare(realPos1, array1,
false,
true, __LINE__);
422 doCompare(realPos1, obj0,
false,
true, __LINE__);
423 doCompare(realPos1, obj1,
false,
true, __LINE__);
425 doCompare(str0, null0,
false,
false, __LINE__);
426 doCompare(str0, intNeg1,
false,
false, __LINE__);
427 doCompare(str0, int0,
false,
false, __LINE__);
428 doCompare(str0, intPos1,
false,
false, __LINE__);
429 doCompare(str0, uint0,
false,
false, __LINE__);
430 doCompare(str0, uint1,
false,
false, __LINE__);
431 doCompare(str0, realNeg1,
false,
false, __LINE__);
432 doCompare(str0, real0,
false,
false, __LINE__);
433 doCompare(str0, realPos1,
false,
false, __LINE__);
434 doCompare(str0, str0,
true,
false, __LINE__);
435 doCompare(str0, str1,
false,
true, __LINE__);
436 doCompare(str0, boolF,
false,
true, __LINE__);
437 doCompare(str0, boolT,
false,
true, __LINE__);
438 doCompare(str0, array0,
false,
true, __LINE__);
439 doCompare(str0, array1,
false,
true, __LINE__);
440 doCompare(str0, obj0,
false,
true, __LINE__);
441 doCompare(str0, obj1,
false,
true, __LINE__);
443 doCompare(str1, null0,
false,
false, __LINE__);
444 doCompare(str1, intNeg1,
false,
false, __LINE__);
445 doCompare(str1, int0,
false,
false, __LINE__);
446 doCompare(str1, intPos1,
false,
false, __LINE__);
447 doCompare(str1, uint0,
false,
false, __LINE__);
448 doCompare(str1, uint1,
false,
false, __LINE__);
449 doCompare(str1, realNeg1,
false,
false, __LINE__);
450 doCompare(str1, real0,
false,
false, __LINE__);
451 doCompare(str1, realPos1,
false,
false, __LINE__);
452 doCompare(str1, str0,
false,
false, __LINE__);
453 doCompare(str1, str1,
true,
false, __LINE__);
454 doCompare(str1, boolF,
false,
true, __LINE__);
455 doCompare(str1, boolT,
false,
true, __LINE__);
456 doCompare(str1, array0,
false,
true, __LINE__);
457 doCompare(str1, array1,
false,
true, __LINE__);
458 doCompare(str1, obj0,
false,
true, __LINE__);
459 doCompare(str1, obj1,
false,
true, __LINE__);
461 doCompare(boolF, null0,
false,
false, __LINE__);
462 doCompare(boolF, intNeg1,
false,
false, __LINE__);
463 doCompare(boolF, int0,
false,
false, __LINE__);
464 doCompare(boolF, intPos1,
false,
false, __LINE__);
465 doCompare(boolF, uint0,
false,
false, __LINE__);
466 doCompare(boolF, uint1,
false,
false, __LINE__);
467 doCompare(boolF, realNeg1,
false,
false, __LINE__);
468 doCompare(boolF, real0,
false,
false, __LINE__);
469 doCompare(boolF, realPos1,
false,
false, __LINE__);
470 doCompare(boolF, str0,
false,
false, __LINE__);
471 doCompare(boolF, str1,
false,
false, __LINE__);
472 doCompare(boolF, boolF,
true,
false, __LINE__);
473 doCompare(boolF, boolT,
false,
true, __LINE__);
474 doCompare(boolF, array0,
false,
true, __LINE__);
475 doCompare(boolF, array1,
false,
true, __LINE__);
476 doCompare(boolF, obj0,
false,
true, __LINE__);
477 doCompare(boolF, obj1,
false,
true, __LINE__);
479 doCompare(boolT, null0,
false,
false, __LINE__);
480 doCompare(boolT, intNeg1,
false,
false, __LINE__);
481 doCompare(boolT, int0,
false,
false, __LINE__);
482 doCompare(boolT, intPos1,
false,
false, __LINE__);
483 doCompare(boolT, uint0,
false,
false, __LINE__);
484 doCompare(boolT, uint1,
false,
false, __LINE__);
485 doCompare(boolT, realNeg1,
false,
false, __LINE__);
486 doCompare(boolT, real0,
false,
false, __LINE__);
487 doCompare(boolT, realPos1,
false,
false, __LINE__);
488 doCompare(boolT, str0,
false,
false, __LINE__);
489 doCompare(boolT, str1,
false,
false, __LINE__);
490 doCompare(boolT, boolF,
false,
false, __LINE__);
491 doCompare(boolT, boolT,
true,
false, __LINE__);
492 doCompare(boolT, array0,
false,
true, __LINE__);
493 doCompare(boolT, array1,
false,
true, __LINE__);
494 doCompare(boolT, obj0,
false,
true, __LINE__);
495 doCompare(boolT, obj1,
false,
true, __LINE__);
497 doCompare(array0, null0,
false,
false, __LINE__);
498 doCompare(array0, intNeg1,
false,
false, __LINE__);
499 doCompare(array0, int0,
false,
false, __LINE__);
500 doCompare(array0, intPos1,
false,
false, __LINE__);
501 doCompare(array0, uint0,
false,
false, __LINE__);
502 doCompare(array0, uint1,
false,
false, __LINE__);
503 doCompare(array0, realNeg1,
false,
false, __LINE__);
504 doCompare(array0, real0,
false,
false, __LINE__);
505 doCompare(array0, realPos1,
false,
false, __LINE__);
506 doCompare(array0, str0,
false,
false, __LINE__);
507 doCompare(array0, str1,
false,
false, __LINE__);
508 doCompare(array0, boolF,
false,
false, __LINE__);
509 doCompare(array0, boolT,
false,
false, __LINE__);
510 doCompare(array0, array0,
true,
false, __LINE__);
511 doCompare(array0, array1,
false,
true, __LINE__);
512 doCompare(array0, obj0,
false,
true, __LINE__);
513 doCompare(array0, obj1,
false,
true, __LINE__);
515 doCompare(array1, null0,
false,
false, __LINE__);
516 doCompare(array1, intNeg1,
false,
false, __LINE__);
517 doCompare(array1, int0,
false,
false, __LINE__);
518 doCompare(array1, intPos1,
false,
false, __LINE__);
519 doCompare(array1, uint0,
false,
false, __LINE__);
520 doCompare(array1, uint1,
false,
false, __LINE__);
521 doCompare(array1, realNeg1,
false,
false, __LINE__);
522 doCompare(array1, real0,
false,
false, __LINE__);
523 doCompare(array1, realPos1,
false,
false, __LINE__);
524 doCompare(array1, str0,
false,
false, __LINE__);
525 doCompare(array1, str1,
false,
false, __LINE__);
526 doCompare(array1, boolF,
false,
false, __LINE__);
527 doCompare(array1, boolT,
false,
false, __LINE__);
528 doCompare(array1, array0,
false,
false, __LINE__);
529 doCompare(array1, array1,
true,
false, __LINE__);
530 doCompare(array1, obj0,
false,
true, __LINE__);
531 doCompare(array1, obj1,
false,
true, __LINE__);
533 doCompare(obj0, null0,
false,
false, __LINE__);
534 doCompare(obj0, intNeg1,
false,
false, __LINE__);
535 doCompare(obj0, int0,
false,
false, __LINE__);
536 doCompare(obj0, intPos1,
false,
false, __LINE__);
537 doCompare(obj0, uint0,
false,
false, __LINE__);
538 doCompare(obj0, uint1,
false,
false, __LINE__);
539 doCompare(obj0, realNeg1,
false,
false, __LINE__);
540 doCompare(obj0, real0,
false,
false, __LINE__);
541 doCompare(obj0, realPos1,
false,
false, __LINE__);
542 doCompare(obj0, str0,
false,
false, __LINE__);
543 doCompare(obj0, str1,
false,
false, __LINE__);
544 doCompare(obj0, boolF,
false,
false, __LINE__);
545 doCompare(obj0, boolT,
false,
false, __LINE__);
546 doCompare(obj0, array0,
false,
false, __LINE__);
547 doCompare(obj0, array1,
false,
false, __LINE__);
548 doCompare(obj0, obj0,
true,
false, __LINE__);
549 doCompare(obj0, obj1,
false,
true, __LINE__);
551 doCompare(obj1, null0,
false,
false, __LINE__);
552 doCompare(obj1, intNeg1,
false,
false, __LINE__);
553 doCompare(obj1, int0,
false,
false, __LINE__);
554 doCompare(obj1, intPos1,
false,
false, __LINE__);
555 doCompare(obj1, uint0,
false,
false, __LINE__);
556 doCompare(obj1, uint1,
false,
false, __LINE__);
557 doCompare(obj1, realNeg1,
false,
false, __LINE__);
558 doCompare(obj1, real0,
false,
false, __LINE__);
559 doCompare(obj1, realPos1,
false,
false, __LINE__);
560 doCompare(obj1, str0,
false,
false, __LINE__);
561 doCompare(obj1, str1,
false,
false, __LINE__);
562 doCompare(obj1, boolF,
false,
false, __LINE__);
563 doCompare(obj1, boolT,
false,
false, __LINE__);
564 doCompare(obj1, array0,
false,
false, __LINE__);
565 doCompare(obj1, array1,
false,
false, __LINE__);
566 doCompare(obj1, obj0,
false,
false, __LINE__);
567 doCompare(obj1, obj1,
true,
false, __LINE__);
584 BEAST_EXPECT(!array);
586 BEAST_EXPECT(
bool(array));
589 BEAST_EXPECT(!
object);
591 BEAST_EXPECT(
bool(
object));
598 "{\"method\":\"ledger\",\"params\":[{\"ledger_index\":1e300}]}");
631 BEAST_EXPECT(r1.
parse(json, j1));
632 BEAST_EXPECT(j1[
"max_uint"].asUInt() == max_uint);
633 BEAST_EXPECT(j1[
"max_int"].asInt() == max_int);
634 BEAST_EXPECT(j1[
"min_int"].asInt() == min_int);
635 BEAST_EXPECT(j1[
"a_uint"].asUInt() == a_uint);
636 BEAST_EXPECT(j1[
"a_uint"] > a_large_int);
637 BEAST_EXPECT(j1[
"a_uint"] > a_small_int);
638 BEAST_EXPECT(j1[
"a_large_int"].asInt() == a_large_int);
639 BEAST_EXPECT(j1[
"a_large_int"].asUInt() == a_large_int);
640 BEAST_EXPECT(j1[
"a_large_int"] < a_uint);
641 BEAST_EXPECT(j1[
"a_small_int"].asInt() == a_small_int);
642 BEAST_EXPECT(j1[
"a_small_int"] < a_uint);
644 json =
"{\"overflow\":";
651 BEAST_EXPECT(!r2.
parse(json, j2));
653 json =
"{\"underflow\":";
660 BEAST_EXPECT(!r3.
parse(json, j3));
665 [[maybe_unused]]
std::uint32_t const uTooBig{intString.asUInt()};
666 fail(
"4294967296", __FILE__, __LINE__);
673 intString =
"4294967295";
674 BEAST_EXPECT(intString.asUInt() == 4294967295u);
677 BEAST_EXPECT(intString.asUInt() == 0);
682 [[maybe_unused]]
std::uint32_t const uTooSmall{intString.asUInt()};
683 fail(
"-1", __FILE__, __LINE__);
690 intString =
"2147483648";
693 [[maybe_unused]]
std::int32_t tooPos{intString.asInt()};
694 fail(
"2147483648", __FILE__, __LINE__);
701 intString =
"2147483647";
702 BEAST_EXPECT(intString.asInt() == 2147483647);
704 intString =
"-2147483648";
705 BEAST_EXPECT(intString.asInt() == -2147483648LL);
707 intString =
"-2147483649";
710 [[maybe_unused]]
std::int32_t tooNeg{intString.asInt()};
711 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);
731 BEAST_EXPECT(v1 == v2);
734 BEAST_EXPECT(v1.isDouble());
735 BEAST_EXPECT(v1.asDouble() == 2.5);
738 BEAST_EXPECT(v1 == v2);
747 BEAST_EXPECT(v1.isDouble());
748 BEAST_EXPECT(v1.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");
826 char const* s(
"{\"array\":[{\"12\":23},{},null,false,0.5]}");
829 return 1 +
std::count_if(str.begin(), str.end(), [](
char c) {
834 BEAST_EXPECT(r.
parse(s, j));
838 BEAST_EXPECT(countLines(ss.
str()) > 1);
843 BEAST_EXPECT(countLines(ss.
str()) == 1);
857 BEAST_EXPECT(val.
isNull());
861 BEAST_EXPECT(val.
asInt() == 0);
862 BEAST_EXPECT(val.
asUInt() == 0);
863 BEAST_EXPECT(val.
asDouble() == 0.0);
864 BEAST_EXPECT(val.
asBool() ==
false);
878 BEAST_EXPECT(val.
isInt());
881 BEAST_EXPECT(val.
asString() ==
"-1234");
882 BEAST_EXPECT(val.
asInt() == -1234);
885 BEAST_EXPECT(val.
asDouble() == -1234.0);
886 BEAST_EXPECT(val.
asBool() ==
true);
900 BEAST_EXPECT(val.
isUInt());
903 BEAST_EXPECT(val.
asString() ==
"1234");
904 BEAST_EXPECT(val.
asInt() == 1234);
905 BEAST_EXPECT(val.
asUInt() == 1234u);
906 BEAST_EXPECT(val.
asDouble() == 1234.0);
907 BEAST_EXPECT(val.
asBool() ==
true);
926 BEAST_EXPECT(val.
asInt() == 2);
927 BEAST_EXPECT(val.
asUInt() == 2u);
928 BEAST_EXPECT(val.
asDouble() == 2.0);
929 BEAST_EXPECT(val.
asBool() ==
true);
944 BEAST_EXPECT(strcmp(val.
asCString(),
"54321") == 0);
945 BEAST_EXPECT(val.
asString() ==
"54321");
946 BEAST_EXPECT(val.
asInt() == 54321);
947 BEAST_EXPECT(val.
asUInt() == 54321u);
950 BEAST_EXPECT(val.
asBool() ==
true);
965 BEAST_EXPECT(val.
asCString() ==
nullptr);
969 BEAST_EXPECT(val.
asInt() == 0);
970 fail(
"expected exception", __FILE__, __LINE__);
978 BEAST_EXPECT(val.
asUInt() == 0);
979 fail(
"expected exception", __FILE__, __LINE__);
987 BEAST_EXPECT(val.
asBool() ==
false);
1001 BEAST_EXPECT(val.
isBool());
1004 BEAST_EXPECT(val.
asString() ==
"false");
1005 BEAST_EXPECT(val.
asInt() == 0);
1006 BEAST_EXPECT(val.
asUInt() == 0);
1007 BEAST_EXPECT(val.
asDouble() == 0.0);
1008 BEAST_EXPECT(val.
asBool() ==
false);
1022 BEAST_EXPECT(val.
isBool());
1025 BEAST_EXPECT(val.
asString() ==
"true");
1026 BEAST_EXPECT(val.
asInt() == 1);
1027 BEAST_EXPECT(val.
asUInt() == 1);
1028 BEAST_EXPECT(val.
asDouble() == 1.0);
1029 BEAST_EXPECT(val.
asBool() ==
true);
1050 BEAST_EXPECT(val.
asBool() ==
false);
1071 BEAST_EXPECT(val.
asBool() ==
false);
1089 BEAST_EXPECT(val.
size() == 0);
1091 BEAST_EXPECT(!val.
isMember(
"key"));
1095 BEAST_EXPECT(!constVal.
isMember(
"key"));
1098 BEAST_EXPECT(constVal.
get(1u,
"default0") ==
"default0");
1100 BEAST_EXPECT(constVal.
get(
"missing",
"default2") ==
"default2");
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 BEAST_EXPECT(!val.
isMember(
"key"));
1123 BEAST_EXPECT(val.
size() == 0);
1125 BEAST_EXPECT(!val.
isMember(
"key"));
1129 BEAST_EXPECT(val.
size() == 0);
1131 BEAST_EXPECT(!val.
isMember(
"key"));
1135 BEAST_EXPECT(val.
size() == 0);
1137 val[staticThree] = 3;
1139 BEAST_EXPECT(val.
size() == 2);
1142 BEAST_EXPECT(val[staticThree] == 3);
1144 BEAST_EXPECT(val.
isMember(staticThree));
1145 BEAST_EXPECT(!val.
isMember(
"key"));
1148 BEAST_EXPECT(constVal[
"two"] == 2);
1150 BEAST_EXPECT(constVal[staticThree] == 3);
1151 BEAST_EXPECT(constVal.
isMember(
"two"));
1152 BEAST_EXPECT(constVal.
isMember(staticThree));
1153 BEAST_EXPECT(!constVal.
isMember(
"key"));
1155 BEAST_EXPECT(val.
get(
"missing",
"default2") ==
"default2");
1160 BEAST_EXPECT(val.
size() == 0);
1163 BEAST_EXPECT(val.
size() == 2);
1167 BEAST_EXPECT(!val.
isMember(
"key"));
1170 BEAST_EXPECT(constVal[0u] ==
"zero");
1172 BEAST_EXPECT(!constVal.
isMember(
"key"));
1173 BEAST_EXPECT(val.
get(1u,
"default0") ==
"one");
1174 BEAST_EXPECT(val.
get(3u,
"default1") ==
"default1");
1187 val[staticThree] = 3;
1189 BEAST_EXPECT(val.
size() == 2);
1193 BEAST_EXPECT(val.
size() == 2);
1196 BEAST_EXPECT(val.
size() == 1);
1199 BEAST_EXPECT(val.
size() == 1);
1202 BEAST_EXPECT(val.
size() == 0);
1206 BEAST_EXPECT(val.
size() == 0);
1228 BEAST_EXPECT(b != e);
1229 BEAST_EXPECT(!(b == e));
1230 BEAST_EXPECT(i1.
key() == 0);
1231 BEAST_EXPECT(i2.
key() == 3);
1232 BEAST_EXPECT(i1.
index() == 0);
1233 BEAST_EXPECT(i2.
index() == 3);
1239 BEAST_EXPECT(*i1 ==
"one");
1244 BEAST_EXPECT(*i2 ==
"two");
1245 BEAST_EXPECT(i1 == i2);
1247 BEAST_EXPECT(*i1 ==
"2");
1265 BEAST_EXPECT(i1 != i2);
1266 BEAST_EXPECT(!(i1 == i2));
1267 BEAST_EXPECT(i1.key() ==
"0");
1268 BEAST_EXPECT(i2.key() ==
"3");
1269 BEAST_EXPECT(i1.index() == -1);
1270 BEAST_EXPECT(i2.index() == -1);
1271 BEAST_EXPECT(
std::strcmp(i1.memberName(),
"0") == 0);
1272 BEAST_EXPECT(
std::strcmp(i2.memberName(),
"3") == 0);
1275 BEAST_EXPECT(*i1++ == 0);
1276 BEAST_EXPECT(*i1 == 1);
1279 BEAST_EXPECT(*i2-- == 3);
1280 BEAST_EXPECT(*i2 == 2);
1281 BEAST_EXPECT(i1 == i2);
1282 BEAST_EXPECT(*i1 == 2);
1287 BEAST_EXPECT(nul.begin() == nul.end());
1292 BEAST_EXPECT(i.begin() == i.end());
1315 BEAST_EXPECT(r.
parse(json, j));
1322 BEAST_EXPECT(!r.
parse(json, j));
1329 s +=
"\"array\":[{";
1339 BEAST_EXPECT(!r.
parse(json, j));
1353 a = std::move(a[0u]);
1359 temp[
"a"] =
"Probably avoids the small string optimization";
1360 temp[
"b"] =
"Also probably avoids the small string optimization";
1364 BEAST_EXPECT(b.
size() == 1);
1366 b.
append(std::move(temp));
1367 BEAST_EXPECT(b.
size() == 2);