Lines Matching full:json

2 //  __|  |   __|     |   | |  JSON for Modern C++ (supporting code)
4 // |_____|_____|_____|_|___| https://github.com/nlohmann/json
11 #include <nlohmann/json.hpp>
12 using nlohmann::json;
38 bool number_integer(json::number_integer_t /*unused*/)
43 bool number_unsigned(json::number_unsigned_t /*unused*/)
48 bool number_float(json::number_float_t /*unused*/, const std::string& /*unused*/)
88 bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const json::exception& /*unused*/) // NOLINT(readability-convert-member-functions-to-static)
105 json j = json::value_t::discarded;
106 const auto result = json::to_ubjson(j);
112 json j = nullptr;
114 const auto result = json::to_ubjson(j);
118 CHECK(json::from_ubjson(result) == j);
119 CHECK(json::from_ubjson(result, true, false) == j);
126 json j = true;
128 const auto result = json::to_ubjson(j);
132 CHECK(json::from_ubjson(result) == j);
133 CHECK(json::from_ubjson(result, true, false) == j);
138 json j = false;
140 const auto result = json::to_ubjson(j);
144 CHECK(json::from_ubjson(result) == j);
145 CHECK(json::from_ubjson(result, true, false) == j);
171 // create JSON value with integer number
172 json j = i;
190 const auto result = json::to_ubjson(j);
207 CHECK(json::from_ubjson(result) == j);
208 CHECK(json::from_ubjson(result, true, false) == j);
226 // create JSON value with integer number
227 json j = i;
241 const auto result = json::to_ubjson(j);
254 CHECK(json::from_ubjson(result) == j);
255 CHECK(json::from_ubjson(result, true, false) == j);
265 // create JSON value with integer number
266 json j = i;
278 const auto result = json::to_ubjson(j);
288 CHECK(json::from_ubjson(result) == j);
289 CHECK(json::from_ubjson(result, true, false) == j);
295 json j = -9263;
299 const auto result = json::to_ubjson(j);
309 CHECK(json::from_ubjson(result) == j);
310 CHECK(json::from_ubjson(result, true, false) == j);
319 // create JSON value with integer number
320 json j = i;
331 const auto result = json::to_ubjson(j);
340 CHECK(json::from_ubjson(result) == j);
341 CHECK(json::from_ubjson(result, true, false) == j);
351 // create JSON value with integer number
352 json j = -1;
353 j.get_ref<json::number_integer_t&>() = static_cast<json::number_integer_t>(i);
364 const auto result = json::to_ubjson(j);
373 CHECK(json::from_ubjson(result) == j);
374 CHECK(json::from_ubjson(result, true, false) == j);
384 // create JSON value with integer number
385 json j = -1;
386 j.get_ref<json::number_integer_t&>() = static_cast<json::number_integer_t>(i);
397 const auto result = json::to_ubjson(j);
406 CHECK(json::from_ubjson(result) == j);
407 CHECK(json::from_ubjson(result, true, false) == j);
417 // create JSON value with integer number
418 json j = -1;
419 j.get_ref<json::number_integer_t&>() = static_cast<json::number_integer_t>(i);
431 const auto result = json::to_ubjson(j);
441 CHECK(json::from_ubjson(result) == j);
442 CHECK(json::from_ubjson(result, true, false) == j);
455 // create JSON value with integer number
456 json j = -1;
457 j.get_ref<json::number_integer_t&>() = static_cast<json::number_integer_t>(i);
471 const auto result = json::to_ubjson(j);
484 CHECK(json::from_ubjson(result) == j);
485 CHECK(json::from_ubjson(result, true, false) == j);
496 // create JSON value with integer number
497 json j = -1;
498 j.get_ref<json::number_integer_t&>() = static_cast<json::number_integer_t>(i);
516 const auto result = json::to_ubjson(j);
533 CHECK(json::from_ubjson(result) == j);
534 CHECK(json::from_ubjson(result, true, false) == j);
547 // create JSON value with unsigned integer number
548 json j = i;
559 const auto result = json::to_ubjson(j);
569 CHECK(json::from_ubjson(result) == j);
570 CHECK(json::from_ubjson(result, true, false) == j);
580 // create JSON value with unsigned integer number
581 json j = i;
592 const auto result = json::to_ubjson(j);
602 CHECK(json::from_ubjson(result) == j);
603 CHECK(json::from_ubjson(result, true, false) == j);
613 // create JSON value with unsigned integer number
614 json j = i;
626 const auto result = json::to_ubjson(j);
636 CHECK(json::from_ubjson(result) == j);
637 CHECK(json::from_ubjson(result, true, false) == j);
650 // create JSON value with unsigned integer number
651 json j = i;
665 const auto result = json::to_ubjson(j);
678 CHECK(json::from_ubjson(result) == j);
679 CHECK(json::from_ubjson(result, true, false) == j);
690 // create JSON value with integer number
691 json j = i;
709 const auto result = json::to_ubjson(j);
726 CHECK(json::from_ubjson(result) == j);
727 CHECK(json::from_ubjson(result, true, false) == j);
737 json j = v;
742 const auto result = json::to_ubjson(j);
746 CHECK(json::from_ubjson(result) == j);
747 CHECK(json::from_ubjson(result) == v);
748 CHECK(json::from_ubjson(result, true, false) == j);
757 const auto j = json::from_ubjson(vec);
765 const auto j = json::from_ubjson(vec);
773 const auto j = json::from_ubjson(vec);
782 CHECK(json::from_ubjson(vec0, true, false).is_discarded());
785 CHECK(json::from_ubjson(vec1, true, false).is_discarded());
787 json _;
789 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vec2), "[json.exception.parse_error.115] parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A", json::parse_error);
791 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vec3), "[json.exception.parse_error.115] parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1.", json::parse_error);
793 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vec4), "[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing UBJSON size: expected length type specification (U, i, I, l, L) after '#'; last byte: 0x02", json::parse_error);
799 json j = 11111111111111111111ULL;
803 const auto vec = json::to_ubjson(j);
808 CHECK(json::from_ubjson(vec) == j);
821 // create JSON value with string containing of N * 'x'
823 json j = s;
836 const auto result = json::to_ubjson(j);
846 CHECK(json::from_ubjson(result) == j);
847 CHECK(json::from_ubjson(result, true, false) == j);
857 // create JSON value with string containing of N * 'x'
859 json j = s;
872 const auto result = json::to_ubjson(j);
879 CHECK(json::from_ubjson(result) == j);
880 CHECK(json::from_ubjson(result, true, false) == j);
893 // create JSON value with string containing of N * 'x'
895 json j = s;
906 const auto result = json::to_ubjson(j);
913 CHECK(json::from_ubjson(result) == j);
914 CHECK(json::from_ubjson(result, true, false) == j);
927 // create JSON value with string containing of N * 'x'
929 json j = s;
942 const auto result = json::to_ubjson(j);
949 CHECK(json::from_ubjson(result) == j);
950 CHECK(json::from_ubjson(result, true, false) == j);
963 // create JSON value with byte array containing of N * 'x'
965 json j = json::binary(s);
984 const auto result = json::to_ubjson(j, true, true);
1002 json j_out = s;
1003 CHECK(json::from_ubjson(result) == j_out);
1004 CHECK(json::from_ubjson(result, true, false) == j_out);
1014 // create JSON value with byte array containing of N * 'x'
1016 json j = json::binary(s);
1032 const auto result = json::to_ubjson(j, true, true);
1039 json j_out = s;
1040 CHECK(json::from_ubjson(result) == j_out);
1041 CHECK(json::from_ubjson(result, true, false) == j_out);
1054 // create JSON value with byte array containing of N * 'x'
1056 json j = json::binary(s);
1069 const auto result = json::to_ubjson(j, true, true);
1076 json j_out = s;
1077 CHECK(json::from_ubjson(result) == j_out);
1078 CHECK(json::from_ubjson(result, true, false) == j_out);
1091 // create JSON value with byte array containing of N * 'x'
1093 json j = json::binary(s);
1108 const auto result = json::to_ubjson(j, true, true);
1115 json j_out = s;
1116 CHECK(json::from_ubjson(result) == j_out);
1117 CHECK(json::from_ubjson(result, true, false) == j_out);
1125 json j = json::binary(s);
1139 const auto result = json::to_ubjson(j, false, false);
1146 json j_out = s;
1147 CHECK(json::from_ubjson(result) == j_out);
1148 CHECK(json::from_ubjson(result, true, false) == j_out);
1166 const auto result = json::to_ubjson(j, true, false);
1173 json j_out = s;
1174 CHECK(json::from_ubjson(result) == j_out);
1175 CHECK(json::from_ubjson(result, true, false) == j_out);
1186 json j = json::array();
1188 const auto result = json::to_ubjson(j);
1192 CHECK(json::from_ubjson(result) == j);
1193 CHECK(json::from_ubjson(result, true, false) == j);
1198 json j = json::array();
1200 const auto result = json::to_ubjson(j, true);
1204 CHECK(json::from_ubjson(result) == j);
1205 CHECK(json::from_ubjson(result, true, false) == j);
1210 json j = json::array();
1212 const auto result = json::to_ubjson(j, true, true);
1216 CHECK(json::from_ubjson(result) == j);
1217 CHECK(json::from_ubjson(result, true, false) == j);
1225 json j = {nullptr};
1227 const auto result = json::to_ubjson(j);
1231 CHECK(json::from_ubjson(result) == j);
1232 CHECK(json::from_ubjson(result, true, false) == j);
1237 json j = {nullptr};
1239 const auto result = json::to_ubjson(j, true);
1243 CHECK(json::from_ubjson(result) == j);
1244 CHECK(json::from_ubjson(result, true, false) == j);
1249 json j = {nullptr};
1251 const auto result = json::to_ubjson(j, true, true);
1255 CHECK(json::from_ubjson(result) == j);
1256 CHECK(json::from_ubjson(result, true, false) == j);
1264 json j = json::parse("[1,2,3,4,5]");
1266 const auto result = json::to_ubjson(j);
1270 CHECK(json::from_ubjson(result) == j);
1271 CHECK(json::from_ubjson(result, true, false) == j);
1276 json j = json::parse("[1,2,3,4,5]");
1278 const auto result = json::to_ubjson(j, true);
1282 CHECK(json::from_ubjson(result) == j);
1283 CHECK(json::from_ubjson(result, true, false) == j);
1288 json j = json::parse("[1,2,3,4,5]");
1290 const auto result = json::to_ubjson(j, true, true);
1294 CHECK(json::from_ubjson(result) == j);
1295 CHECK(json::from_ubjson(result, true, false) == j);
1303 json j = json::parse("[[[[]]]]");
1305 const auto result = json::to_ubjson(j);
1309 CHECK(json::from_ubjson(result) == j);
1310 CHECK(json::from_ubjson(result, true, false) == j);
1315 json j = json::parse("[[[[]]]]");
1317 const auto result = json::to_ubjson(j, true);
1321 CHECK(json::from_ubjson(result) == j);
1322 CHECK(json::from_ubjson(result, true, false) == j);
1327 json j = json::parse("[[[[]]]]");
1329 const auto result = json::to_ubjson(j, true, true);
1333 CHECK(json::from_ubjson(result) == j);
1334 CHECK(json::from_ubjson(result, true, false) == j);
1342 json j(257, nullptr);
1346 const auto result = json::to_ubjson(j);
1350 CHECK(json::from_ubjson(result) == j);
1351 CHECK(json::from_ubjson(result, true, false) == j);
1356 json j(257, nullptr);
1363 const auto result = json::to_ubjson(j, true);
1367 CHECK(json::from_ubjson(result) == j);
1368 CHECK(json::from_ubjson(result, true, false) == j);
1373 json j(257, nullptr);
1375 const auto result = json::to_ubjson(j, true, true);
1379 CHECK(json::from_ubjson(result) == j);
1380 CHECK(json::from_ubjson(result, true, false) == j);
1388 json j(65793, nullptr);
1392 const auto result = json::to_ubjson(j);
1396 CHECK(json::from_ubjson(result) == j);
1397 CHECK(json::from_ubjson(result, true, false) == j);
1402 json j(65793, nullptr);
1411 const auto result = json::to_ubjson(j, true);
1415 CHECK(json::from_ubjson(result) == j);
1416 CHECK(json::from_ubjson(result, true, false) == j);
1421 json j(65793, nullptr);
1423 const auto result = json::to_ubjson(j, true, true);
1427 CHECK(json::from_ubjson(result) == j);
1428 CHECK(json::from_ubjson(result, true, false) == j);
1439 json j = json::object();
1441 const auto result = json::to_ubjson(j);
1445 CHECK(json::from_ubjson(result) == j);
1446 CHECK(json::from_ubjson(result, true, false) == j);
1451 json j = json::object();
1453 const auto result = json::to_ubjson(j, true);
1457 CHECK(json::from_ubjson(result) == j);
1458 CHECK(json::from_ubjson(result, true, false) == j);
1463 json j = json::object();
1465 const auto result = json::to_ubjson(j, true, true);
1469 CHECK(json::from_ubjson(result) == j);
1470 CHECK(json::from_ubjson(result, true, false) == j);
1478 json j = {{"", nullptr}};
1480 const auto result = json::to_ubjson(j);
1484 CHECK(json::from_ubjson(result) == j);
1485 CHECK(json::from_ubjson(result, true, false) == j);
1490 json j = {{"", nullptr}};
1492 const auto result = json::to_ubjson(j, true);
1496 CHECK(json::from_ubjson(result) == j);
1497 CHECK(json::from_ubjson(result, true, false) == j);
1502 json j = {{"", nullptr}};
1504 const auto result = json::to_ubjson(j, true, true);
1508 CHECK(json::from_ubjson(result) == j);
1509 CHECK(json::from_ubjson(result, true, false) == j);
1517 json j = json::parse(R"({"a": {"b": {"c": {}}}})");
1522 const auto result = json::to_ubjson(j);
1526 CHECK(json::from_ubjson(result) == j);
1527 CHECK(json::from_ubjson(result, true, false) == j);
1532 json j = json::parse(R"({"a": {"b": {"c": {}}}})");
1537 const auto result = json::to_ubjson(j, true);
1541 CHECK(json::from_ubjson(result) == j);
1542 CHECK(json::from_ubjson(result, true, false) == j);
1547 json j = json::parse(R"({"a": {"b": {"c": {}}}})");
1552 const auto result = json::to_ubjson(j, true, true);
1556 CHECK(json::from_ubjson(result) == j);
1557 CHECK(json::from_ubjson(result, true, false) == j);
1570 const auto result = json::from_ubjson(vec, false);
1571 CHECK(result == json());
1576 json _;
1577 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vec), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON value: expected end of input; last byte: 0x5A", json::parse_error&);
1586 json _;
1587 CHECK_THROWS_AS(_ = json::from_ubjson(v_ubjson), json::out_of_range&);
1589 json j;
1590 nlohmann::detail::json_sax_dom_callback_parser<json> scp(j, [](int /*unused*/, json::parse_event_t /*unused*/, const json& /*unused*/) noexcept
1594 CHECK_THROWS_AS(_ = json::sax_parse(v_ubjson, &scp, json::input_format_t::ubjson), json::out_of_range&);
1600 json _;
1601 CHECK_THROWS_AS(_ = json::from_ubjson(v_ubjson), json::out_of_range&);
1603 json j;
1604 nlohmann::detail::json_sax_dom_callback_parser<json> scp(j, [](int /*unused*/, json::parse_event_t /*unused*/, const json& /*unused*/) noexcept
1608 CHECK_THROWS_AS(_ = json::sax_parse(v_ubjson, &scp, json::input_format_t::ubjson), json::out_of_range&);
1619 CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson));
1626 CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson));
1633 CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson));
1640 CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson));
1647 CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson));
1654 CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson));
1670 CHECK(json::from_ubjson(s_i) == "a");
1671 CHECK(json::from_ubjson(s_U) == "a");
1672 CHECK(json::from_ubjson(s_I) == "a");
1673 CHECK(json::from_ubjson(s_l) == "a");
1674 CHECK(json::from_ubjson(s_L) == "a");
1677 CHECK(json::to_ubjson(json::from_ubjson(s_i)) == s_i);
1678 CHECK(json::to_ubjson(json::from_ubjson(s_U)) == s_i);
1679 CHECK(json::to_ubjson(json::from_ubjson(s_I)) == s_i);
1680 CHECK(json::to_ubjson(json::from_ubjson(s_l)) == s_i);
1681 CHECK(json::to_ubjson(json::from_ubjson(s_L)) == s_i);
1690 CHECK(json::from_ubjson(v_d) == 3.14159f);
1694 CHECK(json::from_ubjson(v_D) == 3.14159);
1697 CHECK(json::to_ubjson(json::from_ubjson(v_d)) == json::to_ubjson(3.14159f));
1720 CHECK(json::from_ubjson(v_TU) == json({true, true}));
1721 CHECK(json::from_ubjson(v_T) == json({true, true}));
1722 CHECK(json::from_ubjson(v_F) == json({false, false}));
1723 CHECK(json::from_ubjson(v_Z) == json({nullptr, nullptr}));
1724 CHECK(json::from_ubjson(v_i) == json({127, 127}));
1725 CHECK(json::from_ubjson(v_U) == json({255, 255}));
1726 CHECK(json::from_ubjson(v_I) == json({32767, 32767}));
1727 CHECK(json::from_ubjson(v_l) == json({2147483647, 2147483647}));
1728 CHECK(json::from_ubjson(v_L) == json({9223372036854775807, 9223372036854775807}));
1729 CHECK(json::from_ubjson(v_D) == json({3.1415926, 3.1415926}));
1730 CHECK(json::from_ubjson(v_S) == json({"a", "a"}));
1731 CHECK(json::from_ubjson(v_C) == json({"a", "a"}));
1734 CHECK(json::to_ubjson(json::from_ubjson(v_T), true) == v_T);
1735 CHECK(json::to_ubjson(json::from_ubjson(v_F), true) == v_F);
1736 CHECK(json::to_ubjson(json::from_ubjson(v_Z), true) == v_Z);
1737 CHECK(json::to_ubjson(json::from_ubjson(v_i), true) == v_i);
1738 CHECK(json::to_ubjson(json::from_ubjson(v_U), true) == v_U);
1739 CHECK(json::to_ubjson(json::from_ubjson(v_I), true) == v_I);
1740 CHECK(json::to_ubjson(json::from_ubjson(v_l), true) == v_l);
1741 CHECK(json::to_ubjson(json::from_ubjson(v_L), true) == v_L);
1742 CHECK(json::to_ubjson(json::from_ubjson(v_D), true) == v_D);
1743 CHECK(json::to_ubjson(json::from_ubjson(v_S), true) == v_S);
1744 CHECK(json::to_ubjson(json::from_ubjson(v_C), true) == v_S); // char is serialized to string
1764 CHECK(json::from_ubjson(v_N) == json::array());
1765 CHECK(json::from_ubjson(v_T) == json({true, true}));
1766 CHECK(json::from_ubjson(v_F) == json({false, false}));
1767 CHECK(json::from_ubjson(v_Z) == json({nullptr, nullptr}));
1768 CHECK(json::from_ubjson(v_i) == json({127, 127}));
1769 CHECK(json::from_ubjson(v_U) == json({255, 255}));
1770 CHECK(json::from_ubjson(v_I) == json({32767, 32767}));
1771 CHECK(json::from_ubjson(v_l) == json({2147483647, 2147483647}));
1772 CHECK(json::from_ubjson(v_L) == json({9223372036854775807, 9223372036854775807}));
1773 CHECK(json::from_ubjson(v_D) == json({3.1415926, 3.1415926}));
1774 CHECK(json::from_ubjson(v_S) == json({"a", "a"}));
1775 CHECK(json::from_ubjson(v_C) == json({"a", "a"}));
1779 CHECK(json::to_ubjson(json::from_ubjson(v_N), true, true) == v_empty);
1780 CHECK(json::to_ubjson(json::from_ubjson(v_T), true, true) == v_T);
1781 CHECK(json::to_ubjson(json::from_ubjson(v_F), true, true) == v_F);
1782 CHECK(json::to_ubjson(json::from_ubjson(v_Z), true, true) == v_Z);
1783 CHECK(json::to_ubjson(json::from_ubjson(v_i), true, true) == v_i);
1784 CHECK(json::to_ubjson(json::from_ubjson(v_U), true, true) == v_U);
1785 CHECK(json::to_ubjson(json::from_ubjson(v_I), true, true) == v_I);
1786 CHECK(json::to_ubjson(json::from_ubjson(v_l), true, true) == v_l);
1787 CHECK(json::to_ubjson(json::from_ubjson(v_L), true, true) == v_L);
1788 CHECK(json::to_ubjson(json::from_ubjson(v_D), true, true) == v_D);
1789 CHECK(json::to_ubjson(json::from_ubjson(v_S), true, true) == v_S);
1790 CHECK(json::to_ubjson(json::from_ubjson(v_C), true, true) == v_S); // char is serialized to string
1799 json _;
1800 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(std::vector<uint8_t>()), "[json.exception.parse_error.110] parse error at byte 1: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1808 json _;
1809 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON char: unexpected end of input", json::parse_error&);
1815 json _;
1816 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v), "[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing UBJSON char: byte after 'C' must be in range 0x00..0x7F; last byte: 0x82", json::parse_error&);
1825 json _;
1826 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1832 json _;
1833 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v), "[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing UBJSON string: expected length type specification (U, i, I, l, L); last byte: 0x31", json::parse_error&);
1842 json _;
1843 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v), "[json.exception.parse_error.112] parse error at byte 4: syntax error while parsing UBJSON size: expected '#' after type information; last byte: 0x02", json::parse_error&);
1850 json _;
1851 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vS), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1852 CHECK(json::from_ubjson(vS, true, false).is_discarded());
1855 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing UBJSON string: unexpected end of input", json::parse_error&);
1856 CHECK(json::from_ubjson(v, true, false).is_discarded());
1859 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vC), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON char: unexpected end of input", json::parse_error&);
1860 CHECK(json::from_ubjson(vC, true, false).is_discarded());
1866 json _;
1867 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vU), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing UBJSON number: unexpected end of input", json::parse_error&);
1868 CHECK(json::from_ubjson(vU, true, false).is_discarded());
1871 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vi), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing UBJSON number: unexpected end of input", json::parse_error&);
1872 CHECK(json::from_ubjson(vi, true, false).is_discarded());
1875 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vI), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing UBJSON number: unexpected end of input", json::parse_error&);
1876 CHECK(json::from_ubjson(vI, true, false).is_discarded());
1879 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vl), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing UBJSON number: unexpected end of input", json::parse_error&);
1880 CHECK(json::from_ubjson(vl, true, false).is_discarded());
1883 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vL), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing UBJSON number: unexpected end of input", json::parse_error&);
1884 CHECK(json::from_ubjson(vL, true, false).is_discarded());
1887 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v0), "[json.exception.parse_error.113] parse error at byte 3: syntax error while parsing UBJSON size: expected length type specification (U, i, I, l, L) after '#'; last byte: 0x54", json::parse_error&);
1888 CHECK(json::from_ubjson(v0, true, false).is_discarded());
1894 json _;
1895 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v0), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing UBJSON type: unexpected end of input", json::parse_error&);
1896 CHECK(json::from_ubjson(v0, true, false).is_discarded());
1899 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vi), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1900 CHECK(json::from_ubjson(vi, true, false).is_discarded());
1903 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vT), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1904 CHECK(json::from_ubjson(vT, true, false).is_discarded());
1910 json _;
1911 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vST), "[json.exception.parse_error.110] parse error at byte 8: syntax error while parsing UBJSON number: unexpected end of input", json::parse_error&);
1912 CHECK(json::from_ubjson(vST, true, false).is_discarded());
1915 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vS), "[json.exception.parse_error.110] parse error at byte 7: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1916 CHECK(json::from_ubjson(vS, true, false).is_discarded());
1919 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v), "[json.exception.parse_error.110] parse error at byte 6: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1920 CHECK(json::from_ubjson(v, true, false).is_discarded());
1926 json _;
1927 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vST), "[json.exception.parse_error.110] parse error at byte 11: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1928 CHECK(json::from_ubjson(vST, true, false).is_discarded());
1931 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vT), "[json.exception.parse_error.112] parse error at byte 4: syntax error while parsing UBJSON size: expected '#' after type information; last byte: 0x69", json::parse_error&);
1932 CHECK(json::from_ubjson(vT, true, false).is_discarded());
1935 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vS), "[json.exception.parse_error.110] parse error at byte 10: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1936 CHECK(json::from_ubjson(vS, true, false).is_discarded());
1939 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v), "[json.exception.parse_error.110] parse error at byte 7: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1940 CHECK(json::from_ubjson(v, true, false).is_discarded());
1943 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v2), "[json.exception.parse_error.110] parse error at byte 8: syntax error while parsing UBJSON number: unexpected end of input", json::parse_error&);
1944 CHECK(json::from_ubjson(v2, true, false).is_discarded());
1947 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(v3), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1948 CHECK(json::from_ubjson(v3, true, false).is_discarded());
1951 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vST1), "[json.exception.parse_error.110] parse error at byte 10: syntax error while parsing UBJSON number: unexpected end of input", json::parse_error&);
1952 CHECK(json::from_ubjson(vST1, true, false).is_discarded());
1955 CHECK_THROWS_WITH_AS(_ = json::from_ubjson(vST2), "[json.exception.parse_error.110] parse error at byte 8: syntax error while parsing UBJSON value: unexpected end of input", json::parse_error&);
1956 CHECK(json::from_ubjson(vST2, true, false).is_discarded());
1966 json j = {1, -1};
1968 CHECK(json::to_ubjson(j, true, true) == expected);
1973 json j = {200, 201};
1975 CHECK(json::to_ubjson(j, true, true) == expected);
1980 json j = {30000, -30000};
1982 CHECK(json::to_ubjson(j, true, true) == expected);
1987 json j = {70000, -70000};
1989 CHECK(json::to_ubjson(j, true, true) == expected);
1994 json j = {5000000000, -5000000000};
1996 CHECK(json::to_ubjson(j, true, true) == expected);
2004 json j = {1u, 2u};
2007 CHECK(json::to_ubjson(j, true, true) == expected);
2008 CHECK(json::to_ubjson(j, true) == expected_size);
2013 json j = {200u, 201u};
2016 CHECK(json::to_ubjson(j, true, true) == expected);
2017 CHECK(json::to_ubjson(j, true) == expected_size);
2022 json j = {30000u, 30001u};
2025 CHECK(json::to_ubjson(j, true, true) == expected);
2026 CHECK(json::to_ubjson(j, true) == expected_size);
2031 json j = {70000u, 70001u};
2034 CHECK(json::to_ubjson(j, true, true) == expected);
2035 CHECK(json::to_ubjson(j, true) == expected_size);
2040 json j = {5000000000u, 5000000001u};
2043 CHECK(json::to_ubjson(j, true, true) == expected);
2044 CHECK(json::to_ubjson(j, true) == expected_size);
2050 json j = {json::value_t::discarded, json::value_t::discarded};
2052 CHECK(json::to_ubjson(j, true, true) == expected);
2057 TEST_CASE("Universal Binary JSON Specification Examples 1")
2061 json j = {{"passcode", nullptr}};
2063 CHECK(json::to_ubjson(j) == v);
2064 CHECK(json::from_ubjson(v) == j);
2069 json j = {"foo", "bar", "baz"};
2078 CHECK(json::to_ubjson(j) == v);
2079 CHECK(json::from_ubjson(v) == j);
2080 CHECK(json::from_ubjson(v2) == j);
2085 json j = {{"authorized", true}, {"verified", false}};
2089 CHECK(json::to_ubjson(j) == v);
2090 CHECK(json::from_ubjson(v) == j);
2095 json j =
2113 CHECK(json::to_ubjson(j) == v);
2114 CHECK(json::from_ubjson(v) == j);
2119 json j = {{"rolecode", "a"}, {"delim", ";"}};
2121 //CHECK(json::to_ubjson(j) == v);
2122 CHECK(json::from_ubjson(v) == j);
2129 json j = "hello";
2131 CHECK(json::to_ubjson(j) == v);
2132 CHECK(json::from_ubjson(v) == j);
2137 json j = "привет";
2139 CHECK(json::to_ubjson(j) == v);
2140 CHECK(json::from_ubjson(v) == j);
2145 json j = "مرحبا";
2147 CHECK(json::to_ubjson(j) == v);
2148 CHECK(json::from_ubjson(v) == j);
2157 json j = {nullptr, true, false, 4782345193, 153.132, "ham"};
2159 CHECK(json::to_ubjson(j) == v);
2160 CHECK(json::from_ubjson(v) == j);
2166 json j = {nullptr, true, false, 4782345193, 153.132, "ham"};
2168 CHECK(json::to_ubjson(j, true) == v);
2169 CHECK(json::from_ubjson(v) == j);
2175 json j = {nullptr, true, false, 4782345193, 153.132, "ham"};
2177 CHECK(json::to_ubjson(j, true, true) == v);
2178 CHECK(json::from_ubjson(v) == j);
2186 json j =
2204 CHECK(json::to_ubjson(j) == v);
2205 CHECK(json::from_ubjson(v) == j);
2210 json j =
2227 CHECK(json::to_ubjson(j, true) == v);
2228 CHECK(json::from_ubjson(v) == j);
2233 json j =
2250 CHECK(json::to_ubjson(j, true, true) == v);
2251 CHECK(json::from_ubjson(v) == j);
2262 json j = {29.97, 31.13, 67.0, 2.113, 23.888};
2271 CHECK(json::to_ubjson(j) == v);
2272 CHECK(json::from_ubjson(v) == j);
2278 json j = {29.97, 31.13, 67.0, 2.113, 23.888};
2286 CHECK(json::to_ubjson(j, true) == v);
2287 CHECK(json::from_ubjson(v) == j);
2293 json j = {29.97, 31.13, 67.0, 2.113, 23.888};
2301 CHECK(json::to_ubjson(j, true, true) == v);
2302 CHECK(json::from_ubjson(v) == j);
2311 json j = { {"lat", 29.976}, {"long", 31.131}, {"alt", 67.0} };
2318 CHECK(json::to_ubjson(j) == v);
2319 CHECK(json::from_ubjson(v) == j);
2325 json j = { {"lat", 29.976}, {"long", 31.131}, {"alt", 67.0} };
2331 CHECK(json::to_ubjson(j, true) == v);
2332 CHECK(json::from_ubjson(v) == j);
2338 json j = { {"lat", 29.976}, {"long", 31.131}, {"alt", 67.0} };
2344 CHECK(json::to_ubjson(j, true, true) == v);
2345 CHECK(json::from_ubjson(v) == j);
2354 CHECK(json::from_ubjson(v) == json::array());
2360 CHECK(json::from_ubjson(v) == json({ {"name", nullptr}, {"password", nullptr}, {"email", nullptr} }));
2382 auto res = json::from_ubjson(std::vector<uint8_t>(1, byte));
2384 catch (const json::parse_error& e)
2408 TEST_DATA_DIRECTORY "/json_nlohmann_tests/all_unicode.json",
2409 TEST_DATA_DIRECTORY "/json.org/1.json",
2410 TEST_DATA_DIRECTORY "/json.org/2.json",
2411 TEST_DATA_DIRECTORY "/json.org/3.json",
2412 TEST_DATA_DIRECTORY "/json.org/4.json",
2413 TEST_DATA_DIRECTORY "/json.org/5.json",
2414 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip01.json",
2415 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip02.json",
2416 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip03.json",
2417 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip04.json",
2418 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip05.json",
2419 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip06.json",
2420 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip07.json",
2421 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip08.json",
2422 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip09.json",
2423 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip10.json",
2424 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip11.json",
2425 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip12.json",
2426 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip13.json",
2427 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip14.json",
2428 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip15.json",
2429 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip16.json",
2430 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip17.json",
2431 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip18.json",
2432 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip19.json",
2433 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip20.json",
2434 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip21.json",
2435 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip22.json",
2436 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip23.json",
2437 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip24.json",
2438 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip25.json",
2439 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip26.json",
2440 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip27.json",
2441 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip28.json",
2442 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip29.json",
2443 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip30.json",
2444 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip31.json",
2445 TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip32.json",
2446 TEST_DATA_DIRECTORY "/json_testsuite/sample.json",
2447 TEST_DATA_DIRECTORY "/json_tests/pass1.json",
2448 TEST_DATA_DIRECTORY "/json_tests/pass2.json",
2449 TEST_DATA_DIRECTORY "/json_tests/pass3.json"
2456 // parse JSON file
2458 json j1 = json::parse(f_json);
2462 json j2;
2463 CHECK_NOTHROW(j2 = json::from_ubjson(packed));
2465 // compare parsed JSON values
2471 // parse JSON file
2473 json j1 = json::parse(f_json);
2477 json j2;
2478 CHECK_NOTHROW(j2 = json::from_ubjson(f_ubjson));
2480 // compare parsed JSON values
2486 // parse JSON file
2488 json j1 = json::parse(f_json);
2492 json j2;
2493 CHECK_NOTHROW(j2 = json::from_ubjson({packed.data(), packed.size()}));
2495 // compare parsed JSON values
2501 // parse JSON file
2503 json j1 = json::parse(f_json);
2511 json::to_ubjson(j1, vec);