193 static constexpr char json[] =
"{ \n\
200 \"k6b\": \"this string is long\", \n\
201 \"k7\": [ 1, true, \"bar\" ], \n\
202 \"k8\": { \"kk1\": 2, \"kk2\": false, \"kk1\": \"baz\" } \n\
205 DOM dom(json, strlen(json));
211 const auto& v = jroot[
"k1"];
214 check_primitive<bool, BoolValue>(
reporter, v,
false,
false);
215 check_primitive<float, NumberValue>(
reporter, v, 0,
false);
218 check_vector<ArrayValue >(
reporter, v, 0,
false);
219 check_vector<ObjectValue>(
reporter, v, 0,
false);
223 const auto& v = jroot[
"k2"];
226 check_primitive<bool, BoolValue>(
reporter, v,
false,
true);
227 check_primitive<float, NumberValue>(
reporter, v, 0,
false);
230 check_vector<ArrayValue >(
reporter, v, 0,
false);
231 check_vector<ObjectValue>(
reporter, v, 0,
false);
235 const auto& v = jroot[
"k3"];
238 check_primitive<bool, BoolValue>(
reporter, v,
true,
true);
239 check_primitive<float, NumberValue>(
reporter, v, 0,
false);
242 check_vector<ArrayValue >(
reporter, v, 0,
false);
243 check_vector<ObjectValue>(
reporter, v, 0,
false);
247 const auto& v = jroot[
"k4"];
250 check_primitive<bool, BoolValue>(
reporter, v,
false,
false);
251 check_primitive<float, NumberValue>(
reporter, v, 42,
true);
254 check_vector<ArrayValue >(
reporter, v, 0,
false);
255 check_vector<ObjectValue>(
reporter, v, 0,
false);
259 const auto& v = jroot[
"k5"];
262 check_primitive<bool, BoolValue>(
reporter, v,
false,
false);
263 check_primitive<float, NumberValue>(
reporter, v, .75f,
true);
266 check_vector<ArrayValue >(
reporter, v, 0,
false);
267 check_vector<ObjectValue>(
reporter, v, 0,
false);
271 const auto& v = jroot[
"k6"];
274 check_primitive<bool, BoolValue>(
reporter, v,
false,
false);
275 check_primitive<float, NumberValue>(
reporter, v, 0,
false);
278 check_vector<ArrayValue >(
reporter, v, 0,
false);
279 check_vector<ObjectValue>(
reporter, v, 0,
false);
283 const auto& v = jroot[
"k6b"];
286 check_primitive<bool, BoolValue>(
reporter, v,
false,
false);
287 check_primitive<float, NumberValue>(
reporter, v, 0,
false);
290 check_vector<ArrayValue >(
reporter, v, 0,
false);
291 check_vector<ObjectValue>(
reporter, v, 0,
false);
295 const auto& v = jroot[
"k7"];
298 check_primitive<bool, BoolValue>(
reporter, v,
false,
false);
299 check_primitive<float, NumberValue>(
reporter, v, 0,
false);
302 check_vector<ObjectValue>(
reporter, v, 0,
false);
304 check_vector<ArrayValue >(
reporter, v, 3,
true);
311 const auto& v = jroot[
"k8"];
314 check_primitive<bool, BoolValue>(
reporter, v,
false,
false);
315 check_primitive<float, NumberValue>(
reporter, v, 0,
false);
318 check_vector<ArrayValue >(
reporter, v, 0,
false);
320 check_vector<ObjectValue>(
reporter, v, 3,
true);
324 check_primitive<float, NumberValue>(
reporter, m0.fValue, 2,
true);
328 check_primitive<bool, BoolValue>(
reporter, m1.fValue,
false,
true);
356 check_value<NullValue>(
reporter, v0,
"null");
359 check_value<BoolValue>(
reporter, v1,
"true");
362 check_value<BoolValue>(
reporter,
v2,
"false");
365 check_value<NumberValue>(
reporter, v3,
"0");
371 check_value<NumberValue>(
reporter, v5,
"42.75");
374 check_value<StringValue>(
reporter, v6,
"\"\"");
377 check_value<StringValue>(
reporter, v7,
"\" foo \"");
379 const auto v8 =
StringValue(
" foo bar baz ", 13, alloc);
380 check_value<StringValue>(
reporter, v8,
"\" foo bar baz \"");
382 const auto v9 =
ArrayValue(
nullptr, 0, alloc);
383 check_value<ArrayValue>(
reporter, v9,
"[]");
385 const Value values0[] = { v0, v3, v9 };
386 const auto v10 =
ArrayValue(values0, std::size(values0), alloc);
387 check_value<ArrayValue>(
reporter, v10,
"[null,0,[]]");
390 check_value<ObjectValue>(
reporter, v11,
"{}");
392 const Member members0[] = {
397 const auto v12 =
ObjectValue(members0, std::size(members0), alloc);
398 check_value<ObjectValue>(
reporter, v12,
"{"
404 const Value values1[] = {
v2, v6, v12 };
405 const auto v13 =
ArrayValue(values1, std::size(values1), alloc);
406 check_value<ArrayValue>(
reporter, v13,
"["
416 const Member members1[] = {
421 const auto v14 =
ObjectValue(members1, std::size(members1), alloc);
422 check_value<ObjectValue>(
reporter, v14,
"{"
424 "\"key_01\":\" foo \","