From af3f87e84e63e883701502f5c6338d025593362b Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 29 Nov 2023 21:46:01 +0100 Subject: [PATCH] :art: use Clang-Format --- .clang-format | 5 +- .github/workflows/ubuntu.yml | 16 +- .../nlohmann/detail/conversions/from_json.hpp | 4 +- .../nlohmann/detail/conversions/to_chars.hpp | 62 +- .../nlohmann/detail/conversions/to_json.hpp | 6 +- include/nlohmann/detail/exceptions.hpp | 16 +- .../nlohmann/detail/input/binary_reader.hpp | 40 +- .../nlohmann/detail/input/input_adapters.hpp | 2 +- include/nlohmann/detail/input/json_sax.hpp | 14 +- include/nlohmann/detail/input/lexer.hpp | 38 +- .../nlohmann/detail/iterators/iter_impl.hpp | 9 +- .../detail/iterators/primitive_iterator.hpp | 4 +- include/nlohmann/detail/json_pointer.hpp | 5 +- include/nlohmann/detail/meta/cpp_future.hpp | 2 +- .../nlohmann/detail/output/binary_writer.hpp | 17 +- include/nlohmann/detail/output/serializer.hpp | 40 +- include/nlohmann/detail/string_escape.hpp | 8 +- include/nlohmann/detail/value_t.hpp | 4 +- include/nlohmann/json.hpp | 68 +- include/nlohmann/ordered_map.hpp | 26 +- single_include/nlohmann/json.hpp | 368 +++-- single_include/nlohmann/json_fwd.hpp | 3 - tests/abi/config/custom.cpp | 2 +- tests/abi/config/default.cpp | 2 +- tests/abi/config/noversion.cpp | 2 +- tests/abi/diag/diag_off.cpp | 2 +- tests/abi/diag/diag_on.cpp | 2 +- tests/benchmarks/src/benchmarks.cpp | 4 +- tests/cuda_example/json_cuda.cu | 2 +- tests/src/unit-32bit.cpp | 8 +- tests/src/unit-algorithms.cpp | 90 +- tests/src/unit-allocator.cpp | 4 +- tests/src/unit-alt-string.cpp | 6 +- tests/src/unit-binary_formats.cpp | 2 +- tests/src/unit-bjdata.cpp | 1061 +++++++------ tests/src/unit-bson.cpp | 593 ++++--- .../src/unit-byte_container_with_subtype.cpp | 2 +- tests/src/unit-capacity.cpp | 24 +- tests/src/unit-cbor.cpp | 1142 +++++++------- tests/src/unit-class_const_iterator.cpp | 24 +- tests/src/unit-class_iterator.cpp | 24 +- tests/src/unit-class_parser.cpp | 32 +- tests/src/unit-comparison.cpp | 290 ++-- tests/src/unit-concepts.cpp | 4 +- tests/src/unit-constructor1.cpp | 251 ++- tests/src/unit-constructor2.cpp | 22 +- tests/src/unit-convenience.cpp | 4 +- tests/src/unit-conversions.cpp | 128 +- tests/src/unit-custom-base-class.cpp | 32 +- tests/src/unit-deserialization.cpp | 331 ++-- tests/src/unit-diagnostics.cpp | 12 +- tests/src/unit-element_access1.cpp | 102 +- tests/src/unit-element_access2.cpp | 164 +- tests/src/unit-hash.cpp | 20 +- tests/src/unit-inspection.cpp | 19 +- tests/src/unit-items.cpp | 74 +- tests/src/unit-iterators1.cpp | 8 +- tests/src/unit-iterators2.cpp | 28 +- tests/src/unit-json_patch.cpp | 106 +- tests/src/unit-json_pointer.cpp | 115 +- tests/src/unit-meta.cpp | 2 +- tests/src/unit-modifiers.cpp | 252 +-- tests/src/unit-msgpack.cpp | 466 +++--- .../src/unit-no-mem-leak-on-adl-serialize.cpp | 6 +- tests/src/unit-ordered_json.cpp | 12 +- tests/src/unit-ordered_map.cpp | 16 +- tests/src/unit-pointer_access.cpp | 10 +- tests/src/unit-readme.cpp | 54 +- tests/src/unit-reference_access.cpp | 16 +- tests/src/unit-regression1.cpp | 184 +-- tests/src/unit-regression2.cpp | 79 +- tests/src/unit-serialization.cpp | 32 +- tests/src/unit-testsuites.cpp | 1373 +++++++++-------- tests/src/unit-ubjson.cpp | 598 +++---- tests/src/unit-udt.cpp | 64 +- tests/src/unit-udt_macro.cpp | 16 +- tests/src/unit-user_defined_input.cpp | 8 +- 77 files changed, 4290 insertions(+), 4393 deletions(-) diff --git a/.clang-format b/.clang-format index a7fdf1a55..a62584e64 100644 --- a/.clang-format +++ b/.clang-format @@ -46,7 +46,7 @@ BreakStringLiterals: false ColumnLimit: 160 CompactNamespaces: false ConstructorInitializerIndentWidth: 2 -Cpp11BracedListStyle: true +Cpp11BracedListStyle: false PointerAlignment: Left FixNamespaceComments: true #IndentCaseBlocks: false @@ -92,3 +92,6 @@ IncludeCategories: Priority: 3 - Regex: '.*' Priority: 4 + +Macros: + - JSON_PRIVATE_UNLESS_TESTED=private diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index acf2e23ee..ad35aa975 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -43,10 +43,20 @@ jobs: ci_static_analysis: runs-on: ubuntu-latest - container: silkeh/clang:dev + container: ghcr.io/nlohmann/json-ci:v2.4.0 strategy: matrix: - target: [ci_cppcheck, ci_test_valgrind, ci_test_amalgamation, ci_test_single_header, ci_single_binaries, ci_infer] + target: [ci_cppcheck, ci_test_valgrind, ci_test_single_header, ci_single_binaries, ci_infer] + steps: + - uses: actions/checkout@v3 + - name: Run CMake + run: cmake -S . -B build -DJSON_CI=On + - name: Build + run: cmake --build build --target ${{ matrix.target }} + + ci_test_amalgamation: + runs-on: ubuntu-latest + container: silkeh/clang:dev steps: - uses: actions/checkout@v3 - name: Get latest CMake and ninja @@ -54,7 +64,7 @@ jobs: - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build - run: cmake --build build --target ${{ matrix.target }} + run: cmake --build build --target ci_test_amalgamation ci_static_analysis_ubuntu: runs-on: ubuntu-latest diff --git a/include/nlohmann/detail/conversions/from_json.hpp b/include/nlohmann/detail/conversions/from_json.hpp index d3af3b968..122a5445f 100644 --- a/include/nlohmann/detail/conversions/from_json.hpp +++ b/include/nlohmann/detail/conversions/from_json.hpp @@ -252,7 +252,7 @@ template std::array from_json_inplace_array_impl(BasicJsonType&& j, identity_tag> /*unused*/, index_sequence /*unused*/) { - return {{std::forward(j).at(Idx).template get()...}}; + return { { std::forward(j).at(Idx).template get()... } }; } template @@ -353,7 +353,7 @@ std::tuple from_json_tuple_impl_base(BasicJsonType&& j, index_sequence< template std::pair from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<0> /*unused*/) { - return {std::forward(j).at(0).template get(), std::forward(j).at(1).template get()}; + return { std::forward(j).at(0).template get(), std::forward(j).at(1).template get() }; } template diff --git a/include/nlohmann/detail/conversions/to_chars.hpp b/include/nlohmann/detail/conversions/to_chars.hpp index f1dabf487..6ecc6e085 100644 --- a/include/nlohmann/detail/conversions/to_chars.hpp +++ b/include/nlohmann/detail/conversions/to_chars.hpp @@ -75,7 +75,7 @@ struct diyfp // f * 2^e JSON_ASSERT(x.e == y.e); JSON_ASSERT(x.f >= y.f); - return {x.f - y.f, x.e}; + return { x.f - y.f, x.e }; } /*! @@ -136,11 +136,11 @@ struct diyfp // f * 2^e // Effectively we only need to add the highest bit in p_lo to p_hi (and // Q_hi + 1 does not overflow). - Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up + Q += std::uint64_t{ 1 } << (64u - 32u - 1u); // round, ties up const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u); - return {h, x.e + y.e + 64}; + return { h, x.e + y.e + 64 }; } /*! @@ -171,7 +171,7 @@ struct diyfp // f * 2^e JSON_ASSERT(delta >= 0); JSON_ASSERT(((x.f << delta) >> delta) == x.f); - return {x.f << delta, target_exponent}; + return { x.f << delta, target_exponent }; } }; @@ -206,7 +206,7 @@ boundaries compute_boundaries(FloatType value) constexpr int kPrecision = std::numeric_limits::digits; // = p (includes the hidden bit) constexpr int kBias = std::numeric_limits::max_exponent - 1 + (kPrecision - 1); constexpr int kMinExp = 1 - kBias; - constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1) + constexpr std::uint64_t kHiddenBit = std::uint64_t{ 1 } << (kPrecision - 1); // = 2^(p-1) using bits_type = typename std::conditional::type; @@ -249,7 +249,7 @@ boundaries compute_boundaries(FloatType value) // Determine w- = m- such that e_(w-) = e_(w+). const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); - return {diyfp::normalize(v), w_minus, w_plus}; + return { diyfp::normalize(v), w_minus, w_plus }; } // Given normalized diyfp w, Grisu needs to find a (normalized) cached @@ -379,28 +379,28 @@ inline cached_power get_cached_power_for_binary_exponent(int e) constexpr int kCachedPowersMinDecExp = -300; constexpr int kCachedPowersDecStep = 8; - static constexpr std::array kCachedPowers = {{ - {0xAB70FE17C79AC6CA, -1060, -300}, {0xFF77B1FCBEBCDC4F, -1034, -292}, {0xBE5691EF416BD60C, -1007, -284}, {0x8DD01FAD907FFC3C, -980, -276}, - {0xD3515C2831559A83, -954, -268}, {0x9D71AC8FADA6C9B5, -927, -260}, {0xEA9C227723EE8BCB, -901, -252}, {0xAECC49914078536D, -874, -244}, - {0x823C12795DB6CE57, -847, -236}, {0xC21094364DFB5637, -821, -228}, {0x9096EA6F3848984F, -794, -220}, {0xD77485CB25823AC7, -768, -212}, - {0xA086CFCD97BF97F4, -741, -204}, {0xEF340A98172AACE5, -715, -196}, {0xB23867FB2A35B28E, -688, -188}, {0x84C8D4DFD2C63F3B, -661, -180}, - {0xC5DD44271AD3CDBA, -635, -172}, {0x936B9FCEBB25C996, -608, -164}, {0xDBAC6C247D62A584, -582, -156}, {0xA3AB66580D5FDAF6, -555, -148}, - {0xF3E2F893DEC3F126, -529, -140}, {0xB5B5ADA8AAFF80B8, -502, -132}, {0x87625F056C7C4A8B, -475, -124}, {0xC9BCFF6034C13053, -449, -116}, - {0x964E858C91BA2655, -422, -108}, {0xDFF9772470297EBD, -396, -100}, {0xA6DFBD9FB8E5B88F, -369, -92}, {0xF8A95FCF88747D94, -343, -84}, - {0xB94470938FA89BCF, -316, -76}, {0x8A08F0F8BF0F156B, -289, -68}, {0xCDB02555653131B6, -263, -60}, {0x993FE2C6D07B7FAC, -236, -52}, - {0xE45C10C42A2B3B06, -210, -44}, {0xAA242499697392D3, -183, -36}, {0xFD87B5F28300CA0E, -157, -28}, {0xBCE5086492111AEB, -130, -20}, - {0x8CBCCC096F5088CC, -103, -12}, {0xD1B71758E219652C, -77, -4}, {0x9C40000000000000, -50, 4}, {0xE8D4A51000000000, -24, 12}, - {0xAD78EBC5AC620000, 3, 20}, {0x813F3978F8940984, 30, 28}, {0xC097CE7BC90715B3, 56, 36}, {0x8F7E32CE7BEA5C70, 83, 44}, - {0xD5D238A4ABE98068, 109, 52}, {0x9F4F2726179A2245, 136, 60}, {0xED63A231D4C4FB27, 162, 68}, {0xB0DE65388CC8ADA8, 189, 76}, - {0x83C7088E1AAB65DB, 216, 84}, {0xC45D1DF942711D9A, 242, 92}, {0x924D692CA61BE758, 269, 100}, {0xDA01EE641A708DEA, 295, 108}, - {0xA26DA3999AEF774A, 322, 116}, {0xF209787BB47D6B85, 348, 124}, {0xB454E4A179DD1877, 375, 132}, {0x865B86925B9BC5C2, 402, 140}, - {0xC83553C5C8965D3D, 428, 148}, {0x952AB45CFA97A0B3, 455, 156}, {0xDE469FBD99A05FE3, 481, 164}, {0xA59BC234DB398C25, 508, 172}, - {0xF6C69A72A3989F5C, 534, 180}, {0xB7DCBF5354E9BECE, 561, 188}, {0x88FCF317F22241E2, 588, 196}, {0xCC20CE9BD35C78A5, 614, 204}, - {0x98165AF37B2153DF, 641, 212}, {0xE2A0B5DC971F303A, 667, 220}, {0xA8D9D1535CE3B396, 694, 228}, {0xFB9B7CD9A4A7443C, 720, 236}, - {0xBB764C4CA7A44410, 747, 244}, {0x8BAB8EEFB6409C1A, 774, 252}, {0xD01FEF10A657842C, 800, 260}, {0x9B10A4E5E9913129, 827, 268}, - {0xE7109BFBA19C0C9D, 853, 276}, {0xAC2820D9623BF429, 880, 284}, {0x80444B5E7AA7CF85, 907, 292}, {0xBF21E44003ACDD2D, 933, 300}, - {0x8E679C2F5E44FF8F, 960, 308}, {0xD433179D9C8CB841, 986, 316}, {0x9E19DB92B4E31BA9, 1013, 324}, - }}; + static constexpr std::array kCachedPowers = { { + { 0xAB70FE17C79AC6CA, -1060, -300 }, { 0xFF77B1FCBEBCDC4F, -1034, -292 }, { 0xBE5691EF416BD60C, -1007, -284 }, { 0x8DD01FAD907FFC3C, -980, -276 }, + { 0xD3515C2831559A83, -954, -268 }, { 0x9D71AC8FADA6C9B5, -927, -260 }, { 0xEA9C227723EE8BCB, -901, -252 }, { 0xAECC49914078536D, -874, -244 }, + { 0x823C12795DB6CE57, -847, -236 }, { 0xC21094364DFB5637, -821, -228 }, { 0x9096EA6F3848984F, -794, -220 }, { 0xD77485CB25823AC7, -768, -212 }, + { 0xA086CFCD97BF97F4, -741, -204 }, { 0xEF340A98172AACE5, -715, -196 }, { 0xB23867FB2A35B28E, -688, -188 }, { 0x84C8D4DFD2C63F3B, -661, -180 }, + { 0xC5DD44271AD3CDBA, -635, -172 }, { 0x936B9FCEBB25C996, -608, -164 }, { 0xDBAC6C247D62A584, -582, -156 }, { 0xA3AB66580D5FDAF6, -555, -148 }, + { 0xF3E2F893DEC3F126, -529, -140 }, { 0xB5B5ADA8AAFF80B8, -502, -132 }, { 0x87625F056C7C4A8B, -475, -124 }, { 0xC9BCFF6034C13053, -449, -116 }, + { 0x964E858C91BA2655, -422, -108 }, { 0xDFF9772470297EBD, -396, -100 }, { 0xA6DFBD9FB8E5B88F, -369, -92 }, { 0xF8A95FCF88747D94, -343, -84 }, + { 0xB94470938FA89BCF, -316, -76 }, { 0x8A08F0F8BF0F156B, -289, -68 }, { 0xCDB02555653131B6, -263, -60 }, { 0x993FE2C6D07B7FAC, -236, -52 }, + { 0xE45C10C42A2B3B06, -210, -44 }, { 0xAA242499697392D3, -183, -36 }, { 0xFD87B5F28300CA0E, -157, -28 }, { 0xBCE5086492111AEB, -130, -20 }, + { 0x8CBCCC096F5088CC, -103, -12 }, { 0xD1B71758E219652C, -77, -4 }, { 0x9C40000000000000, -50, 4 }, { 0xE8D4A51000000000, -24, 12 }, + { 0xAD78EBC5AC620000, 3, 20 }, { 0x813F3978F8940984, 30, 28 }, { 0xC097CE7BC90715B3, 56, 36 }, { 0x8F7E32CE7BEA5C70, 83, 44 }, + { 0xD5D238A4ABE98068, 109, 52 }, { 0x9F4F2726179A2245, 136, 60 }, { 0xED63A231D4C4FB27, 162, 68 }, { 0xB0DE65388CC8ADA8, 189, 76 }, + { 0x83C7088E1AAB65DB, 216, 84 }, { 0xC45D1DF942711D9A, 242, 92 }, { 0x924D692CA61BE758, 269, 100 }, { 0xDA01EE641A708DEA, 295, 108 }, + { 0xA26DA3999AEF774A, 322, 116 }, { 0xF209787BB47D6B85, 348, 124 }, { 0xB454E4A179DD1877, 375, 132 }, { 0x865B86925B9BC5C2, 402, 140 }, + { 0xC83553C5C8965D3D, 428, 148 }, { 0x952AB45CFA97A0B3, 455, 156 }, { 0xDE469FBD99A05FE3, 481, 164 }, { 0xA59BC234DB398C25, 508, 172 }, + { 0xF6C69A72A3989F5C, 534, 180 }, { 0xB7DCBF5354E9BECE, 561, 188 }, { 0x88FCF317F22241E2, 588, 196 }, { 0xCC20CE9BD35C78A5, 614, 204 }, + { 0x98165AF37B2153DF, 641, 212 }, { 0xE2A0B5DC971F303A, 667, 220 }, { 0xA8D9D1535CE3B396, 694, 228 }, { 0xFB9B7CD9A4A7443C, 720, 236 }, + { 0xBB764C4CA7A44410, 747, 244 }, { 0x8BAB8EEFB6409C1A, 774, 252 }, { 0xD01FEF10A657842C, 800, 260 }, { 0x9B10A4E5E9913129, 827, 268 }, + { 0xE7109BFBA19C0C9D, 853, 276 }, { 0xAC2820D9623BF429, 880, 284 }, { 0x80444B5E7AA7CF85, 907, 292 }, { 0xBF21E44003ACDD2D, 933, 300 }, + { 0x8E679C2F5E44FF8F, 960, 308 }, { 0xD433179D9C8CB841, 986, 316 }, { 0x9E19DB92B4E31BA9, 1013, 324 }, + } }; // This computation gives exactly the same results for k as // k = ceil((kAlpha - e - 1) * 0.30102999566398114) @@ -548,7 +548,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, d // = ((p1 ) * 2^-e + (p2 )) * 2^e // = p1 + p2 * 2^e - const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e); + const diyfp one(std::uint64_t{ 1 } << -M_plus.e, M_plus.e); auto p1 = static_cast(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e @@ -613,7 +613,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, d // Note: // Since rest and delta share the same exponent e, it suffices to // compare the significands. - const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2; + const std::uint64_t rest = (std::uint64_t{ p1 } << -one.e) + p2; if (rest <= delta) { // V = buffer * 10^n, with M- <= V <= M+. @@ -629,7 +629,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, d // // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e // - const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e; + const std::uint64_t ten_n = std::uint64_t{ pow10 } << -one.e; grisu2_round(buffer, length, dist, delta, rest, ten_n); return; diff --git a/include/nlohmann/detail/conversions/to_json.hpp b/include/nlohmann/detail/conversions/to_json.hpp index 4fd3d860a..f69205eaf 100644 --- a/include/nlohmann/detail/conversions/to_json.hpp +++ b/include/nlohmann/detail/conversions/to_json.hpp @@ -392,20 +392,20 @@ template::value && std::is_constructible::value, int> = 0> inline void to_json(BasicJsonType& j, const std::pair& p) { - j = {p.first, p.second}; + j = { p.first, p.second }; } // for https://github.com/nlohmann/json/pull/1134 template>::value, int> = 0> inline void to_json(BasicJsonType& j, const T& b) { - j = {{b.key(), b.value()}}; + j = { { b.key(), b.value() } }; } template inline void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence /*unused*/) { - j = {std::get(t)...}; + j = { std::get(t)... }; } template::value, int> = 0> diff --git a/include/nlohmann/detail/exceptions.hpp b/include/nlohmann/detail/exceptions.hpp index ac4014b67..98e415325 100644 --- a/include/nlohmann/detail/exceptions.hpp +++ b/include/nlohmann/detail/exceptions.hpp @@ -51,8 +51,8 @@ class exception : public std::exception JSON_HEDLEY_NON_NULL(3) exception(int id_, const char* what_arg) : id(id_) - , m(what_arg) - {} // NOLINT(bugprone-throw-keyword-missing) + , m(what_arg) // NOLINT(bugprone-throw-keyword-missing) + {} static std::string name(const std::string& ename, int id_) { @@ -150,7 +150,7 @@ class parse_error : public exception static parse_error create(int id_, const position_t& pos, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("parse_error", id_), "parse error", position_string(pos), ": ", exception::diagnostics(context), what_arg); - return {id_, pos.chars_read_total, w.c_str()}; + return { id_, pos.chars_read_total, w.c_str() }; } template::value, int> = 0> @@ -162,7 +162,7 @@ class parse_error : public exception ": ", exception::diagnostics(context), what_arg); - return {id_, byte_, w.c_str()}; + return { id_, byte_, w.c_str() }; } /*! @@ -197,7 +197,7 @@ class invalid_iterator : public exception static invalid_iterator create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("invalid_iterator", id_), exception::diagnostics(context), what_arg); - return {id_, w.c_str()}; + return { id_, w.c_str() }; } private: @@ -216,7 +216,7 @@ class type_error : public exception static type_error create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("type_error", id_), exception::diagnostics(context), what_arg); - return {id_, w.c_str()}; + return { id_, w.c_str() }; } private: @@ -235,7 +235,7 @@ class out_of_range : public exception static out_of_range create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("out_of_range", id_), exception::diagnostics(context), what_arg); - return {id_, w.c_str()}; + return { id_, w.c_str() }; } private: @@ -254,7 +254,7 @@ class other_error : public exception static other_error create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("other_error", id_), exception::diagnostics(context), what_arg); - return {id_, w.c_str()}; + return { id_, w.c_str() }; } private: diff --git a/include/nlohmann/detail/input/binary_reader.hpp b/include/nlohmann/detail/input/binary_reader.hpp index 4d7316f6d..91ac83d49 100644 --- a/include/nlohmann/detail/input/binary_reader.hpp +++ b/include/nlohmann/detail/input/binary_reader.hpp @@ -340,12 +340,12 @@ class binary_reader default: // anything else not supported (yet) { - std::array cr{{}}; - static_cast((std::snprintf)(cr.data(), + std::array cr{ {} }; + static_cast((std::snprintf)(cr.data(), // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) cr.size(), "%.2hhX", - static_cast(element_type))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - const std::string cr_str{cr.data()}; + static_cast(element_type))); + const std::string cr_str{ cr.data() }; return sax->parse_error(element_type_parse_position, cr_str, parse_error::create(114, element_type_parse_position, concat("Unsupported BSON record type 0x", cr_str), nullptr)); @@ -2970,10 +2970,10 @@ class binary_reader */ std::string get_token_string() const { - std::array cr{{}}; + std::array cr{ {} }; static_cast( (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(current))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - return std::string{cr.data()}; + return std::string{ cr.data() }; } /*! @@ -3041,22 +3041,22 @@ class binary_reader #define JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_ make_array('F', 'H', 'N', 'S', 'T', 'Z', '[', '{') #define JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_ \ - make_array(bjd_type{'C', "char"}, \ - bjd_type{'D', "double"}, \ - bjd_type{'I', "int16"}, \ - bjd_type{'L', "int64"}, \ - bjd_type{'M', "uint64"}, \ - bjd_type{'U', "uint8"}, \ - bjd_type{'d', "single"}, \ - bjd_type{'i', "int8"}, \ - bjd_type{'l', "int32"}, \ - bjd_type{'m', "uint32"}, \ - bjd_type{'u', "uint16"}) + make_array(bjd_type{ 'C', "char" }, \ + bjd_type{ 'D', "double" }, \ + bjd_type{ 'I', "int16" }, \ + bjd_type{ 'L', "int64" }, \ + bjd_type{ 'M', "uint64" }, \ + bjd_type{ 'U', "uint8" }, \ + bjd_type{ 'd', "single" }, \ + bjd_type{ 'i', "int8" }, \ + bjd_type{ 'l', "int32" }, \ + bjd_type{ 'm', "uint32" }, \ + bjd_type{ 'u', "uint16" }) JSON_PRIVATE_UNLESS_TESTED : - // lookup tables - // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) - const decltype(JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_) bjd_optimized_type_markers = JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_; + // lookup tables + // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) + const decltype(JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_) bjd_optimized_type_markers = JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_; using bjd_type = std::pair; // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) diff --git a/include/nlohmann/detail/input/input_adapters.hpp b/include/nlohmann/detail/input/input_adapters.hpp index ae38ce465..7e104d072 100644 --- a/include/nlohmann/detail/input/input_adapters.hpp +++ b/include/nlohmann/detail/input/input_adapters.hpp @@ -338,7 +338,7 @@ class wide_string_input_adapter } /// a buffer for UTF-8 bytes - std::array::int_type, 4> utf8_bytes = {{0, 0, 0, 0}}; + std::array::int_type, 4> utf8_bytes = { { 0, 0, 0, 0 } }; /// index to the utf8_codes array for the next valid byte std::size_t utf8_bytes_index = 0; diff --git a/include/nlohmann/detail/input/json_sax.hpp b/include/nlohmann/detail/input/json_sax.hpp index 864f4a167..966969fe2 100644 --- a/include/nlohmann/detail/input/json_sax.hpp +++ b/include/nlohmann/detail/input/json_sax.hpp @@ -568,7 +568,7 @@ class json_sax_dom_callback_parser // container if (!keep_stack.back()) { - return {false, nullptr}; + return { false, nullptr }; } // create value @@ -580,20 +580,20 @@ class json_sax_dom_callback_parser // do not handle this value if we just learnt it shall be discarded if (!keep) { - return {false, nullptr}; + return { false, nullptr }; } if (ref_stack.empty()) { root = std::move(value); - return {true, &root}; + return { true, &root }; } // skip this value if we already decided to skip the parent // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360) if (!ref_stack.back()) { - return {false, nullptr}; + return { false, nullptr }; } // we now only expect arrays and objects @@ -603,7 +603,7 @@ class json_sax_dom_callback_parser if (ref_stack.back()->is_array()) { ref_stack.back()->m_data.m_value.array->emplace_back(std::move(value)); - return {true, &(ref_stack.back()->m_data.m_value.array->back())}; + return { true, &(ref_stack.back()->m_data.m_value.array->back()) }; } // object @@ -615,12 +615,12 @@ class json_sax_dom_callback_parser if (!store_element) { - return {false, nullptr}; + return { false, nullptr }; } JSON_ASSERT(object_element); *object_element = std::move(value); - return {true, object_element}; + return { true, object_element }; } /// the parsed JSON value diff --git a/include/nlohmann/detail/input/lexer.hpp b/include/nlohmann/detail/input/lexer.hpp index a132e2c98..32ad58e06 100644 --- a/include/nlohmann/detail/input/lexer.hpp +++ b/include/nlohmann/detail/input/lexer.hpp @@ -173,7 +173,7 @@ class lexer : public lexer_base JSON_ASSERT(current == 'u'); int codepoint = 0; - const auto factors = {12u, 8u, 4u, 0u}; + const auto factors = { 12u, 8u, 4u, 0u }; for (const auto factor : factors) { get(); @@ -745,7 +745,7 @@ class lexer : public lexer_base case 0xDE: case 0xDF: { - if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({0x80, 0xBF}))) + if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({ 0x80, 0xBF }))) { return token_type::parse_error; } @@ -755,7 +755,7 @@ class lexer : public lexer_base // U+0800..U+0FFF: bytes E0 A0..BF 80..BF case 0xE0: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0xA0, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -779,7 +779,7 @@ class lexer : public lexer_base case 0xEE: case 0xEF: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -789,7 +789,7 @@ class lexer : public lexer_base // U+D000..U+D7FF: bytes ED 80..9F 80..BF case 0xED: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0x9F, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -799,7 +799,7 @@ class lexer : public lexer_base // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF case 0xF0: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -811,7 +811,7 @@ class lexer : public lexer_base case 0xF2: case 0xF3: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -821,7 +821,7 @@ class lexer : public lexer_base // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF case 0xF4: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -1453,9 +1453,9 @@ scan_number_done: if (static_cast(c) <= '\x1F') { // escape control characters - std::array cs{{}}; - static_cast(( - std::snprintf)(cs.data(), cs.size(), "", static_cast(c))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + std::array cs{ {} }; + static_cast(( // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + std::snprintf)(cs.data(), cs.size(), "", static_cast(c))); result += cs.data(); } else @@ -1549,22 +1549,24 @@ scan_number_done: case 't': { std::array true_literal = { - {static_cast('t'), static_cast('r'), static_cast('u'), static_cast('e')}}; + { static_cast('t'), static_cast('r'), static_cast('u'), static_cast('e') } + }; return scan_literal(true_literal.data(), true_literal.size(), token_type::literal_true); } case 'f': { - std::array false_literal = {{static_cast('f'), - static_cast('a'), - static_cast('l'), - static_cast('s'), - static_cast('e')}}; + std::array false_literal = { { static_cast('f'), + static_cast('a'), + static_cast('l'), + static_cast('s'), + static_cast('e') } }; return scan_literal(false_literal.data(), false_literal.size(), token_type::literal_false); } case 'n': { std::array null_literal = { - {static_cast('n'), static_cast('u'), static_cast('l'), static_cast('l')}}; + { static_cast('n'), static_cast('u'), static_cast('l'), static_cast('l') } + }; return scan_literal(null_literal.data(), null_literal.size(), token_type::literal_null); } diff --git a/include/nlohmann/detail/iterators/iter_impl.hpp b/include/nlohmann/detail/iterators/iter_impl.hpp index bb612d7fb..da27f6c58 100644 --- a/include/nlohmann/detail/iterators/iter_impl.hpp +++ b/include/nlohmann/detail/iterators/iter_impl.hpp @@ -192,12 +192,11 @@ class iter_impl // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec } JSON_PRIVATE_UNLESS_TESTED : - /*! + /*! @brief set the iterator to the first value @pre The iterator is initialized; i.e. `m_object != nullptr`. */ - void - set_begin() noexcept + void set_begin() noexcept { JSON_ASSERT(m_object != nullptr); @@ -746,8 +745,8 @@ class iter_impl // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec } JSON_PRIVATE_UNLESS_TESTED : - /// associated JSON instance - pointer m_object = nullptr; + /// associated JSON instance + pointer m_object = nullptr; /// the actual iterator of the associated instance internal_iterator::type> m_it{}; }; diff --git a/include/nlohmann/detail/iterators/primitive_iterator.hpp b/include/nlohmann/detail/iterators/primitive_iterator.hpp index 4c651a2a3..ab82623c7 100644 --- a/include/nlohmann/detail/iterators/primitive_iterator.hpp +++ b/include/nlohmann/detail/iterators/primitive_iterator.hpp @@ -34,8 +34,8 @@ class primitive_iterator_t static constexpr difference_type end_value = begin_value + 1; JSON_PRIVATE_UNLESS_TESTED : - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); public: constexpr difference_type get_value() const noexcept diff --git a/include/nlohmann/detail/json_pointer.hpp b/include/nlohmann/detail/json_pointer.hpp index 5f3cde8a1..9b6e243e3 100644 --- a/include/nlohmann/detail/json_pointer.hpp +++ b/include/nlohmann/detail/json_pointer.hpp @@ -242,7 +242,8 @@ class json_pointer return static_cast(res); } - JSON_PRIVATE_UNLESS_TESTED : json_pointer top() const + JSON_PRIVATE_UNLESS_TESTED : + json_pointer top() const { if (JSON_HEDLEY_UNLIKELY(empty())) { @@ -250,7 +251,7 @@ class json_pointer } json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; + result.reference_tokens = { reference_tokens[0] }; return result; } diff --git a/include/nlohmann/detail/meta/cpp_future.hpp b/include/nlohmann/detail/meta/cpp_future.hpp index 57e843034..b9f6f62db 100644 --- a/include/nlohmann/detail/meta/cpp_future.hpp +++ b/include/nlohmann/detail/meta/cpp_future.hpp @@ -167,7 +167,7 @@ constexpr T static_const::value; template inline constexpr std::array make_array(Args&&... args) { - return std::array{{static_cast(std::forward(args))...}}; + return std::array{ { static_cast(std::forward(args))... } }; } } // namespace detail diff --git a/include/nlohmann/detail/output/binary_writer.hpp b/include/nlohmann/detail/output/binary_writer.hpp index 8c0137e2f..0c478f744 100644 --- a/include/nlohmann/detail/output/binary_writer.hpp +++ b/include/nlohmann/detail/output/binary_writer.hpp @@ -789,7 +789,7 @@ class binary_writer return ubjson_prefix(v, use_bjdata) == first_prefix; }); - std::vector bjdx = {'[', '{', 'S', 'H', 'T', 'F', 'N', 'Z'}; // excluded markers in bjdata optimized type + std::vector bjdx = { '[', '{', 'S', 'H', 'T', 'F', 'N', 'Z' }; // excluded markers in bjdata optimized type if (same_prefix && !(use_bjdata && std::find(bjdx.begin(), bjdx.end(), first_prefix) != bjdx.end())) { @@ -887,7 +887,7 @@ class binary_writer return ubjson_prefix(v, use_bjdata) == first_prefix; }); - std::vector bjdx = {'[', '{', 'S', 'H', 'T', 'F', 'N', 'Z'}; // excluded markers in bjdata optimized type + std::vector bjdx = { '[', '{', 'S', 'H', 'T', 'F', 'N', 'Z' }; // excluded markers in bjdata optimized type if (same_prefix && !(use_bjdata && std::find(bjdx.begin(), bjdx.end(), first_prefix) != bjdx.end())) { @@ -1579,17 +1579,8 @@ class binary_writer */ bool write_bjdata_ndarray(const typename BasicJsonType::object_t& value, const bool use_count, const bool use_type) { - std::map bjdtype = {{"uint8", 'U'}, - {"int8", 'i'}, - {"uint16", 'u'}, - {"int16", 'I'}, - {"uint32", 'm'}, - {"int32", 'l'}, - {"uint64", 'M'}, - {"int64", 'L'}, - {"single", 'd'}, - {"double", 'D'}, - {"char", 'C'}}; + std::map bjdtype = { { "uint8", 'U' }, { "int8", 'i' }, { "uint16", 'u' }, { "int16", 'I' }, { "uint32", 'm' }, { "int32", 'l' }, + { "uint64", 'M' }, { "int64", 'L' }, { "single", 'd' }, { "double", 'D' }, { "char", 'C' } }; string_t key = "_ArrayType_"; auto it = bjdtype.find(static_cast(value.at(key))); diff --git a/include/nlohmann/detail/output/serializer.hpp b/include/nlohmann/detail/output/serializer.hpp index d7ac8d78b..137a471e4 100644 --- a/include/nlohmann/detail/output/serializer.hpp +++ b/include/nlohmann/detail/output/serializer.hpp @@ -365,7 +365,7 @@ class serializer } JSON_PRIVATE_UNLESS_TESTED : - /*! + /*! @brief dump escaped string Escape a string by replacing certain special characters by a sequence of an @@ -379,8 +379,7 @@ class serializer @complexity Linear in the length of string @a s. */ - void - dump_escaped(const string_t& s, const bool ensure_ascii) + void dump_escaped(const string_t& s, const bool ensure_ascii) { std::uint32_t codepoint{}; std::uint8_t state = UTF8_ACCEPT; @@ -706,18 +705,21 @@ class serializer int> = 0> void dump_integer(NumberType x) { - static constexpr std::array, 100> digits_to_99{{ - {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}}, - {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}}, - {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}}, - {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}}, - {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}}, - {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}}, - {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}}, - {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}}, - {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}}, - {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}}, - }}; + static constexpr std::array, 100> digits_to_99{ { + { { '0', '0' } }, { { '0', '1' } }, { { '0', '2' } }, { { '0', '3' } }, { { '0', '4' } }, { { '0', '5' } }, { { '0', '6' } }, { { '0', '7' } }, + { { '0', '8' } }, { { '0', '9' } }, { { '1', '0' } }, { { '1', '1' } }, { { '1', '2' } }, { { '1', '3' } }, { { '1', '4' } }, { { '1', '5' } }, + { { '1', '6' } }, { { '1', '7' } }, { { '1', '8' } }, { { '1', '9' } }, { { '2', '0' } }, { { '2', '1' } }, { { '2', '2' } }, { { '2', '3' } }, + { { '2', '4' } }, { { '2', '5' } }, { { '2', '6' } }, { { '2', '7' } }, { { '2', '8' } }, { { '2', '9' } }, { { '3', '0' } }, { { '3', '1' } }, + { { '3', '2' } }, { { '3', '3' } }, { { '3', '4' } }, { { '3', '5' } }, { { '3', '6' } }, { { '3', '7' } }, { { '3', '8' } }, { { '3', '9' } }, + { { '4', '0' } }, { { '4', '1' } }, { { '4', '2' } }, { { '4', '3' } }, { { '4', '4' } }, { { '4', '5' } }, { { '4', '6' } }, { { '4', '7' } }, + { { '4', '8' } }, { { '4', '9' } }, { { '5', '0' } }, { { '5', '1' } }, { { '5', '2' } }, { { '5', '3' } }, { { '5', '4' } }, { { '5', '5' } }, + { { '5', '6' } }, { { '5', '7' } }, { { '5', '8' } }, { { '5', '9' } }, { { '6', '0' } }, { { '6', '1' } }, { { '6', '2' } }, { { '6', '3' } }, + { { '6', '4' } }, { { '6', '5' } }, { { '6', '6' } }, { { '6', '7' } }, { { '6', '8' } }, { { '6', '9' } }, { { '7', '0' } }, { { '7', '1' } }, + { { '7', '2' } }, { { '7', '3' } }, { { '7', '4' } }, { { '7', '5' } }, { { '7', '6' } }, { { '7', '7' } }, { { '7', '8' } }, { { '7', '9' } }, + { { '8', '0' } }, { { '8', '1' } }, { { '8', '2' } }, { { '8', '3' } }, { { '8', '4' } }, { { '8', '5' } }, { { '8', '6' } }, { { '8', '7' } }, + { { '8', '8' } }, { { '8', '9' } }, { { '9', '0' } }, { { '9', '1' } }, { { '9', '2' } }, { { '9', '3' } }, { { '9', '4' } }, { { '9', '5' } }, + { { '9', '6' } }, { { '9', '7' } }, { { '9', '8' } }, { { '9', '9' } }, + } }; // special case for "0" if (x == 0) @@ -887,7 +889,7 @@ class serializer */ static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept { - static const std::array utf8d = {{ + static const std::array utf8d = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -916,7 +918,7 @@ class serializer 1, // s5..s6 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 - }}; + } }; JSON_ASSERT(byte < utf8d.size()); const std::uint8_t type = utf8d[byte]; @@ -960,7 +962,7 @@ class serializer output_adapter_t o = nullptr; /// a (hopefully) large enough character buffer - std::array number_buffer{{}}; + std::array number_buffer{ {} }; /// the locale const std::lconv* loc = nullptr; @@ -970,7 +972,7 @@ class serializer const char decimal_point = '\0'; /// string buffer - std::array string_buffer{{}}; + std::array string_buffer{ {} }; /// the indentation character const char indent_char; diff --git a/include/nlohmann/detail/string_escape.hpp b/include/nlohmann/detail/string_escape.hpp index 41addc9d3..6a400ed05 100644 --- a/include/nlohmann/detail/string_escape.hpp +++ b/include/nlohmann/detail/string_escape.hpp @@ -48,8 +48,8 @@ inline void replace_substring(StringType& s, const StringType& f, const StringTy template inline StringType escape(StringType s) { - replace_substring(s, StringType{"~"}, StringType{"~0"}); - replace_substring(s, StringType{"/"}, StringType{"~1"}); + replace_substring(s, StringType{ "~" }, StringType{ "~0" }); + replace_substring(s, StringType{ "/" }, StringType{ "~1" }); return s; } @@ -63,8 +63,8 @@ inline StringType escape(StringType s) template static void unescape(StringType& s) { - replace_substring(s, StringType{"~1"}, StringType{"/"}); - replace_substring(s, StringType{"~0"}, StringType{"~"}); + replace_substring(s, StringType{ "~1" }, StringType{ "/" }); + replace_substring(s, StringType{ "~0" }, StringType{ "~" }); } } // namespace detail diff --git a/include/nlohmann/detail/value_t.hpp b/include/nlohmann/detail/value_t.hpp index eb7bcca3f..3579320cf 100644 --- a/include/nlohmann/detail/value_t.hpp +++ b/include/nlohmann/detail/value_t.hpp @@ -83,7 +83,7 @@ inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) n inline bool operator<(const value_t lhs, const value_t rhs) noexcept #endif { - static constexpr std::array order = {{ + static constexpr std::array order = { { 0 /* null */, 3 /* object */, 4 /* array */, @@ -93,7 +93,7 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept 2 /* unsigned */, 2 /* float */, 6 /* binary */ - }}; + } }; const auto l_index = static_cast(lhs); const auto r_index = static_cast(rhs); diff --git a/include/nlohmann/json.hpp b/include/nlohmann/json.hpp index 8746e7575..873ba7040 100644 --- a/include/nlohmann/json.hpp +++ b/include/nlohmann/json.hpp @@ -126,8 +126,8 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe using json_base_class_t = ::nlohmann::detail::json_base_class; JSON_PRIVATE_UNLESS_TESTED : - // convenience aliases for types residing in namespace detail; - using lexer = ::nlohmann::detail::lexer_base; + // convenience aliases for types residing in namespace detail; + using lexer = ::nlohmann::detail::lexer_base; template static ::nlohmann::detail::parser @@ -155,7 +155,8 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe template using binary_writer = ::nlohmann::detail::binary_writer; - JSON_PRIVATE_UNLESS_TESTED : using serializer = ::nlohmann::detail::serializer; + JSON_PRIVATE_UNLESS_TESTED : + using serializer = ::nlohmann::detail::serializer; public: using value_t = detail::value_t; @@ -271,25 +272,25 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe #endif #if defined(__ICC) || defined(__INTEL_COMPILER) - result["compiler"] = {{"family", "icc"}, { "version", __INTEL_COMPILER }}; + result["compiler"] = { { "family", "icc" }, { "version", __INTEL_COMPILER } }; #elif defined(__clang__) - result["compiler"] = {{"family", "clang"}, { "version", __clang_version__ }}; + result["compiler"] = { { "family", "clang" }, { "version", __clang_version__ } }; #elif defined(__GNUC__) || defined(__GNUG__) - result["compiler"] = {{"family", "gcc"}, - { "version", - detail::concat(std::to_string(__GNUC__), '.', std::to_string(__GNUC_MINOR__), '.', std::to_string(__GNUC_PATCHLEVEL__)) }}; + result["compiler"] = { { "family", "gcc" }, + { "version", + detail::concat(std::to_string(__GNUC__), '.', std::to_string(__GNUC_MINOR__), '.', std::to_string(__GNUC_PATCHLEVEL__)) } }; #elif defined(__HP_cc) || defined(__HP_aCC) result["compiler"] = "hp" #elif defined(__IBMCPP__) - result["compiler"] = {{"family", "ilecpp"}, { "version", __IBMCPP__ }}; + result["compiler"] = { { "family", "ilecpp" }, { "version", __IBMCPP__ } }; #elif defined(_MSC_VER) - result["compiler"] = {{"family", "msvc"}, { "version", _MSC_VER }}; + result["compiler"] = { { "family", "msvc" }, { "version", _MSC_VER } }; #elif defined(__PGI) - result["compiler"] = {{"family", "pgcpp"}, { "version", __PGI }}; + result["compiler"] = { { "family", "pgcpp" }, { "version", __PGI } }; #elif defined(__SUNPRO_CC) - result["compiler"] = {{"family", "sunpro"}, { "version", __SUNPRO_CC }}; + result["compiler"] = { { "family", "sunpro" }, { "version", __SUNPRO_CC } }; #else - result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; + result["compiler"] = { { "family", "unknown" }, { "version", "unknown" } }; #endif #if defined(_MSVC_LANG) @@ -383,7 +384,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe //////////////////////// JSON_PRIVATE_UNLESS_TESTED : - /*! + /*! @brief a JSON value The actual storage for a JSON value of the @ref basic_json class. This @@ -408,7 +409,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe @since version 1.0.0 */ - union json_value + union json_value { /// object (stored with pointer to save storage) object_t* object; @@ -1022,7 +1023,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe /// @brief construct an array with count copies of given value /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ basic_json(size_type cnt, const basic_json& val) - : m_data{cnt, val} + : m_data{ cnt, val } { set_parents(); assert_invariant(); @@ -3210,7 +3211,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe it.m_it.object_iterator = res.first; // return pair of iterator and boolean - return {it, res.second}; + return { it, res.second }; } /// Helper for insertion of an iterator @@ -3599,13 +3600,12 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe return (default_result); JSON_PRIVATE_UNLESS_TESTED : - // returns true if: - // - any operand is NaN and the other operand is of number type - // - any operand is discarded - // in legacy mode, discarded values are considered ordered if - // an operation is computed as an odd number of inverses of others - static bool - compares_unordered(const_reference lhs, const_reference rhs, bool inverse = false) noexcept + // returns true if: + // - any operand is NaN and the other operand is of number type + // - any operand is discarded + // in legacy mode, discarded values are considered ordered if + // an operation is computed as an odd number of inverses of others + static bool compares_unordered(const_reference lhs, const_reference rhs, bool inverse = false) noexcept { if ((lhs.is_number_float() && std::isnan(lhs.m_data.m_value.number_float) && rhs.is_number()) || (rhs.is_number_float() && std::isnan(rhs.m_data.m_value.number_float) && lhs.is_number())) @@ -4106,11 +4106,11 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe } JSON_PRIVATE_UNLESS_TESTED : - ////////////////////// - // member variables // - ////////////////////// + ////////////////////// + // member variables // + ////////////////////// - struct data + struct data { /// the type of the current element value_t m_type = value_t::null; @@ -4872,7 +4872,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe if (source.type() != target.type()) { // different types: replace value - result.push_back({{"op", "replace"}, {"path", path}, {"value", target}}); + result.push_back({ { "op", "replace" }, { "path", path }, { "value", target } }); return result; } @@ -4899,14 +4899,14 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe { // add operations in reverse order to avoid invalid // indices - result.insert(result.begin() + end_index, object({{"op", "remove"}, {"path", detail::concat(path, '/', std::to_string(i))}})); + result.insert(result.begin() + end_index, object({ { "op", "remove" }, { "path", detail::concat(path, '/', std::to_string(i)) } })); ++i; } // add other remaining elements while (i < target.size()) { - result.push_back({{"op", "add"}, {"path", detail::concat(path, "/-")}, {"value", target[i]}}); + result.push_back({ { "op", "add" }, { "path", detail::concat(path, "/-") }, { "value", target[i] } }); ++i; } @@ -4930,7 +4930,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe else { // found a key that is not in o -> remove it - result.push_back(object({{"op", "remove"}, {"path", path_key}})); + result.push_back(object({ { "op", "remove" }, { "path", path_key } })); } } @@ -4941,7 +4941,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe { // found a key that is not in this -> add it const auto path_key = detail::concat(path, '/', detail::escape(it.key())); - result.push_back({{"op", "add"}, {"path", path_key}, {"value", it.value()}}); + result.push_back({ { "op", "add" }, { "path", path_key }, { "value", it.value() } }); } } @@ -4959,7 +4959,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe default: { // both primitive type: replace value - result.push_back({{"op", "replace"}, {"path", path}, {"value", target}}); + result.push_back({ { "op", "replace" }, { "path", path }, { "value", target } }); break; } } diff --git a/include/nlohmann/ordered_map.hpp b/include/nlohmann/ordered_map.hpp index 3cc4e9781..11353ec22 100644 --- a/include/nlohmann/ordered_map.hpp +++ b/include/nlohmann/ordered_map.hpp @@ -46,14 +46,14 @@ struct ordered_map : std::vector, Allocator> : Container{} {} explicit ordered_map(const Allocator& alloc) noexcept(noexcept(Container(alloc))) - : Container{alloc} + : Container{ alloc } {} template ordered_map(It first, It last, const Allocator& alloc = Allocator()) - : Container{first, last, alloc} + : Container{ first, last, alloc } {} ordered_map(std::initializer_list init, const Allocator& alloc = Allocator()) - : Container{init, alloc} + : Container{ init, alloc } {} std::pair emplace(const key_type& key, T&& t) @@ -62,11 +62,11 @@ struct ordered_map : std::vector, Allocator> { if (m_compare(it->first, key)) { - return {it, false}; + return { it, false }; } } Container::emplace_back(key, std::forward(t)); - return {std::prev(this->end()), true}; + return { std::prev(this->end()), true }; } template::value, int> = 0> @@ -76,11 +76,11 @@ struct ordered_map : std::vector, Allocator> { if (m_compare(it->first, key)) { - return {it, false}; + return { it, false }; } } Container::emplace_back(std::forward(key), std::forward(t)); - return {std::prev(this->end()), true}; + return { std::prev(this->end()), true }; } T& operator[](const key_type& key) @@ -169,7 +169,7 @@ struct ordered_map : std::vector, Allocator> for (auto next = it; ++next != this->end(); ++it) { it->~value_type(); // Destroy but keep allocation - new (&*it) value_type{std::move(*next)}; + new (&*it) value_type{ std::move(*next) }; } Container::pop_back(); return 1; @@ -189,7 +189,7 @@ struct ordered_map : std::vector, Allocator> for (auto next = it; ++next != this->end(); ++it) { it->~value_type(); // Destroy but keep allocation - new (&*it) value_type{std::move(*next)}; + new (&*it) value_type{ std::move(*next) }; } Container::pop_back(); return 1; @@ -235,8 +235,8 @@ struct ordered_map : std::vector, Allocator> for (auto it = first; std::next(it, elements_affected) != Container::end(); ++it) { - it->~value_type(); // destroy but keep allocation - new (&*it) value_type{std::move(*std::next(it, elements_affected))}; // "move" next element to it + it->~value_type(); // destroy but keep allocation + new (&*it) value_type{ std::move(*std::next(it, elements_affected)) }; // "move" next element to it } // [ a, b, c, d, h, i, j, h, i, j ] @@ -329,11 +329,11 @@ struct ordered_map : std::vector, Allocator> { if (m_compare(it->first, value.first)) { - return {it, false}; + return { it, false }; } } Container::push_back(value); - return {--this->end(), true}; + return { --this->end(), true }; } template diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index 5ff5df8e2..fb9670882 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -213,6 +213,7 @@ NLOHMANN_JSON_NAMESPACE_END // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT +#include // declval, pair // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ @@ -2024,8 +2025,6 @@ JSON_HEDLEY_DIAGNOSTIC_POP #endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ -#include // declval, pair - // This file contains all internal macro definitions (except those affecting ABI) // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them @@ -6107,7 +6106,7 @@ constexpr T static_const::value; template inline constexpr std::array make_array(Args&&... args) { - return std::array{{static_cast(std::forward(args))...}}; + return std::array{ { static_cast(std::forward(args))... } }; } } // namespace detail @@ -7272,8 +7271,8 @@ inline void replace_substring(StringType& s, const StringType& f, const StringTy template inline StringType escape(StringType s) { - replace_substring(s, StringType{"~"}, StringType{"~0"}); - replace_substring(s, StringType{"/"}, StringType{"~1"}); + replace_substring(s, StringType{ "~" }, StringType{ "~0" }); + replace_substring(s, StringType{ "/" }, StringType{ "~1" }); return s; } @@ -7287,8 +7286,8 @@ inline StringType escape(StringType s) template static void unescape(StringType& s) { - replace_substring(s, StringType{"~1"}, StringType{"/"}); - replace_substring(s, StringType{"~0"}, StringType{"~"}); + replace_substring(s, StringType{ "~1" }, StringType{ "/" }); + replace_substring(s, StringType{ "~0" }, StringType{ "~" }); } } // namespace detail @@ -7379,7 +7378,7 @@ inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) n inline bool operator<(const value_t lhs, const value_t rhs) noexcept #endif { - static constexpr std::array order = {{ + static constexpr std::array order = { { 0 /* null */, 3 /* object */, 4 /* array */, @@ -7389,7 +7388,7 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept 2 /* unsigned */, 2 /* float */, 6 /* binary */ - }}; + } }; const auto l_index = static_cast(lhs); const auto r_index = static_cast(rhs); @@ -7444,8 +7443,8 @@ class exception : public std::exception JSON_HEDLEY_NON_NULL(3) exception(int id_, const char* what_arg) : id(id_) - , m(what_arg) - {} // NOLINT(bugprone-throw-keyword-missing) + , m(what_arg) // NOLINT(bugprone-throw-keyword-missing) + {} static std::string name(const std::string& ename, int id_) { @@ -7543,7 +7542,7 @@ class parse_error : public exception static parse_error create(int id_, const position_t& pos, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("parse_error", id_), "parse error", position_string(pos), ": ", exception::diagnostics(context), what_arg); - return {id_, pos.chars_read_total, w.c_str()}; + return { id_, pos.chars_read_total, w.c_str() }; } template::value, int> = 0> @@ -7555,7 +7554,7 @@ class parse_error : public exception ": ", exception::diagnostics(context), what_arg); - return {id_, byte_, w.c_str()}; + return { id_, byte_, w.c_str() }; } /*! @@ -7590,7 +7589,7 @@ class invalid_iterator : public exception static invalid_iterator create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("invalid_iterator", id_), exception::diagnostics(context), what_arg); - return {id_, w.c_str()}; + return { id_, w.c_str() }; } private: @@ -7609,7 +7608,7 @@ class type_error : public exception static type_error create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("type_error", id_), exception::diagnostics(context), what_arg); - return {id_, w.c_str()}; + return { id_, w.c_str() }; } private: @@ -7628,7 +7627,7 @@ class out_of_range : public exception static out_of_range create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("out_of_range", id_), exception::diagnostics(context), what_arg); - return {id_, w.c_str()}; + return { id_, w.c_str() }; } private: @@ -7647,7 +7646,7 @@ class other_error : public exception static other_error create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("other_error", id_), exception::diagnostics(context), what_arg); - return {id_, w.c_str()}; + return { id_, w.c_str() }; } private: @@ -7945,7 +7944,7 @@ template std::array from_json_inplace_array_impl(BasicJsonType&& j, identity_tag> /*unused*/, index_sequence /*unused*/) { - return {{std::forward(j).at(Idx).template get()...}}; + return { { std::forward(j).at(Idx).template get()... } }; } template @@ -8046,7 +8045,7 @@ std::tuple from_json_tuple_impl_base(BasicJsonType&& j, index_sequence< template std::pair from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<0> /*unused*/) { - return {std::forward(j).at(0).template get(), std::forward(j).at(1).template get()}; + return { std::forward(j).at(0).template get(), std::forward(j).at(1).template get() }; } template @@ -8806,20 +8805,20 @@ template::value && std::is_constructible::value, int> = 0> inline void to_json(BasicJsonType& j, const std::pair& p) { - j = {p.first, p.second}; + j = { p.first, p.second }; } // for https://github.com/nlohmann/json/pull/1134 template>::value, int> = 0> inline void to_json(BasicJsonType& j, const T& b) { - j = {{b.key(), b.value()}}; + j = { { b.key(), b.value() } }; } template inline void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence /*unused*/) { - j = {std::get(t)...}; + j = { std::get(t)... }; } template::value, int> = 0> @@ -9503,7 +9502,7 @@ class wide_string_input_adapter } /// a buffer for UTF-8 bytes - std::array::int_type, 4> utf8_bytes = {{0, 0, 0, 0}}; + std::array::int_type, 4> utf8_bytes = { { 0, 0, 0, 0 } }; /// index to the utf8_codes array for the next valid byte std::size_t utf8_bytes_index = 0; @@ -10233,7 +10232,7 @@ class json_sax_dom_callback_parser // container if (!keep_stack.back()) { - return {false, nullptr}; + return { false, nullptr }; } // create value @@ -10245,20 +10244,20 @@ class json_sax_dom_callback_parser // do not handle this value if we just learnt it shall be discarded if (!keep) { - return {false, nullptr}; + return { false, nullptr }; } if (ref_stack.empty()) { root = std::move(value); - return {true, &root}; + return { true, &root }; } // skip this value if we already decided to skip the parent // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360) if (!ref_stack.back()) { - return {false, nullptr}; + return { false, nullptr }; } // we now only expect arrays and objects @@ -10268,7 +10267,7 @@ class json_sax_dom_callback_parser if (ref_stack.back()->is_array()) { ref_stack.back()->m_data.m_value.array->emplace_back(std::move(value)); - return {true, &(ref_stack.back()->m_data.m_value.array->back())}; + return { true, &(ref_stack.back()->m_data.m_value.array->back()) }; } // object @@ -10280,12 +10279,12 @@ class json_sax_dom_callback_parser if (!store_element) { - return {false, nullptr}; + return { false, nullptr }; } JSON_ASSERT(object_element); *object_element = std::move(value); - return {true, object_element}; + return { true, object_element }; } /// the parsed JSON value @@ -10564,7 +10563,7 @@ class lexer : public lexer_base JSON_ASSERT(current == 'u'); int codepoint = 0; - const auto factors = {12u, 8u, 4u, 0u}; + const auto factors = { 12u, 8u, 4u, 0u }; for (const auto factor : factors) { get(); @@ -11136,7 +11135,7 @@ class lexer : public lexer_base case 0xDE: case 0xDF: { - if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({0x80, 0xBF}))) + if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({ 0x80, 0xBF }))) { return token_type::parse_error; } @@ -11146,7 +11145,7 @@ class lexer : public lexer_base // U+0800..U+0FFF: bytes E0 A0..BF 80..BF case 0xE0: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0xA0, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -11170,7 +11169,7 @@ class lexer : public lexer_base case 0xEE: case 0xEF: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -11180,7 +11179,7 @@ class lexer : public lexer_base // U+D000..U+D7FF: bytes ED 80..9F 80..BF case 0xED: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0x9F, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -11190,7 +11189,7 @@ class lexer : public lexer_base // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF case 0xF0: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -11202,7 +11201,7 @@ class lexer : public lexer_base case 0xF2: case 0xF3: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -11212,7 +11211,7 @@ class lexer : public lexer_base // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF case 0xF4: { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF })))) { return token_type::parse_error; } @@ -11844,9 +11843,9 @@ scan_number_done: if (static_cast(c) <= '\x1F') { // escape control characters - std::array cs{{}}; - static_cast(( - std::snprintf)(cs.data(), cs.size(), "", static_cast(c))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + std::array cs{ {} }; + static_cast(( // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + std::snprintf)(cs.data(), cs.size(), "", static_cast(c))); result += cs.data(); } else @@ -11940,22 +11939,24 @@ scan_number_done: case 't': { std::array true_literal = { - {static_cast('t'), static_cast('r'), static_cast('u'), static_cast('e')}}; + { static_cast('t'), static_cast('r'), static_cast('u'), static_cast('e') } + }; return scan_literal(true_literal.data(), true_literal.size(), token_type::literal_true); } case 'f': { - std::array false_literal = {{static_cast('f'), - static_cast('a'), - static_cast('l'), - static_cast('s'), - static_cast('e')}}; + std::array false_literal = { { static_cast('f'), + static_cast('a'), + static_cast('l'), + static_cast('s'), + static_cast('e') } }; return scan_literal(false_literal.data(), false_literal.size(), token_type::literal_false); } case 'n': { std::array null_literal = { - {static_cast('n'), static_cast('u'), static_cast('l'), static_cast('l')}}; + { static_cast('n'), static_cast('u'), static_cast('l'), static_cast('l') } + }; return scan_literal(null_literal.data(), null_literal.size(), token_type::literal_null); } @@ -12470,12 +12471,12 @@ class binary_reader default: // anything else not supported (yet) { - std::array cr{{}}; - static_cast((std::snprintf)(cr.data(), + std::array cr{ {} }; + static_cast((std::snprintf)(cr.data(), // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) cr.size(), "%.2hhX", - static_cast(element_type))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - const std::string cr_str{cr.data()}; + static_cast(element_type))); + const std::string cr_str{ cr.data() }; return sax->parse_error(element_type_parse_position, cr_str, parse_error::create(114, element_type_parse_position, concat("Unsupported BSON record type 0x", cr_str), nullptr)); @@ -15100,10 +15101,10 @@ class binary_reader */ std::string get_token_string() const { - std::array cr{{}}; + std::array cr{ {} }; static_cast( (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(current))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - return std::string{cr.data()}; + return std::string{ cr.data() }; } /*! @@ -15171,22 +15172,22 @@ class binary_reader #define JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_ make_array('F', 'H', 'N', 'S', 'T', 'Z', '[', '{') #define JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_ \ - make_array(bjd_type{'C', "char"}, \ - bjd_type{'D', "double"}, \ - bjd_type{'I', "int16"}, \ - bjd_type{'L', "int64"}, \ - bjd_type{'M', "uint64"}, \ - bjd_type{'U', "uint8"}, \ - bjd_type{'d', "single"}, \ - bjd_type{'i', "int8"}, \ - bjd_type{'l', "int32"}, \ - bjd_type{'m', "uint32"}, \ - bjd_type{'u', "uint16"}) + make_array(bjd_type{ 'C', "char" }, \ + bjd_type{ 'D', "double" }, \ + bjd_type{ 'I', "int16" }, \ + bjd_type{ 'L', "int64" }, \ + bjd_type{ 'M', "uint64" }, \ + bjd_type{ 'U', "uint8" }, \ + bjd_type{ 'd', "single" }, \ + bjd_type{ 'i', "int8" }, \ + bjd_type{ 'l', "int32" }, \ + bjd_type{ 'm', "uint32" }, \ + bjd_type{ 'u', "uint16" }) JSON_PRIVATE_UNLESS_TESTED : - // lookup tables - // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) - const decltype(JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_) bjd_optimized_type_markers = JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_; + // lookup tables + // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) + const decltype(JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_) bjd_optimized_type_markers = JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_; using bjd_type = std::pair; // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) @@ -15787,8 +15788,8 @@ class primitive_iterator_t static constexpr difference_type end_value = begin_value + 1; JSON_PRIVATE_UNLESS_TESTED : - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); public: constexpr difference_type get_value() const noexcept @@ -16107,12 +16108,11 @@ class iter_impl // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec } JSON_PRIVATE_UNLESS_TESTED : - /*! + /*! @brief set the iterator to the first value @pre The iterator is initialized; i.e. `m_object != nullptr`. */ - void - set_begin() noexcept + void set_begin() noexcept { JSON_ASSERT(m_object != nullptr); @@ -16661,8 +16661,8 @@ class iter_impl // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec } JSON_PRIVATE_UNLESS_TESTED : - /// associated JSON instance - pointer m_object = nullptr; + /// associated JSON instance + pointer m_object = nullptr; /// the actual iterator of the associated instance internal_iterator::type> m_it{}; }; @@ -17090,7 +17090,8 @@ class json_pointer return static_cast(res); } - JSON_PRIVATE_UNLESS_TESTED : json_pointer top() const + JSON_PRIVATE_UNLESS_TESTED : + json_pointer top() const { if (JSON_HEDLEY_UNLIKELY(empty())) { @@ -17098,7 +17099,7 @@ class json_pointer } json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; + result.reference_tokens = { reference_tokens[0] }; return result; } @@ -18828,7 +18829,7 @@ class binary_writer return ubjson_prefix(v, use_bjdata) == first_prefix; }); - std::vector bjdx = {'[', '{', 'S', 'H', 'T', 'F', 'N', 'Z'}; // excluded markers in bjdata optimized type + std::vector bjdx = { '[', '{', 'S', 'H', 'T', 'F', 'N', 'Z' }; // excluded markers in bjdata optimized type if (same_prefix && !(use_bjdata && std::find(bjdx.begin(), bjdx.end(), first_prefix) != bjdx.end())) { @@ -18926,7 +18927,7 @@ class binary_writer return ubjson_prefix(v, use_bjdata) == first_prefix; }); - std::vector bjdx = {'[', '{', 'S', 'H', 'T', 'F', 'N', 'Z'}; // excluded markers in bjdata optimized type + std::vector bjdx = { '[', '{', 'S', 'H', 'T', 'F', 'N', 'Z' }; // excluded markers in bjdata optimized type if (same_prefix && !(use_bjdata && std::find(bjdx.begin(), bjdx.end(), first_prefix) != bjdx.end())) { @@ -19618,17 +19619,8 @@ class binary_writer */ bool write_bjdata_ndarray(const typename BasicJsonType::object_t& value, const bool use_count, const bool use_type) { - std::map bjdtype = {{"uint8", 'U'}, - {"int8", 'i'}, - {"uint16", 'u'}, - {"int16", 'I'}, - {"uint32", 'm'}, - {"int32", 'l'}, - {"uint64", 'M'}, - {"int64", 'L'}, - {"single", 'd'}, - {"double", 'D'}, - {"char", 'C'}}; + std::map bjdtype = { { "uint8", 'U' }, { "int8", 'i' }, { "uint16", 'u' }, { "int16", 'I' }, { "uint32", 'm' }, { "int32", 'l' }, + { "uint64", 'M' }, { "int64", 'L' }, { "single", 'd' }, { "double", 'D' }, { "char", 'C' } }; string_t key = "_ArrayType_"; auto it = bjdtype.find(static_cast(value.at(key))); @@ -19939,7 +19931,7 @@ struct diyfp // f * 2^e JSON_ASSERT(x.e == y.e); JSON_ASSERT(x.f >= y.f); - return {x.f - y.f, x.e}; + return { x.f - y.f, x.e }; } /*! @@ -20000,11 +19992,11 @@ struct diyfp // f * 2^e // Effectively we only need to add the highest bit in p_lo to p_hi (and // Q_hi + 1 does not overflow). - Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up + Q += std::uint64_t{ 1 } << (64u - 32u - 1u); // round, ties up const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u); - return {h, x.e + y.e + 64}; + return { h, x.e + y.e + 64 }; } /*! @@ -20035,7 +20027,7 @@ struct diyfp // f * 2^e JSON_ASSERT(delta >= 0); JSON_ASSERT(((x.f << delta) >> delta) == x.f); - return {x.f << delta, target_exponent}; + return { x.f << delta, target_exponent }; } }; @@ -20070,7 +20062,7 @@ boundaries compute_boundaries(FloatType value) constexpr int kPrecision = std::numeric_limits::digits; // = p (includes the hidden bit) constexpr int kBias = std::numeric_limits::max_exponent - 1 + (kPrecision - 1); constexpr int kMinExp = 1 - kBias; - constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1) + constexpr std::uint64_t kHiddenBit = std::uint64_t{ 1 } << (kPrecision - 1); // = 2^(p-1) using bits_type = typename std::conditional::type; @@ -20113,7 +20105,7 @@ boundaries compute_boundaries(FloatType value) // Determine w- = m- such that e_(w-) = e_(w+). const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); - return {diyfp::normalize(v), w_minus, w_plus}; + return { diyfp::normalize(v), w_minus, w_plus }; } // Given normalized diyfp w, Grisu needs to find a (normalized) cached @@ -20243,28 +20235,28 @@ inline cached_power get_cached_power_for_binary_exponent(int e) constexpr int kCachedPowersMinDecExp = -300; constexpr int kCachedPowersDecStep = 8; - static constexpr std::array kCachedPowers = {{ - {0xAB70FE17C79AC6CA, -1060, -300}, {0xFF77B1FCBEBCDC4F, -1034, -292}, {0xBE5691EF416BD60C, -1007, -284}, {0x8DD01FAD907FFC3C, -980, -276}, - {0xD3515C2831559A83, -954, -268}, {0x9D71AC8FADA6C9B5, -927, -260}, {0xEA9C227723EE8BCB, -901, -252}, {0xAECC49914078536D, -874, -244}, - {0x823C12795DB6CE57, -847, -236}, {0xC21094364DFB5637, -821, -228}, {0x9096EA6F3848984F, -794, -220}, {0xD77485CB25823AC7, -768, -212}, - {0xA086CFCD97BF97F4, -741, -204}, {0xEF340A98172AACE5, -715, -196}, {0xB23867FB2A35B28E, -688, -188}, {0x84C8D4DFD2C63F3B, -661, -180}, - {0xC5DD44271AD3CDBA, -635, -172}, {0x936B9FCEBB25C996, -608, -164}, {0xDBAC6C247D62A584, -582, -156}, {0xA3AB66580D5FDAF6, -555, -148}, - {0xF3E2F893DEC3F126, -529, -140}, {0xB5B5ADA8AAFF80B8, -502, -132}, {0x87625F056C7C4A8B, -475, -124}, {0xC9BCFF6034C13053, -449, -116}, - {0x964E858C91BA2655, -422, -108}, {0xDFF9772470297EBD, -396, -100}, {0xA6DFBD9FB8E5B88F, -369, -92}, {0xF8A95FCF88747D94, -343, -84}, - {0xB94470938FA89BCF, -316, -76}, {0x8A08F0F8BF0F156B, -289, -68}, {0xCDB02555653131B6, -263, -60}, {0x993FE2C6D07B7FAC, -236, -52}, - {0xE45C10C42A2B3B06, -210, -44}, {0xAA242499697392D3, -183, -36}, {0xFD87B5F28300CA0E, -157, -28}, {0xBCE5086492111AEB, -130, -20}, - {0x8CBCCC096F5088CC, -103, -12}, {0xD1B71758E219652C, -77, -4}, {0x9C40000000000000, -50, 4}, {0xE8D4A51000000000, -24, 12}, - {0xAD78EBC5AC620000, 3, 20}, {0x813F3978F8940984, 30, 28}, {0xC097CE7BC90715B3, 56, 36}, {0x8F7E32CE7BEA5C70, 83, 44}, - {0xD5D238A4ABE98068, 109, 52}, {0x9F4F2726179A2245, 136, 60}, {0xED63A231D4C4FB27, 162, 68}, {0xB0DE65388CC8ADA8, 189, 76}, - {0x83C7088E1AAB65DB, 216, 84}, {0xC45D1DF942711D9A, 242, 92}, {0x924D692CA61BE758, 269, 100}, {0xDA01EE641A708DEA, 295, 108}, - {0xA26DA3999AEF774A, 322, 116}, {0xF209787BB47D6B85, 348, 124}, {0xB454E4A179DD1877, 375, 132}, {0x865B86925B9BC5C2, 402, 140}, - {0xC83553C5C8965D3D, 428, 148}, {0x952AB45CFA97A0B3, 455, 156}, {0xDE469FBD99A05FE3, 481, 164}, {0xA59BC234DB398C25, 508, 172}, - {0xF6C69A72A3989F5C, 534, 180}, {0xB7DCBF5354E9BECE, 561, 188}, {0x88FCF317F22241E2, 588, 196}, {0xCC20CE9BD35C78A5, 614, 204}, - {0x98165AF37B2153DF, 641, 212}, {0xE2A0B5DC971F303A, 667, 220}, {0xA8D9D1535CE3B396, 694, 228}, {0xFB9B7CD9A4A7443C, 720, 236}, - {0xBB764C4CA7A44410, 747, 244}, {0x8BAB8EEFB6409C1A, 774, 252}, {0xD01FEF10A657842C, 800, 260}, {0x9B10A4E5E9913129, 827, 268}, - {0xE7109BFBA19C0C9D, 853, 276}, {0xAC2820D9623BF429, 880, 284}, {0x80444B5E7AA7CF85, 907, 292}, {0xBF21E44003ACDD2D, 933, 300}, - {0x8E679C2F5E44FF8F, 960, 308}, {0xD433179D9C8CB841, 986, 316}, {0x9E19DB92B4E31BA9, 1013, 324}, - }}; + static constexpr std::array kCachedPowers = { { + { 0xAB70FE17C79AC6CA, -1060, -300 }, { 0xFF77B1FCBEBCDC4F, -1034, -292 }, { 0xBE5691EF416BD60C, -1007, -284 }, { 0x8DD01FAD907FFC3C, -980, -276 }, + { 0xD3515C2831559A83, -954, -268 }, { 0x9D71AC8FADA6C9B5, -927, -260 }, { 0xEA9C227723EE8BCB, -901, -252 }, { 0xAECC49914078536D, -874, -244 }, + { 0x823C12795DB6CE57, -847, -236 }, { 0xC21094364DFB5637, -821, -228 }, { 0x9096EA6F3848984F, -794, -220 }, { 0xD77485CB25823AC7, -768, -212 }, + { 0xA086CFCD97BF97F4, -741, -204 }, { 0xEF340A98172AACE5, -715, -196 }, { 0xB23867FB2A35B28E, -688, -188 }, { 0x84C8D4DFD2C63F3B, -661, -180 }, + { 0xC5DD44271AD3CDBA, -635, -172 }, { 0x936B9FCEBB25C996, -608, -164 }, { 0xDBAC6C247D62A584, -582, -156 }, { 0xA3AB66580D5FDAF6, -555, -148 }, + { 0xF3E2F893DEC3F126, -529, -140 }, { 0xB5B5ADA8AAFF80B8, -502, -132 }, { 0x87625F056C7C4A8B, -475, -124 }, { 0xC9BCFF6034C13053, -449, -116 }, + { 0x964E858C91BA2655, -422, -108 }, { 0xDFF9772470297EBD, -396, -100 }, { 0xA6DFBD9FB8E5B88F, -369, -92 }, { 0xF8A95FCF88747D94, -343, -84 }, + { 0xB94470938FA89BCF, -316, -76 }, { 0x8A08F0F8BF0F156B, -289, -68 }, { 0xCDB02555653131B6, -263, -60 }, { 0x993FE2C6D07B7FAC, -236, -52 }, + { 0xE45C10C42A2B3B06, -210, -44 }, { 0xAA242499697392D3, -183, -36 }, { 0xFD87B5F28300CA0E, -157, -28 }, { 0xBCE5086492111AEB, -130, -20 }, + { 0x8CBCCC096F5088CC, -103, -12 }, { 0xD1B71758E219652C, -77, -4 }, { 0x9C40000000000000, -50, 4 }, { 0xE8D4A51000000000, -24, 12 }, + { 0xAD78EBC5AC620000, 3, 20 }, { 0x813F3978F8940984, 30, 28 }, { 0xC097CE7BC90715B3, 56, 36 }, { 0x8F7E32CE7BEA5C70, 83, 44 }, + { 0xD5D238A4ABE98068, 109, 52 }, { 0x9F4F2726179A2245, 136, 60 }, { 0xED63A231D4C4FB27, 162, 68 }, { 0xB0DE65388CC8ADA8, 189, 76 }, + { 0x83C7088E1AAB65DB, 216, 84 }, { 0xC45D1DF942711D9A, 242, 92 }, { 0x924D692CA61BE758, 269, 100 }, { 0xDA01EE641A708DEA, 295, 108 }, + { 0xA26DA3999AEF774A, 322, 116 }, { 0xF209787BB47D6B85, 348, 124 }, { 0xB454E4A179DD1877, 375, 132 }, { 0x865B86925B9BC5C2, 402, 140 }, + { 0xC83553C5C8965D3D, 428, 148 }, { 0x952AB45CFA97A0B3, 455, 156 }, { 0xDE469FBD99A05FE3, 481, 164 }, { 0xA59BC234DB398C25, 508, 172 }, + { 0xF6C69A72A3989F5C, 534, 180 }, { 0xB7DCBF5354E9BECE, 561, 188 }, { 0x88FCF317F22241E2, 588, 196 }, { 0xCC20CE9BD35C78A5, 614, 204 }, + { 0x98165AF37B2153DF, 641, 212 }, { 0xE2A0B5DC971F303A, 667, 220 }, { 0xA8D9D1535CE3B396, 694, 228 }, { 0xFB9B7CD9A4A7443C, 720, 236 }, + { 0xBB764C4CA7A44410, 747, 244 }, { 0x8BAB8EEFB6409C1A, 774, 252 }, { 0xD01FEF10A657842C, 800, 260 }, { 0x9B10A4E5E9913129, 827, 268 }, + { 0xE7109BFBA19C0C9D, 853, 276 }, { 0xAC2820D9623BF429, 880, 284 }, { 0x80444B5E7AA7CF85, 907, 292 }, { 0xBF21E44003ACDD2D, 933, 300 }, + { 0x8E679C2F5E44FF8F, 960, 308 }, { 0xD433179D9C8CB841, 986, 316 }, { 0x9E19DB92B4E31BA9, 1013, 324 }, + } }; // This computation gives exactly the same results for k as // k = ceil((kAlpha - e - 1) * 0.30102999566398114) @@ -20412,7 +20404,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, d // = ((p1 ) * 2^-e + (p2 )) * 2^e // = p1 + p2 * 2^e - const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e); + const diyfp one(std::uint64_t{ 1 } << -M_plus.e, M_plus.e); auto p1 = static_cast(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e @@ -20477,7 +20469,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, d // Note: // Since rest and delta share the same exponent e, it suffices to // compare the significands. - const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2; + const std::uint64_t rest = (std::uint64_t{ p1 } << -one.e) + p2; if (rest <= delta) { // V = buffer * 10^n, with M- <= V <= M+. @@ -20493,7 +20485,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, d // // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e // - const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e; + const std::uint64_t ten_n = std::uint64_t{ pow10 } << -one.e; grisu2_round(buffer, length, dist, delta, rest, ten_n); return; @@ -21258,7 +21250,7 @@ class serializer } JSON_PRIVATE_UNLESS_TESTED : - /*! + /*! @brief dump escaped string Escape a string by replacing certain special characters by a sequence of an @@ -21272,8 +21264,7 @@ class serializer @complexity Linear in the length of string @a s. */ - void - dump_escaped(const string_t& s, const bool ensure_ascii) + void dump_escaped(const string_t& s, const bool ensure_ascii) { std::uint32_t codepoint{}; std::uint8_t state = UTF8_ACCEPT; @@ -21599,18 +21590,21 @@ class serializer int> = 0> void dump_integer(NumberType x) { - static constexpr std::array, 100> digits_to_99{{ - {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}}, - {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}}, - {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}}, - {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}}, - {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}}, - {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}}, - {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}}, - {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}}, - {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}}, - {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}}, - }}; + static constexpr std::array, 100> digits_to_99{ { + { { '0', '0' } }, { { '0', '1' } }, { { '0', '2' } }, { { '0', '3' } }, { { '0', '4' } }, { { '0', '5' } }, { { '0', '6' } }, { { '0', '7' } }, + { { '0', '8' } }, { { '0', '9' } }, { { '1', '0' } }, { { '1', '1' } }, { { '1', '2' } }, { { '1', '3' } }, { { '1', '4' } }, { { '1', '5' } }, + { { '1', '6' } }, { { '1', '7' } }, { { '1', '8' } }, { { '1', '9' } }, { { '2', '0' } }, { { '2', '1' } }, { { '2', '2' } }, { { '2', '3' } }, + { { '2', '4' } }, { { '2', '5' } }, { { '2', '6' } }, { { '2', '7' } }, { { '2', '8' } }, { { '2', '9' } }, { { '3', '0' } }, { { '3', '1' } }, + { { '3', '2' } }, { { '3', '3' } }, { { '3', '4' } }, { { '3', '5' } }, { { '3', '6' } }, { { '3', '7' } }, { { '3', '8' } }, { { '3', '9' } }, + { { '4', '0' } }, { { '4', '1' } }, { { '4', '2' } }, { { '4', '3' } }, { { '4', '4' } }, { { '4', '5' } }, { { '4', '6' } }, { { '4', '7' } }, + { { '4', '8' } }, { { '4', '9' } }, { { '5', '0' } }, { { '5', '1' } }, { { '5', '2' } }, { { '5', '3' } }, { { '5', '4' } }, { { '5', '5' } }, + { { '5', '6' } }, { { '5', '7' } }, { { '5', '8' } }, { { '5', '9' } }, { { '6', '0' } }, { { '6', '1' } }, { { '6', '2' } }, { { '6', '3' } }, + { { '6', '4' } }, { { '6', '5' } }, { { '6', '6' } }, { { '6', '7' } }, { { '6', '8' } }, { { '6', '9' } }, { { '7', '0' } }, { { '7', '1' } }, + { { '7', '2' } }, { { '7', '3' } }, { { '7', '4' } }, { { '7', '5' } }, { { '7', '6' } }, { { '7', '7' } }, { { '7', '8' } }, { { '7', '9' } }, + { { '8', '0' } }, { { '8', '1' } }, { { '8', '2' } }, { { '8', '3' } }, { { '8', '4' } }, { { '8', '5' } }, { { '8', '6' } }, { { '8', '7' } }, + { { '8', '8' } }, { { '8', '9' } }, { { '9', '0' } }, { { '9', '1' } }, { { '9', '2' } }, { { '9', '3' } }, { { '9', '4' } }, { { '9', '5' } }, + { { '9', '6' } }, { { '9', '7' } }, { { '9', '8' } }, { { '9', '9' } }, + } }; // special case for "0" if (x == 0) @@ -21780,7 +21774,7 @@ class serializer */ static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept { - static const std::array utf8d = {{ + static const std::array utf8d = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -21809,7 +21803,7 @@ class serializer 1, // s5..s6 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 - }}; + } }; JSON_ASSERT(byte < utf8d.size()); const std::uint8_t type = utf8d[byte]; @@ -21853,7 +21847,7 @@ class serializer output_adapter_t o = nullptr; /// a (hopefully) large enough character buffer - std::array number_buffer{{}}; + std::array number_buffer{ {} }; /// the locale const std::lconv* loc = nullptr; @@ -21863,7 +21857,7 @@ class serializer const char decimal_point = '\0'; /// string buffer - std::array string_buffer{{}}; + std::array string_buffer{ {} }; /// the indentation character const char indent_char; @@ -21933,14 +21927,14 @@ struct ordered_map : std::vector, Allocator> : Container{} {} explicit ordered_map(const Allocator& alloc) noexcept(noexcept(Container(alloc))) - : Container{alloc} + : Container{ alloc } {} template ordered_map(It first, It last, const Allocator& alloc = Allocator()) - : Container{first, last, alloc} + : Container{ first, last, alloc } {} ordered_map(std::initializer_list init, const Allocator& alloc = Allocator()) - : Container{init, alloc} + : Container{ init, alloc } {} std::pair emplace(const key_type& key, T&& t) @@ -21949,11 +21943,11 @@ struct ordered_map : std::vector, Allocator> { if (m_compare(it->first, key)) { - return {it, false}; + return { it, false }; } } Container::emplace_back(key, std::forward(t)); - return {std::prev(this->end()), true}; + return { std::prev(this->end()), true }; } template::value, int> = 0> @@ -21963,11 +21957,11 @@ struct ordered_map : std::vector, Allocator> { if (m_compare(it->first, key)) { - return {it, false}; + return { it, false }; } } Container::emplace_back(std::forward(key), std::forward(t)); - return {std::prev(this->end()), true}; + return { std::prev(this->end()), true }; } T& operator[](const key_type& key) @@ -22056,7 +22050,7 @@ struct ordered_map : std::vector, Allocator> for (auto next = it; ++next != this->end(); ++it) { it->~value_type(); // Destroy but keep allocation - new (&*it) value_type{std::move(*next)}; + new (&*it) value_type{ std::move(*next) }; } Container::pop_back(); return 1; @@ -22076,7 +22070,7 @@ struct ordered_map : std::vector, Allocator> for (auto next = it; ++next != this->end(); ++it) { it->~value_type(); // Destroy but keep allocation - new (&*it) value_type{std::move(*next)}; + new (&*it) value_type{ std::move(*next) }; } Container::pop_back(); return 1; @@ -22122,8 +22116,8 @@ struct ordered_map : std::vector, Allocator> for (auto it = first; std::next(it, elements_affected) != Container::end(); ++it) { - it->~value_type(); // destroy but keep allocation - new (&*it) value_type{std::move(*std::next(it, elements_affected))}; // "move" next element to it + it->~value_type(); // destroy but keep allocation + new (&*it) value_type{ std::move(*std::next(it, elements_affected)) }; // "move" next element to it } // [ a, b, c, d, h, i, j, h, i, j ] @@ -22216,11 +22210,11 @@ struct ordered_map : std::vector, Allocator> { if (m_compare(it->first, value.first)) { - return {it, false}; + return { it, false }; } } Container::push_back(value); - return {--this->end(), true}; + return { --this->end(), true }; } template @@ -22307,8 +22301,8 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe using json_base_class_t = ::nlohmann::detail::json_base_class; JSON_PRIVATE_UNLESS_TESTED : - // convenience aliases for types residing in namespace detail; - using lexer = ::nlohmann::detail::lexer_base; + // convenience aliases for types residing in namespace detail; + using lexer = ::nlohmann::detail::lexer_base; template static ::nlohmann::detail::parser @@ -22336,7 +22330,8 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe template using binary_writer = ::nlohmann::detail::binary_writer; - JSON_PRIVATE_UNLESS_TESTED : using serializer = ::nlohmann::detail::serializer; + JSON_PRIVATE_UNLESS_TESTED : + using serializer = ::nlohmann::detail::serializer; public: using value_t = detail::value_t; @@ -22452,25 +22447,25 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe #endif #if defined(__ICC) || defined(__INTEL_COMPILER) - result["compiler"] = {{"family", "icc"}, { "version", __INTEL_COMPILER }}; + result["compiler"] = { { "family", "icc" }, { "version", __INTEL_COMPILER } }; #elif defined(__clang__) - result["compiler"] = {{"family", "clang"}, { "version", __clang_version__ }}; + result["compiler"] = { { "family", "clang" }, { "version", __clang_version__ } }; #elif defined(__GNUC__) || defined(__GNUG__) - result["compiler"] = {{"family", "gcc"}, - { "version", - detail::concat(std::to_string(__GNUC__), '.', std::to_string(__GNUC_MINOR__), '.', std::to_string(__GNUC_PATCHLEVEL__)) }}; + result["compiler"] = { { "family", "gcc" }, + { "version", + detail::concat(std::to_string(__GNUC__), '.', std::to_string(__GNUC_MINOR__), '.', std::to_string(__GNUC_PATCHLEVEL__)) } }; #elif defined(__HP_cc) || defined(__HP_aCC) result["compiler"] = "hp" #elif defined(__IBMCPP__) - result["compiler"] = {{"family", "ilecpp"}, { "version", __IBMCPP__ }}; + result["compiler"] = { { "family", "ilecpp" }, { "version", __IBMCPP__ } }; #elif defined(_MSC_VER) - result["compiler"] = {{"family", "msvc"}, { "version", _MSC_VER }}; + result["compiler"] = { { "family", "msvc" }, { "version", _MSC_VER } }; #elif defined(__PGI) - result["compiler"] = {{"family", "pgcpp"}, { "version", __PGI }}; + result["compiler"] = { { "family", "pgcpp" }, { "version", __PGI } }; #elif defined(__SUNPRO_CC) - result["compiler"] = {{"family", "sunpro"}, { "version", __SUNPRO_CC }}; + result["compiler"] = { { "family", "sunpro" }, { "version", __SUNPRO_CC } }; #else - result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; + result["compiler"] = { { "family", "unknown" }, { "version", "unknown" } }; #endif #if defined(_MSVC_LANG) @@ -22564,7 +22559,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe //////////////////////// JSON_PRIVATE_UNLESS_TESTED : - /*! + /*! @brief a JSON value The actual storage for a JSON value of the @ref basic_json class. This @@ -22589,7 +22584,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe @since version 1.0.0 */ - union json_value + union json_value { /// object (stored with pointer to save storage) object_t* object; @@ -23203,7 +23198,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe /// @brief construct an array with count copies of given value /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ basic_json(size_type cnt, const basic_json& val) - : m_data{cnt, val} + : m_data{ cnt, val } { set_parents(); assert_invariant(); @@ -25391,7 +25386,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe it.m_it.object_iterator = res.first; // return pair of iterator and boolean - return {it, res.second}; + return { it, res.second }; } /// Helper for insertion of an iterator @@ -25780,13 +25775,12 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe return (default_result); JSON_PRIVATE_UNLESS_TESTED : - // returns true if: - // - any operand is NaN and the other operand is of number type - // - any operand is discarded - // in legacy mode, discarded values are considered ordered if - // an operation is computed as an odd number of inverses of others - static bool - compares_unordered(const_reference lhs, const_reference rhs, bool inverse = false) noexcept + // returns true if: + // - any operand is NaN and the other operand is of number type + // - any operand is discarded + // in legacy mode, discarded values are considered ordered if + // an operation is computed as an odd number of inverses of others + static bool compares_unordered(const_reference lhs, const_reference rhs, bool inverse = false) noexcept { if ((lhs.is_number_float() && std::isnan(lhs.m_data.m_value.number_float) && rhs.is_number()) || (rhs.is_number_float() && std::isnan(rhs.m_data.m_value.number_float) && lhs.is_number())) @@ -26287,11 +26281,11 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe } JSON_PRIVATE_UNLESS_TESTED : - ////////////////////// - // member variables // - ////////////////////// + ////////////////////// + // member variables // + ////////////////////// - struct data + struct data { /// the type of the current element value_t m_type = value_t::null; @@ -27053,7 +27047,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe if (source.type() != target.type()) { // different types: replace value - result.push_back({{"op", "replace"}, {"path", path}, {"value", target}}); + result.push_back({ { "op", "replace" }, { "path", path }, { "value", target } }); return result; } @@ -27080,14 +27074,14 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe { // add operations in reverse order to avoid invalid // indices - result.insert(result.begin() + end_index, object({{"op", "remove"}, {"path", detail::concat(path, '/', std::to_string(i))}})); + result.insert(result.begin() + end_index, object({ { "op", "remove" }, { "path", detail::concat(path, '/', std::to_string(i)) } })); ++i; } // add other remaining elements while (i < target.size()) { - result.push_back({{"op", "add"}, {"path", detail::concat(path, "/-")}, {"value", target[i]}}); + result.push_back({ { "op", "add" }, { "path", detail::concat(path, "/-") }, { "value", target[i] } }); ++i; } @@ -27111,7 +27105,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe else { // found a key that is not in o -> remove it - result.push_back(object({{"op", "remove"}, {"path", path_key}})); + result.push_back(object({ { "op", "remove" }, { "path", path_key } })); } } @@ -27122,7 +27116,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe { // found a key that is not in this -> add it const auto path_key = detail::concat(path, '/', detail::escape(it.key())); - result.push_back({{"op", "add"}, {"path", path_key}, {"value", it.value()}}); + result.push_back({ { "op", "add" }, { "path", path_key }, { "value", it.value() } }); } } @@ -27140,7 +27134,7 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spe default: { // both primitive type: replace value - result.push_back({{"op", "replace"}, {"path", path}, {"value", target}}); + result.push_back({ { "op", "replace" }, { "path", path }, { "value", target } }); break; } } diff --git a/single_include/nlohmann/json_fwd.hpp b/single_include/nlohmann/json_fwd.hpp index ccf06a3e1..7f1a37963 100644 --- a/single_include/nlohmann/json_fwd.hpp +++ b/single_include/nlohmann/json_fwd.hpp @@ -24,8 +24,6 @@ // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT - - // This file contains all macro definitions affecting or depending on the ABI #ifndef JSON_SKIP_LIBRARY_VERSION_CHECK @@ -103,7 +101,6 @@ } // namespace nlohmann #endif - /*! @brief namespace for Niels Lohmann @see https://github.com/nlohmann diff --git a/tests/abi/config/custom.cpp b/tests/abi/config/custom.cpp index c64371376..7ecaeb5e2 100644 --- a/tests/abi/config/custom.cpp +++ b/tests/abi/config/custom.cpp @@ -27,7 +27,7 @@ TEST_CASE("custom namespace") std::string expected = "nlohmann::basic_json"; // fallback for Clang - const std::string ns{STRINGIZE(NLOHMANN_JSON_NAMESPACE) "::basic_json"}; + const std::string ns{ STRINGIZE(NLOHMANN_JSON_NAMESPACE) "::basic_json" }; CHECK(namespace_name(ns) == expected); } diff --git a/tests/abi/config/default.cpp b/tests/abi/config/default.cpp index ae7b9bea6..e15c0165b 100644 --- a/tests/abi/config/default.cpp +++ b/tests/abi/config/default.cpp @@ -33,7 +33,7 @@ TEST_CASE("default namespace") expected += "_" STRINGIZE(NLOHMANN_JSON_VERSION_PATCH) "::basic_json"; // fallback for Clang - const std::string ns{STRINGIZE(NLOHMANN_JSON_NAMESPACE) "::basic_json"}; + const std::string ns{ STRINGIZE(NLOHMANN_JSON_NAMESPACE) "::basic_json" }; CHECK(namespace_name(ns) == expected); } diff --git a/tests/abi/config/noversion.cpp b/tests/abi/config/noversion.cpp index 97d9808f3..a395fd251 100644 --- a/tests/abi/config/noversion.cpp +++ b/tests/abi/config/noversion.cpp @@ -32,7 +32,7 @@ TEST_CASE("default namespace without version component") expected += "::basic_json"; // fallback for Clang - const std::string ns{STRINGIZE(NLOHMANN_JSON_NAMESPACE) "::basic_json"}; + const std::string ns{ STRINGIZE(NLOHMANN_JSON_NAMESPACE) "::basic_json" }; CHECK(namespace_name(ns) == expected); } diff --git a/tests/abi/diag/diag_off.cpp b/tests/abi/diag/diag_off.cpp index cd0d178f7..0867fa3c2 100644 --- a/tests/abi/diag/diag_off.cpp +++ b/tests/abi/diag/diag_off.cpp @@ -25,6 +25,6 @@ std::size_t json_sizeof_diag_off_explicit() void json_at_diag_off() { using nlohmann::json; - json j = json{{"foo", json::object()}}; + json j = json{ { "foo", json::object() } }; j.at(json::json_pointer("/foo/bar")); } diff --git a/tests/abi/diag/diag_on.cpp b/tests/abi/diag/diag_on.cpp index 197a2c0c6..599bc2bb8 100644 --- a/tests/abi/diag/diag_on.cpp +++ b/tests/abi/diag/diag_on.cpp @@ -25,6 +25,6 @@ std::size_t json_sizeof_diag_on_explicit() void json_at_diag_on() { using nlohmann::json; - json j = json{{"foo", json::object()}}; + json j = json{ { "foo", json::object() } }; j.at(json::json_pointer("/foo/bar")); } diff --git a/tests/benchmarks/src/benchmarks.cpp b/tests/benchmarks/src/benchmarks.cpp index bc50a9a1b..cd4a22478 100644 --- a/tests/benchmarks/src/benchmarks.cpp +++ b/tests/benchmarks/src/benchmarks.cpp @@ -162,8 +162,8 @@ static void BinaryToCbor(benchmark::State& state) ++it; } - json::binary_t bin{in}; - json j{{"type", "binary"}, {"data", bin}}; + json::binary_t bin{ in }; + json j{ { "type", "binary" }, { "data", bin } }; while (state.KeepRunning()) { diff --git a/tests/cuda_example/json_cuda.cu b/tests/cuda_example/json_cuda.cu index 657596662..605dc8a2f 100644 --- a/tests/cuda_example/json_cuda.cu +++ b/tests/cuda_example/json_cuda.cu @@ -10,7 +10,7 @@ int main() { - nlohmann::ordered_json json = {"Test"}; + nlohmann::ordered_json json = { "Test" }; json.dump(); // regression for #3013 (ordered_json::reset() compile error with nvcc) diff --git a/tests/src/unit-32bit.cpp b/tests/src/unit-32bit.cpp index eceb9781b..e00395148 100644 --- a/tests/src/unit-32bit.cpp +++ b/tests/src/unit-32bit.cpp @@ -106,8 +106,8 @@ TEST_CASE("BJData") { SECTION("optimized array: negative size") { - std::vector const vM = {'[', '$', 'M', '#', '[', 'I', 0x00, 0x20, 'M', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, ']'}; - std::vector const vMX = {'[', '$', 'U', '#', '[', 'M', 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 'U', 0x01, ']'}; + std::vector const vM = { '[', '$', 'M', '#', '[', 'I', 0x00, 0x20, 'M', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, ']' }; + std::vector const vMX = { '[', '$', 'U', '#', '[', 'M', 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 'U', 0x01, ']' }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vM), @@ -123,8 +123,8 @@ TEST_CASE("BJData") SECTION("optimized array: integer value overflow") { - std::vector const vL = {'[', '#', 'L', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F}; - std::vector const vM = {'[', '$', 'M', '#', '[', 'I', 0x00, 0x20, 'M', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, ']'}; + std::vector const vL = { '[', '#', 'L', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F }; + std::vector const vM = { '[', '$', 'M', '#', '[', 'I', 0x00, 0x20, 'M', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, ']' }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vL), diff --git a/tests/src/unit-algorithms.cpp b/tests/src/unit-algorithms.cpp index 1a9049f00..f7e92349e 100644 --- a/tests/src/unit-algorithms.cpp +++ b/tests/src/unit-algorithms.cpp @@ -14,8 +14,8 @@ using nlohmann::json; TEST_CASE("algorithms") { - json j_array = {13, 29, 3, {{"one", 1}, {"two", 2}}, true, false, {1, 2, 3}, "foo", "baz"}; - json j_object = {{"one", 1}, {"two", 2}}; + json j_array = { 13, 29, 3, { { "one", 1 }, { "two", 2 } }, true, false, { 1, 2, 3 }, "foo", "baz" }; + json j_object = { { "one", 1 }, { "two", 2 } }; SECTION("non-modifying sequence operations") { @@ -76,7 +76,7 @@ TEST_CASE("algorithms") std::for_each(j_array.begin(), j_array.end(), add17); - CHECK(j_array[6] == json({1, 2, 3, 17})); + CHECK(j_array[6] == json({ 1, 2, 3, 17 })); } } @@ -97,10 +97,10 @@ TEST_CASE("algorithms") SECTION("std::mismatch") { - json j_array2 = {13, 29, 3, {{"one", 1}, {"two", 2}, {"three", 3}}, true, false, {1, 2, 3}, "foo", "baz"}; + json j_array2 = { 13, 29, 3, { { "one", 1 }, { "two", 2 }, { "three", 3 } }, true, false, { 1, 2, 3 }, "foo", "baz" }; auto res = std::mismatch(j_array.begin(), j_array.end(), j_array2.begin()); - CHECK(*res.first == json({{"one", 1}, {"two", 2}})); - CHECK(*res.second == json({{"one", 1}, {"two", 2}, {"three", 3}})); + CHECK(*res.first == json({ { "one", 1 }, { "two", 2 } })); + CHECK(*res.second == json({ { "one", 1 }, { "two", 2 }, { "three", 3 } })); } SECTION("std::equal") @@ -115,7 +115,7 @@ TEST_CASE("algorithms") SECTION("using user-defined comparison") { // compare objects only by size of its elements - json j_array2 = {13, 29, 3, {"Hello", "World"}, true, false, {{"one", 1}, {"two", 2}, {"three", 3}}, "foo", "baz"}; + json j_array2 = { 13, 29, 3, { "Hello", "World" }, true, false, { { "one", 1 }, { "two", 2 }, { "three", 3 } }, "foo", "baz" }; CHECK(!std::equal(j_array.begin(), j_array.end(), j_array2.begin())); CHECK(std::equal(j_array.begin(), j_array.end(), j_array2.begin(), [](const json& a, const json& b) { return (a.size() == b.size()); @@ -159,13 +159,13 @@ TEST_CASE("algorithms") SECTION("std::reverse") { std::reverse(j_array.begin(), j_array.end()); - CHECK(j_array == json({"baz", "foo", {1, 2, 3}, false, true, {{"one", 1}, {"two", 2}}, 3, 29, 13})); + CHECK(j_array == json({ "baz", "foo", { 1, 2, 3 }, false, true, { { "one", 1 }, { "two", 2 } }, 3, 29, 13 })); } SECTION("std::rotate") { std::rotate(j_array.begin(), j_array.begin() + 1, j_array.end()); - CHECK(j_array == json({29, 3, {{"one", 1}, {"two", 2}}, true, false, {1, 2, 3}, "foo", "baz", 13})); + CHECK(j_array == json({ 29, 3, { { "one", 1 }, { "two", 2 } }, true, false, { 1, 2, 3 }, "foo", "baz", 13 })); } SECTION("std::partition") @@ -184,23 +184,23 @@ TEST_CASE("algorithms") { SECTION("with standard comparison") { - json j = {13, 29, 3, {{"one", 1}, {"two", 2}}, true, false, {1, 2, 3}, "foo", "baz", nullptr}; + json j = { 13, 29, 3, { { "one", 1 }, { "two", 2 } }, true, false, { 1, 2, 3 }, "foo", "baz", nullptr }; std::sort(j.begin(), j.end()); - CHECK(j == json({nullptr, false, true, 3, 13, 29, {{"one", 1}, {"two", 2}}, {1, 2, 3}, "baz", "foo"})); + CHECK(j == json({ nullptr, false, true, 3, 13, 29, { { "one", 1 }, { "two", 2 } }, { 1, 2, 3 }, "baz", "foo" })); } SECTION("with user-defined comparison") { - json j = {3, {{"one", 1}, {"two", 2}}, {1, 2, 3}, nullptr}; + json j = { 3, { { "one", 1 }, { "two", 2 } }, { 1, 2, 3 }, nullptr }; std::sort(j.begin(), j.end(), [](const json& a, const json& b) { return a.size() < b.size(); }); - CHECK(j == json({nullptr, 3, {{"one", 1}, {"two", 2}}, {1, 2, 3}})); + CHECK(j == json({ nullptr, 3, { { "one", 1 }, { "two", 2 } }, { 1, 2, 3 } })); } SECTION("sorting an object") { - json j({{"one", 1}, {"two", 2}}); + json j({ { "one", 1 }, { "two", 2 } }); CHECK_THROWS_WITH_AS(std::sort(j.begin(), j.end()), "[json.exception.invalid_iterator.209] cannot use offsets with object iterators", json::invalid_iterator&); @@ -209,9 +209,9 @@ TEST_CASE("algorithms") SECTION("std::partial_sort") { - json j = {13, 29, 3, {{"one", 1}, {"two", 2}}, true, false, {1, 2, 3}, "foo", "baz", nullptr}; + json j = { 13, 29, 3, { { "one", 1 }, { "two", 2 } }, true, false, { 1, 2, 3 }, "foo", "baz", nullptr }; std::partial_sort(j.begin(), j.begin() + 4, j.end()); - CHECK(j == json({nullptr, false, true, 3, {{"one", 1}, {"two", 2}}, 29, {1, 2, 3}, "foo", "baz", 13})); + CHECK(j == json({ nullptr, false, true, 3, { { "one", 1 }, { "two", 2 } }, 29, { 1, 2, 3 }, "foo", "baz", 13 })); } } @@ -220,53 +220,53 @@ TEST_CASE("algorithms") SECTION("std::merge") { { - json j1 = {2, 4, 6, 8}; - json j2 = {1, 2, 3, 5, 7}; + json j1 = { 2, 4, 6, 8 }; + json j2 = { 1, 2, 3, 5, 7 }; json j3; std::merge(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); - CHECK(j3 == json({1, 2, 2, 3, 4, 5, 6, 7, 8})); + CHECK(j3 == json({ 1, 2, 2, 3, 4, 5, 6, 7, 8 })); } } SECTION("std::set_difference") { - json j1 = {1, 2, 3, 4, 5, 6, 7, 8}; - json j2 = {1, 2, 3, 5, 7}; + json j1 = { 1, 2, 3, 4, 5, 6, 7, 8 }; + json j2 = { 1, 2, 3, 5, 7 }; json j3; std::set_difference(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); - CHECK(j3 == json({4, 6, 8})); + CHECK(j3 == json({ 4, 6, 8 })); } SECTION("std::set_intersection") { - json j1 = {1, 2, 3, 4, 5, 6, 7, 8}; - json j2 = {1, 2, 3, 5, 7}; + json j1 = { 1, 2, 3, 4, 5, 6, 7, 8 }; + json j2 = { 1, 2, 3, 5, 7 }; json j3; std::set_intersection(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); - CHECK(j3 == json({1, 2, 3, 5, 7})); + CHECK(j3 == json({ 1, 2, 3, 5, 7 })); } SECTION("std::set_union") { - json j1 = {2, 4, 6, 8}; - json j2 = {1, 2, 3, 5, 7}; + json j1 = { 2, 4, 6, 8 }; + json j2 = { 1, 2, 3, 5, 7 }; json j3; std::set_union(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); - CHECK(j3 == json({1, 2, 3, 4, 5, 6, 7, 8})); + CHECK(j3 == json({ 1, 2, 3, 4, 5, 6, 7, 8 })); } SECTION("std::set_symmetric_difference") { - json j1 = {2, 4, 6, 8}; - json j2 = {1, 2, 3, 5, 7}; + json j1 = { 2, 4, 6, 8 }; + json j2 = { 1, 2, 3, 5, 7 }; json j3; std::set_symmetric_difference(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); - CHECK(j3 == json({1, 3, 4, 5, 6, 7, 8})); + CHECK(j3 == json({ 1, 3, 4, 5, 6, 7, 8 })); } } @@ -275,29 +275,29 @@ TEST_CASE("algorithms") std::make_heap(j_array.begin(), j_array.end()); CHECK(std::is_heap(j_array.begin(), j_array.end())); std::sort_heap(j_array.begin(), j_array.end()); - CHECK(j_array == json({false, true, 3, 13, 29, {{"one", 1}, {"two", 2}}, {1, 2, 3}, "baz", "foo"})); + CHECK(j_array == json({ false, true, 3, 13, 29, { { "one", 1 }, { "two", 2 } }, { 1, 2, 3 }, "baz", "foo" })); } SECTION("iota") { SECTION("int") { - json json_arr = {0, 5, 2, 4, 10, 20, 30, 40, 50, 1}; + json json_arr = { 0, 5, 2, 4, 10, 20, 30, 40, 50, 1 }; std::iota(json_arr.begin(), json_arr.end(), 0); - CHECK(json_arr == json({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})); + CHECK(json_arr == json({ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 })); } SECTION("double") { - json json_arr = {0.5, 1.5, 1.3, 4.1, 10.2, 20.5, 30.6, 40.1, 50.22, 1.5}; + json json_arr = { 0.5, 1.5, 1.3, 4.1, 10.2, 20.5, 30.6, 40.1, 50.22, 1.5 }; std::iota(json_arr.begin(), json_arr.end(), 0.5); - CHECK(json_arr == json({0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5})); + CHECK(json_arr == json({ 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5 })); } SECTION("char") { - json json_arr = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', '0', '1'}; + json json_arr = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', '0', '1' }; std::iota(json_arr.begin(), json_arr.end(), '0'); - CHECK(json_arr == json({'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'})); + CHECK(json_arr == json({ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' })); } } @@ -306,7 +306,7 @@ TEST_CASE("algorithms") SECTION("copy without if") { json dest_arr; - const json source_arr = {1, 2, 3, 4}; + const json source_arr = { 1, 2, 3, 4 }; std::copy(source_arr.begin(), source_arr.end(), std::back_inserter(dest_arr)); @@ -315,30 +315,30 @@ TEST_CASE("algorithms") SECTION("copy if") { json dest_arr; - const json source_arr = {0, 3, 6, 9, 12, 15, 20}; + const json source_arr = { 0, 3, 6, 9, 12, 15, 20 }; std::copy_if(source_arr.begin(), source_arr.end(), std::back_inserter(dest_arr), [](const json& _value) { return _value.get() % 3 == 0; }); - CHECK(dest_arr == json({0, 3, 6, 9, 12, 15})); + CHECK(dest_arr == json({ 0, 3, 6, 9, 12, 15 })); } SECTION("copy n") { - const json source_arr = {0, 1, 2, 3, 4, 5, 6, 7}; + const json source_arr = { 0, 1, 2, 3, 4, 5, 6, 7 }; json dest_arr; const unsigned char numToCopy = 2; std::copy_n(source_arr.begin(), numToCopy, std::back_inserter(dest_arr)); - CHECK(dest_arr == json{0, 1}); + CHECK(dest_arr == json{ 0, 1 }); } SECTION("copy n chars") { - const json source_arr = {'1', '2', '3', '4', '5', '6', '7'}; + const json source_arr = { '1', '2', '3', '4', '5', '6', '7' }; json dest_arr; const unsigned char numToCopy = 4; std::copy_n(source_arr.begin(), numToCopy, std::back_inserter(dest_arr)); - CHECK(dest_arr == json{'1', '2', '3', '4'}); + CHECK(dest_arr == json{ '1', '2', '3', '4' }); } } } diff --git a/tests/src/unit-allocator.cpp b/tests/src/unit-allocator.cpp index 98a8ac6b2..c2f76c4aa 100644 --- a/tests/src/unit-allocator.cpp +++ b/tests/src/unit-allocator.cpp @@ -169,7 +169,7 @@ TEST_CASE("controlled bad_alloc") SECTION("basic_json(const CompatibleObjectType&)") { next_construct_fails = false; - const std::map v{{"foo", "bar"}}; + const std::map v{ { "foo", "bar" } }; CHECK_NOTHROW(my_json(v)); next_construct_fails = true; CHECK_THROWS_AS(my_json(v), std::bad_alloc&); @@ -179,7 +179,7 @@ TEST_CASE("controlled bad_alloc") SECTION("basic_json(const CompatibleArrayType&)") { next_construct_fails = false; - const std::vector v{"foo", "bar", "baz"}; + const std::vector v{ "foo", "bar", "baz" }; CHECK_NOTHROW(my_json(v)); next_construct_fails = true; CHECK_THROWS_AS(my_json(v), std::bad_alloc&); diff --git a/tests/src/unit-alt-string.cpp b/tests/src/unit-alt-string.cpp index 4c31f833d..98aaad87f 100644 --- a/tests/src/unit-alt-string.cpp +++ b/tests/src/unit-alt-string.cpp @@ -154,7 +154,7 @@ class alt_string alt_string substr(std::size_t pos = 0, std::size_t count = npos) const { const std::string s = str_impl.substr(pos, count); - return {s.data(), s.size()}; + return { s.data(), s.size() }; } alt_string& replace(std::size_t pos, std::size_t count, const alt_string& str) @@ -222,14 +222,14 @@ TEST_CASE("alternative string type") { alt_json doc; - doc["list"] = {1, 0, 2}; + doc["list"] = { 1, 0, 2 }; alt_string dump = doc.dump(); CHECK(dump == R"({"list":[1,0,2]})"); } { alt_json doc; - doc["object"] = {{"currency", "USD"}, {"value", 42.99}}; + doc["object"] = { { "currency", "USD" }, { "value", 42.99 } }; alt_string dump = doc.dump(); CHECK(dump == R"({"object":{"currency":"USD","value":42.99}})"); } diff --git a/tests/src/unit-binary_formats.cpp b/tests/src/unit-binary_formats.cpp index 615b431d4..c63d3a269 100644 --- a/tests/src/unit-binary_formats.cpp +++ b/tests/src/unit-binary_formats.cpp @@ -142,7 +142,7 @@ TEST_CASE("Binary Formats" * doctest::skip()) const auto bjdata_1_size = json::to_bjdata(j).size(); const auto bjdata_2_size = json::to_bjdata(j, true).size(); const auto bjdata_3_size = json::to_bjdata(j, true, true).size(); - const auto bson_size = json::to_bson({{"", j}}).size(); // wrap array in object for BSON + const auto bson_size = json::to_bson({ { "", j } }).size(); // wrap array in object for BSON const auto cbor_size = json::to_cbor(j).size(); const auto msgpack_size = json::to_msgpack(j).size(); const auto ubjson_1_size = json::to_ubjson(j).size(); diff --git a/tests/src/unit-bjdata.cpp b/tests/src/unit-bjdata.cpp index dec0a14c5..6d1a789ea 100644 --- a/tests/src/unit-bjdata.cpp +++ b/tests/src/unit-bjdata.cpp @@ -215,7 +215,7 @@ TEST_CASE("BJData") std::vector const data; auto ia = nlohmann::detail::input_adapter(data); // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) - nlohmann::detail::binary_reader const br{std::move(ia), json::input_format_t::bjdata}; + nlohmann::detail::binary_reader const br{ std::move(ia), json::input_format_t::bjdata }; CHECK(std::is_sorted(br.bjd_optimized_type_markers.begin(), br.bjd_optimized_type_markers.end())); CHECK(std::is_sorted(br.bjd_types_map.begin(), br.bjd_types_map.end())); @@ -234,7 +234,7 @@ TEST_CASE("BJData") SECTION("null") { json const j = nullptr; - std::vector const expected = {'Z'}; + std::vector const expected = { 'Z' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -248,7 +248,7 @@ TEST_CASE("BJData") SECTION("true") { json const j = true; - std::vector const expected = {'T'}; + std::vector const expected = { 'T' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -260,7 +260,7 @@ TEST_CASE("BJData") SECTION("false") { json const j = false; - std::vector const expected = {'F'}; + std::vector const expected = { 'F' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -334,12 +334,7 @@ TEST_CASE("BJData") SECTION("-2147483648..-32769 (int32)") { std::vector const numbers{ - -32769, - -100000, - -1000000, - -10000000, - -100000000, - -1000000000, + -32769, -100000, -1000000, -10000000, -100000000, -1000000000, -2147483647 - 1, // https://stackoverflow.com/a/29356002/266378 }; for (const auto i : numbers) @@ -416,7 +411,7 @@ TEST_CASE("BJData") SECTION("-9263 (int16)") { json const j = -9263; - std::vector const expected = {'I', 0xd1, 0xdb}; + std::vector const expected = { 'I', 0xd1, 0xdb }; // compare result + size const auto result = json::to_bjdata(j); @@ -572,7 +567,7 @@ TEST_CASE("BJData") SECTION("32768..65535 (uint16)") { - for (const uint32_t i : {32768u, 55555u, 65535u}) + for (const uint32_t i : { 32768u, 55555u, 65535u }) { CAPTURE(i) @@ -608,7 +603,7 @@ TEST_CASE("BJData") SECTION("65536..2147483647 (int32)") { - for (const uint32_t i : {65536u, 77777u, 2147483647u}) + for (const uint32_t i : { 65536u, 77777u, 2147483647u }) { CAPTURE(i) @@ -647,7 +642,7 @@ TEST_CASE("BJData") SECTION("2147483648..4294967295 (uint32)") { - for (const uint32_t i : {2147483648u, 3333333333u, 4294967295u}) + for (const uint32_t i : { 2147483648u, 3333333333u, 4294967295u }) { CAPTURE(i) @@ -686,7 +681,7 @@ TEST_CASE("BJData") SECTION("4294967296..9223372036854775807 (int64)") { - std::vector const v = {4294967296LU, 9223372036854775807LU}; + std::vector const v = { 4294967296LU, 9223372036854775807LU }; for (const uint64_t i : v) { CAPTURE(i) @@ -732,7 +727,7 @@ TEST_CASE("BJData") SECTION("9223372036854775808..18446744073709551615 (uint64)") { - std::vector const v = {9223372036854775808ull, 18446744073709551615ull}; + std::vector const v = { 9223372036854775808ull, 18446744073709551615ull }; for (const uint64_t i : v) { CAPTURE(i) @@ -791,7 +786,7 @@ TEST_CASE("BJData") CHECK(j.is_number_unsigned()); // create expected byte vector - std::vector const expected{'i', static_cast(i)}; + std::vector const expected{ 'i', static_cast(i) }; // compare result + size const auto result = json::to_bjdata(j); @@ -822,7 +817,7 @@ TEST_CASE("BJData") CHECK(j.is_number_unsigned()); // create expected byte vector - std::vector const expected{'U', static_cast(i)}; + std::vector const expected{ 'U', static_cast(i) }; // compare result + size const auto result = json::to_bjdata(j); @@ -877,7 +872,7 @@ TEST_CASE("BJData") SECTION("32768..65535 (uint16)") { - for (const uint32_t i : {32768u, 55555u, 65535u}) + for (const uint32_t i : { 32768u, 55555u, 65535u }) { CAPTURE(i) @@ -911,7 +906,7 @@ TEST_CASE("BJData") } SECTION("65536..2147483647 (int32)") { - for (const uint32_t i : {65536u, 77777u, 2147483647u}) + for (const uint32_t i : { 65536u, 77777u, 2147483647u }) { CAPTURE(i) @@ -949,7 +944,7 @@ TEST_CASE("BJData") SECTION("2147483648..4294967295 (uint32)") { - for (const uint32_t i : {2147483648u, 3333333333u, 4294967295u}) + for (const uint32_t i : { 2147483648u, 3333333333u, 4294967295u }) { CAPTURE(i) @@ -987,7 +982,7 @@ TEST_CASE("BJData") SECTION("4294967296..9223372036854775807 (int64)") { - std::vector const v = {4294967296ul, 9223372036854775807ul}; + std::vector const v = { 4294967296ul, 9223372036854775807ul }; for (const uint64_t i : v) { CAPTURE(i) @@ -1032,7 +1027,7 @@ TEST_CASE("BJData") SECTION("9223372036854775808..18446744073709551615 (uint64)") { - std::vector const v = {9223372036854775808ull, 18446744073709551615ull}; + std::vector const v = { 9223372036854775808ull, 18446744073709551615ull }; for (const uint64_t i : v) { CAPTURE(i) @@ -1081,7 +1076,7 @@ TEST_CASE("BJData") { double v = 3.1415925; json const j = v; - std::vector const expected = {'D', 0xfc, 0xde, 0xa6, 0x3f, 0xfb, 0x21, 0x09, 0x40}; + std::vector const expected = { 'D', 0xfc, 0xde, 0xa6, 0x3f, 0xfb, 0x21, 0x09, 0x40 }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -1096,11 +1091,11 @@ TEST_CASE("BJData") { SECTION("simple half floats") { - CHECK(json::parse("0.0") == json::from_bjdata(std::vector({'h', 0x00, 0x00}))); - CHECK(json::parse("-0.0") == json::from_bjdata(std::vector({'h', 0x00, 0x80}))); - CHECK(json::parse("1.0") == json::from_bjdata(std::vector({'h', 0x00, 0x3c}))); - CHECK(json::parse("1.5") == json::from_bjdata(std::vector({'h', 0x00, 0x3e}))); - CHECK(json::parse("65504.0") == json::from_bjdata(std::vector({'h', 0xff, 0x7b}))); + CHECK(json::parse("0.0") == json::from_bjdata(std::vector({ 'h', 0x00, 0x00 }))); + CHECK(json::parse("-0.0") == json::from_bjdata(std::vector({ 'h', 0x00, 0x80 }))); + CHECK(json::parse("1.0") == json::from_bjdata(std::vector({ 'h', 0x00, 0x3c }))); + CHECK(json::parse("1.5") == json::from_bjdata(std::vector({ 'h', 0x00, 0x3e }))); + CHECK(json::parse("65504.0") == json::from_bjdata(std::vector({ 'h', 0xff, 0x7b }))); } SECTION("errors") @@ -1108,7 +1103,7 @@ TEST_CASE("BJData") SECTION("no byte follows") { json _; - std::vector const vec0 = {'h'}; + std::vector const vec0 = { 'h' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vec0), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing BJData number: unexpected end of input", @@ -1119,7 +1114,7 @@ TEST_CASE("BJData") SECTION("only one byte follows") { json _; - std::vector const vec1 = {'h', 0x00}; + std::vector const vec1 = { 'h', 0x00 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vec1), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing BJData number: unexpected end of input", @@ -1135,22 +1130,22 @@ TEST_CASE("BJData") { SECTION("0 (0 00000 0000000000)") { - json const j = json::from_bjdata(std::vector({'h', 0x00, 0x00})); - json::number_float_t d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0x00, 0x00 })); + json::number_float_t d{ j }; CHECK(d == 0.0); } SECTION("-0 (1 00000 0000000000)") { - json const j = json::from_bjdata(std::vector({'h', 0x00, 0x80})); - json::number_float_t d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0x00, 0x80 })); + json::number_float_t d{ j }; CHECK(d == -0.0); } SECTION("2**-24 (0 00000 0000000001)") { - json const j = json::from_bjdata(std::vector({'h', 0x01, 0x00})); - json::number_float_t d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0x01, 0x00 })); + json::number_float_t d{ j }; CHECK(d == std::pow(2.0, -24.0)); } } @@ -1159,16 +1154,16 @@ TEST_CASE("BJData") { SECTION("infinity (0 11111 0000000000)") { - json const j = json::from_bjdata(std::vector({'h', 0x00, 0x7c})); - json::number_float_t d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0x00, 0x7c })); + json::number_float_t d{ j }; CHECK(d == std::numeric_limits::infinity()); CHECK(j.dump() == "null"); } SECTION("-infinity (1 11111 0000000000)") { - json const j = json::from_bjdata(std::vector({'h', 0x00, 0xfc})); - json::number_float_t d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0x00, 0xfc })); + json::number_float_t d{ j }; CHECK(d == -std::numeric_limits::infinity()); CHECK(j.dump() == "null"); } @@ -1178,38 +1173,38 @@ TEST_CASE("BJData") { SECTION("1 (0 01111 0000000000)") { - json const j = json::from_bjdata(std::vector({'h', 0x00, 0x3c})); - json::number_float_t d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0x00, 0x3c })); + json::number_float_t d{ j }; CHECK(d == 1); } SECTION("-2 (1 10000 0000000000)") { - json const j = json::from_bjdata(std::vector({'h', 0x00, 0xc0})); - json::number_float_t d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0x00, 0xc0 })); + json::number_float_t d{ j }; CHECK(d == -2); } SECTION("65504 (0 11110 1111111111)") { - json const j = json::from_bjdata(std::vector({'h', 0xff, 0x7b})); - json::number_float_t d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0xff, 0x7b })); + json::number_float_t d{ j }; CHECK(d == 65504); } } SECTION("infinity") { - json const j = json::from_bjdata(std::vector({'h', 0x00, 0x7c})); - json::number_float_t const d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0x00, 0x7c })); + json::number_float_t const d{ j }; CHECK_FALSE(std::isfinite(d)); CHECK(j.dump() == "null"); } SECTION("NaN") { - json const j = json::from_bjdata(std::vector({'h', 0x00, 0x7e})); - json::number_float_t const d{j}; + json const j = json::from_bjdata(std::vector({ 'h', 0x00, 0x7e })); + json::number_float_t const d{ j }; CHECK(std::isnan(d)); CHECK(j.dump() == "null"); } @@ -1219,8 +1214,8 @@ TEST_CASE("BJData") { SECTION("unsigned integer number") { - std::vector const vec = {'H', 'i', 0x14, '1', '2', '3', '4', '5', '6', '7', '8', '9', - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'}; + std::vector const vec = { 'H', 'i', 0x14, '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' }; const auto j = json::from_bjdata(vec); CHECK(j.is_number_unsigned()); CHECK(j.dump() == "12345678901234567890"); @@ -1228,8 +1223,8 @@ TEST_CASE("BJData") SECTION("signed integer number") { - std::vector const vec = {'H', 'i', 0x13, '-', '1', '2', '3', '4', '5', '6', '7', - '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8'}; + std::vector const vec = { 'H', 'i', 0x13, '-', '1', '2', '3', '4', '5', '6', '7', + '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8' }; const auto j = json::from_bjdata(vec); CHECK(j.is_number_integer()); CHECK(j.dump() == "-123456789012345678"); @@ -1237,8 +1232,8 @@ TEST_CASE("BJData") SECTION("floating-point number") { - std::vector const vec = {'H', 'i', 0x16, '3', '.', '1', '4', '1', '5', '9', '2', '6', '5', - '3', '5', '8', '9', '7', '9', '3', '2', '3', '8', '4', '6'}; + std::vector const vec = { 'H', 'i', 0x16, '3', '.', '1', '4', '1', '5', '9', '2', '6', '5', + '3', '5', '8', '9', '7', '9', '3', '2', '3', '8', '4', '6' }; const auto j = json::from_bjdata(vec); CHECK(j.is_number_float()); CHECK(j.dump() == "3.141592653589793"); @@ -1247,24 +1242,24 @@ TEST_CASE("BJData") SECTION("errors") { // error while parsing length - std::vector const vec0 = {'H', 'i'}; + std::vector const vec0 = { 'H', 'i' }; CHECK(json::from_bjdata(vec0, true, false).is_discarded()); // error while parsing string - std::vector const vec1 = {'H', 'i', '1'}; + std::vector const vec1 = { 'H', 'i', '1' }; CHECK(json::from_bjdata(vec1, true, false).is_discarded()); json _; - std::vector const vec2 = {'H', 'i', 2, '1', 'A', '3'}; + std::vector const vec2 = { 'H', 'i', 2, '1', 'A', '3' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vec2), "[json.exception.parse_error.115] parse error at byte 5: syntax error while parsing BJData high-precision number: invalid number text: 1A", json::parse_error); - std::vector const vec3 = {'H', 'i', 2, '1', '.'}; + std::vector const vec3 = { 'H', 'i', 2, '1', '.' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vec3), "[json.exception.parse_error.115] parse error at byte 5: syntax error while parsing BJData high-precision number: invalid number text: 1.", json::parse_error); - std::vector const vec4 = {'H', 2, '1', '0'}; + std::vector const vec4 = { 'H', 2, '1', '0' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vec4), "[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing BJData size: expected length type specification (U, i, u, I, m, l, M, L) after '#'; last byte: 0x02", @@ -1346,7 +1341,7 @@ TEST_CASE("BJData") SECTION("N = 256..32767") { - for (const size_t N : {256u, 999u, 1025u, 3333u, 2048u, 32767u}) + for (const size_t N : { 256u, 999u, 1025u, 3333u, 2048u, 32767u }) { CAPTURE(N) @@ -1377,7 +1372,7 @@ TEST_CASE("BJData") SECTION("N = 32768..65535") { - for (const size_t N : {32768u, 55555u, 65535u}) + for (const size_t N : { 32768u, 55555u, 65535u }) { CAPTURE(N) @@ -1408,7 +1403,7 @@ TEST_CASE("BJData") SECTION("N = 65536..2147483647") { - for (const size_t N : {65536u, 77777u, 1048576u}) + for (const size_t N : { 65536u, 77777u, 1048576u }) { CAPTURE(N) @@ -1532,7 +1527,7 @@ TEST_CASE("BJData") SECTION("N = 256..32767") { - for (const std::size_t N : {256u, 999u, 1025u, 3333u, 2048u, 32767u}) + for (const std::size_t N : { 256u, 999u, 1025u, 3333u, 2048u, 32767u }) { CAPTURE(N) @@ -1566,7 +1561,7 @@ TEST_CASE("BJData") SECTION("N = 32768..65535") { - for (const std::size_t N : {32768u, 55555u, 65535u}) + for (const std::size_t N : { 32768u, 55555u, 65535u }) { CAPTURE(N) @@ -1600,7 +1595,7 @@ TEST_CASE("BJData") SECTION("N = 65536..2147483647") { - for (const std::size_t N : {65536u, 77777u, 1048576u}) + for (const std::size_t N : { 65536u, 77777u, 1048576u }) { CAPTURE(N) @@ -1699,7 +1694,7 @@ TEST_CASE("BJData") SECTION("size=false type=false") { json const j = json::array(); - std::vector const expected = {'[', ']'}; + std::vector const expected = { '[', ']' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -1711,7 +1706,7 @@ TEST_CASE("BJData") SECTION("size=true type=false") { json const j = json::array(); - std::vector const expected = {'[', '#', 'i', 0}; + std::vector const expected = { '[', '#', 'i', 0 }; const auto result = json::to_bjdata(j, true); CHECK(result == expected); @@ -1723,7 +1718,7 @@ TEST_CASE("BJData") SECTION("size=true type=true") { json const j = json::array(); - std::vector const expected = {'[', '#', 'i', 0}; + std::vector const expected = { '[', '#', 'i', 0 }; const auto result = json::to_bjdata(j, true, true); CHECK(result == expected); @@ -1737,8 +1732,8 @@ TEST_CASE("BJData") { SECTION("size=false type=false") { - json const j = {nullptr}; - std::vector const expected = {'[', 'Z', ']'}; + json const j = { nullptr }; + std::vector const expected = { '[', 'Z', ']' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -1749,8 +1744,8 @@ TEST_CASE("BJData") SECTION("size=true type=false") { - json const j = {nullptr}; - std::vector const expected = {'[', '#', 'i', 1, 'Z'}; + json const j = { nullptr }; + std::vector const expected = { '[', '#', 'i', 1, 'Z' }; const auto result = json::to_bjdata(j, true); CHECK(result == expected); @@ -1761,8 +1756,8 @@ TEST_CASE("BJData") SECTION("size=true type=true") { - json const j = {nullptr}; - std::vector const expected = {'[', '#', 'i', 1, 'Z'}; + json const j = { nullptr }; + std::vector const expected = { '[', '#', 'i', 1, 'Z' }; const auto result = json::to_bjdata(j, true, true); CHECK(result == expected); @@ -1777,7 +1772,7 @@ TEST_CASE("BJData") SECTION("size=false type=false") { json const j = json::parse("[1,2,3,4,5]"); - std::vector const expected = {'[', 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5, ']'}; + std::vector const expected = { '[', 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5, ']' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -1789,7 +1784,7 @@ TEST_CASE("BJData") SECTION("size=true type=false") { json const j = json::parse("[1,2,3,4,5]"); - std::vector const expected = {'[', '#', 'i', 5, 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5}; + std::vector const expected = { '[', '#', 'i', 5, 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5 }; const auto result = json::to_bjdata(j, true); CHECK(result == expected); @@ -1801,7 +1796,7 @@ TEST_CASE("BJData") SECTION("size=true type=true") { json const j = json::parse("[1,2,3,4,5]"); - std::vector const expected = {'[', '$', 'i', '#', 'i', 5, 1, 2, 3, 4, 5}; + std::vector const expected = { '[', '$', 'i', '#', 'i', 5, 1, 2, 3, 4, 5 }; const auto result = json::to_bjdata(j, true, true); CHECK(result == expected); @@ -1816,7 +1811,7 @@ TEST_CASE("BJData") SECTION("size=false type=false") { json const j = json::parse("[[[[]]]]"); - std::vector const expected = {'[', '[', '[', '[', ']', ']', ']', ']'}; + std::vector const expected = { '[', '[', '[', '[', ']', ']', ']', ']' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -1828,7 +1823,7 @@ TEST_CASE("BJData") SECTION("size=true type=false") { json const j = json::parse("[[[[]]]]"); - std::vector const expected = {'[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 0}; + std::vector const expected = { '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 0 }; const auto result = json::to_bjdata(j, true); CHECK(result == expected); @@ -1840,7 +1835,7 @@ TEST_CASE("BJData") SECTION("size=true type=true") { json const j = json::parse("[[[[]]]]"); - std::vector const expected = {'[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 0}; + std::vector const expected = { '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 0 }; const auto result = json::to_bjdata(j, true, true); CHECK(result == expected); @@ -1962,7 +1957,7 @@ TEST_CASE("BJData") SECTION("size=false type=false") { json const j = json::object(); - std::vector const expected = {'{', '}'}; + std::vector const expected = { '{', '}' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -1974,7 +1969,7 @@ TEST_CASE("BJData") SECTION("size=true type=false") { json const j = json::object(); - std::vector const expected = {'{', '#', 'i', 0}; + std::vector const expected = { '{', '#', 'i', 0 }; const auto result = json::to_bjdata(j, true); CHECK(result == expected); @@ -1986,7 +1981,7 @@ TEST_CASE("BJData") SECTION("size=true type=true") { json const j = json::object(); - std::vector const expected = {'{', '#', 'i', 0}; + std::vector const expected = { '{', '#', 'i', 0 }; const auto result = json::to_bjdata(j, true, true); CHECK(result == expected); @@ -2000,8 +1995,8 @@ TEST_CASE("BJData") { SECTION("size=false type=false") { - json const j = {{"", nullptr}}; - std::vector const expected = {'{', 'i', 0, 'Z', '}'}; + json const j = { { "", nullptr } }; + std::vector const expected = { '{', 'i', 0, 'Z', '}' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -2012,8 +2007,8 @@ TEST_CASE("BJData") SECTION("size=true type=false") { - json const j = {{"", nullptr}}; - std::vector const expected = {'{', '#', 'i', 1, 'i', 0, 'Z'}; + json const j = { { "", nullptr } }; + std::vector const expected = { '{', '#', 'i', 1, 'i', 0, 'Z' }; const auto result = json::to_bjdata(j, true); CHECK(result == expected); @@ -2028,7 +2023,7 @@ TEST_CASE("BJData") SECTION("size=false type=false") { json const j = json::parse(R"({"a": {"b": {"c": {}}}})"); - std::vector const expected = {'{', 'i', 1, 'a', '{', 'i', 1, 'b', '{', 'i', 1, 'c', '{', '}', '}', '}', '}'}; + std::vector const expected = { '{', 'i', 1, 'a', '{', 'i', 1, 'b', '{', 'i', 1, 'c', '{', '}', '}', '}', '}' }; const auto result = json::to_bjdata(j); CHECK(result == expected); @@ -2040,8 +2035,8 @@ TEST_CASE("BJData") SECTION("size=true type=false") { json const j = json::parse(R"({"a": {"b": {"c": {}}}})"); - std::vector const expected = {'{', '#', 'i', 1, 'i', 1, 'a', '{', '#', 'i', 1, 'i', 1, - 'b', '{', '#', 'i', 1, 'i', 1, 'c', '{', '#', 'i', 0}; + std::vector const expected = { '{', '#', 'i', 1, 'i', 1, 'a', '{', '#', 'i', 1, 'i', 1, + 'b', '{', '#', 'i', 1, 'i', 1, 'c', '{', '#', 'i', 0 }; const auto result = json::to_bjdata(j, true); CHECK(result == expected); @@ -2053,8 +2048,8 @@ TEST_CASE("BJData") SECTION("size=true type=true ignore object type marker") { json const j = json::parse(R"({"a": {"b": {"c": {}}}})"); - std::vector const expected = {'{', '#', 'i', 1, 'i', 1, 'a', '{', '#', 'i', 1, 'i', 1, - 'b', '{', '#', 'i', 1, 'i', 1, 'c', '{', '#', 'i', 0}; + std::vector const expected = { '{', '#', 'i', 1, 'i', 1, 'a', '{', '#', 'i', 1, 'i', 1, + 'b', '{', '#', 'i', 1, 'i', 1, 'c', '{', '#', 'i', 0 }; const auto result = json::to_bjdata(j, true, true); CHECK(result == expected); @@ -2070,7 +2065,7 @@ TEST_CASE("BJData") { SECTION("strict mode") { - std::vector const vec = {'Z', 'Z'}; + std::vector const vec = { 'Z', 'Z' }; SECTION("non-strict mode") { const auto result = json::from_bjdata(vec, false); @@ -2092,98 +2087,98 @@ TEST_CASE("BJData") { SECTION("start_array()") { - std::vector const v = {'[', 'T', 'F', ']'}; + std::vector const v = { '[', 'T', 'F', ']' }; SaxCountdown scp(0); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("start_object()") { - std::vector const v = {'{', 'i', 3, 'f', 'o', 'o', 'F', '}'}; + std::vector const v = { '{', 'i', 3, 'f', 'o', 'o', 'F', '}' }; SaxCountdown scp(0); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("key() in object") { - std::vector const v = {'{', 'i', 3, 'f', 'o', 'o', 'F', '}'}; + std::vector const v = { '{', 'i', 3, 'f', 'o', 'o', 'F', '}' }; SaxCountdown scp(1); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("start_array(len)") { - std::vector const v = {'[', '#', 'i', '2', 'T', 'F'}; + std::vector const v = { '[', '#', 'i', '2', 'T', 'F' }; SaxCountdown scp(0); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("start_object(len)") { - std::vector const v = {'{', '#', 'i', '1', 3, 'f', 'o', 'o', 'F'}; + std::vector const v = { '{', '#', 'i', '1', 3, 'f', 'o', 'o', 'F' }; SaxCountdown scp(0); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("key() in object with length") { - std::vector const v = {'{', 'i', 3, 'f', 'o', 'o', 'F', '}'}; + std::vector const v = { '{', 'i', 3, 'f', 'o', 'o', 'F', '}' }; SaxCountdown scp(1); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("start_array() in ndarray _ArraySize_") { - std::vector const v = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 2, 1, 1, 2}; + std::vector const v = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 2, 1, 1, 2 }; SaxCountdown scp(2); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("number_integer() in ndarray _ArraySize_") { - std::vector const v = {'[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 2, 1, 1, 2}; + std::vector const v = { '[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 2, 1, 1, 2 }; SaxCountdown scp(3); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("key() in ndarray _ArrayType_") { - std::vector const v = {'[', '$', 'U', '#', '[', '$', 'U', '#', 'i', 2, 2, 2, 1, 2, 3, 4}; + std::vector const v = { '[', '$', 'U', '#', '[', '$', 'U', '#', 'i', 2, 2, 2, 1, 2, 3, 4 }; SaxCountdown scp(6); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("string() in ndarray _ArrayType_") { - std::vector const v = {'[', '$', 'U', '#', '[', '$', 'U', '#', 'i', 2, 2, 2, 1, 2, 3, 4}; + std::vector const v = { '[', '$', 'U', '#', '[', '$', 'U', '#', 'i', 2, 2, 2, 1, 2, 3, 4 }; SaxCountdown scp(7); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("key() in ndarray _ArrayData_") { - std::vector const v = {'[', '$', 'U', '#', '[', '$', 'U', '#', 'i', 2, 2, 2, 1, 2, 3, 4}; + std::vector const v = { '[', '$', 'U', '#', '[', '$', 'U', '#', 'i', 2, 2, 2, 1, 2, 3, 4 }; SaxCountdown scp(8); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("string() in ndarray _ArrayData_") { - std::vector const v = {'[', '$', 'U', '#', '[', '$', 'U', '#', 'i', 2, 2, 2, 1, 2, 3, 4}; + std::vector const v = { '[', '$', 'U', '#', '[', '$', 'U', '#', 'i', 2, 2, 2, 1, 2, 3, 4 }; SaxCountdown scp(9); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("string() in ndarray _ArrayType_") { - std::vector const v = {'[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 3, 2, 6, 5, 4, 3, 2, 1}; + std::vector const v = { '[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 3, 2, 6, 5, 4, 3, 2, 1 }; SaxCountdown scp(11); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } SECTION("start_array() in ndarray _ArrayData_") { - std::vector const v = {'[', '$', 'U', '#', '[', 'i', 2, 'i', 3, ']', 6, 5, 4, 3, 2, 1}; + std::vector const v = { '[', '$', 'U', '#', '[', 'i', 2, 'i', 3, ']', 6, 5, 4, 3, 2, 1 }; SaxCountdown scp(13); CHECK_FALSE(json::sax_parse(v, &scp, json::input_format_t::bjdata)); } @@ -2194,14 +2189,14 @@ TEST_CASE("BJData") SECTION("strings") { // create a single-character string for all number types - std::vector s_i = {'S', 'i', 1, 'a'}; - std::vector const s_U = {'S', 'U', 1, 'a'}; - std::vector const s_I = {'S', 'I', 1, 0, 'a'}; - std::vector const s_u = {'S', 'u', 1, 0, 'a'}; - std::vector const s_l = {'S', 'l', 1, 0, 0, 0, 'a'}; - std::vector const s_m = {'S', 'm', 1, 0, 0, 0, 'a'}; - std::vector const s_L = {'S', 'L', 1, 0, 0, 0, 0, 0, 0, 0, 'a'}; - std::vector const s_M = {'S', 'M', 1, 0, 0, 0, 0, 0, 0, 0, 'a'}; + std::vector s_i = { 'S', 'i', 1, 'a' }; + std::vector const s_U = { 'S', 'U', 1, 'a' }; + std::vector const s_I = { 'S', 'I', 1, 0, 'a' }; + std::vector const s_u = { 'S', 'u', 1, 0, 'a' }; + std::vector const s_l = { 'S', 'l', 1, 0, 0, 0, 'a' }; + std::vector const s_m = { 'S', 'm', 1, 0, 0, 0, 'a' }; + std::vector const s_L = { 'S', 'L', 1, 0, 0, 0, 0, 0, 0, 0, 'a' }; + std::vector const s_M = { 'S', 'M', 1, 0, 0, 0, 0, 0, 0, 0, 'a' }; // check if string is parsed correctly to "a" CHECK(json::from_bjdata(s_i) == "a"); @@ -2229,11 +2224,11 @@ TEST_CASE("BJData") SECTION("float") { // float32 - std::vector const v_d = {'d', 0xd0, 0x0f, 0x49, 0x40}; + std::vector const v_d = { 'd', 0xd0, 0x0f, 0x49, 0x40 }; CHECK(json::from_bjdata(v_d) == 3.14159f); // float64 - std::vector const v_D = {'D', 0x6e, 0x86, 0x1b, 0xf0, 0xf9, 0x21, 0x09, 0x40}; + std::vector const v_D = { 'D', 0x6e, 0x86, 0x1b, 0xf0, 0xf9, 0x21, 0x09, 0x40 }; CHECK(json::from_bjdata(v_D) == 3.14159); // float32 is serialized as float64 as the library does not support float32 @@ -2246,41 +2241,41 @@ TEST_CASE("BJData") SECTION("optimized version (length only)") { // create vector with two elements of the same type - std::vector const v_TU = {'[', '#', 'U', 2, 'T', 'T'}; - std::vector const v_T = {'[', '#', 'i', 2, 'T', 'T'}; - std::vector const v_F = {'[', '#', 'i', 2, 'F', 'F'}; - std::vector const v_Z = {'[', '#', 'i', 2, 'Z', 'Z'}; - std::vector const v_i = {'[', '#', 'i', 2, 'i', 0x7F, 'i', 0x7F}; - std::vector const v_U = {'[', '#', 'i', 2, 'U', 0xFF, 'U', 0xFF}; - std::vector const v_I = {'[', '#', 'i', 2, 'I', 0xFF, 0x7F, 'I', 0xFF, 0x7F}; - std::vector const v_u = {'[', '#', 'i', 2, 'u', 0x0F, 0xA7, 'u', 0x0F, 0xA7}; - std::vector const v_l = {'[', '#', 'i', 2, 'l', 0xFF, 0xFF, 0xFF, 0x7F, 'l', 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_m = {'[', '#', 'i', 2, 'm', 0xFF, 0xC9, 0x9A, 0xBB, 'm', 0xFF, 0xC9, 0x9A, 0xBB}; - std::vector const v_L = {'[', '#', 'i', 2, 'L', 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x7F, 'L', 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_M = {'[', '#', 'i', 2, 'M', 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, - 0xE0, 0x8D, 'M', 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D}; - std::vector const v_D = {'[', '#', 'i', 2, 'D', 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, - 0x09, 0x40, 'D', 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40}; - std::vector const v_S = {'[', '#', 'i', 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a'}; - std::vector const v_C = {'[', '#', 'i', 2, 'C', 'a', 'C', 'a'}; + std::vector const v_TU = { '[', '#', 'U', 2, 'T', 'T' }; + std::vector const v_T = { '[', '#', 'i', 2, 'T', 'T' }; + std::vector const v_F = { '[', '#', 'i', 2, 'F', 'F' }; + std::vector const v_Z = { '[', '#', 'i', 2, 'Z', 'Z' }; + std::vector const v_i = { '[', '#', 'i', 2, 'i', 0x7F, 'i', 0x7F }; + std::vector const v_U = { '[', '#', 'i', 2, 'U', 0xFF, 'U', 0xFF }; + std::vector const v_I = { '[', '#', 'i', 2, 'I', 0xFF, 0x7F, 'I', 0xFF, 0x7F }; + std::vector const v_u = { '[', '#', 'i', 2, 'u', 0x0F, 0xA7, 'u', 0x0F, 0xA7 }; + std::vector const v_l = { '[', '#', 'i', 2, 'l', 0xFF, 0xFF, 0xFF, 0x7F, 'l', 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_m = { '[', '#', 'i', 2, 'm', 0xFF, 0xC9, 0x9A, 0xBB, 'm', 0xFF, 0xC9, 0x9A, 0xBB }; + std::vector const v_L = { '[', '#', 'i', 2, 'L', 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 'L', 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_M = { '[', '#', 'i', 2, 'M', 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, + 0xE0, 0x8D, 'M', 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D }; + std::vector const v_D = { '[', '#', 'i', 2, 'D', 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, + 0x09, 0x40, 'D', 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40 }; + std::vector const v_S = { '[', '#', 'i', 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a' }; + std::vector const v_C = { '[', '#', 'i', 2, 'C', 'a', 'C', 'a' }; // check if vector is parsed correctly - CHECK(json::from_bjdata(v_TU) == json({true, true})); - CHECK(json::from_bjdata(v_T) == json({true, true})); - CHECK(json::from_bjdata(v_F) == json({false, false})); - CHECK(json::from_bjdata(v_Z) == json({nullptr, nullptr})); - CHECK(json::from_bjdata(v_i) == json({127, 127})); - CHECK(json::from_bjdata(v_U) == json({255, 255})); - CHECK(json::from_bjdata(v_I) == json({32767, 32767})); - CHECK(json::from_bjdata(v_u) == json({42767, 42767})); - CHECK(json::from_bjdata(v_l) == json({2147483647, 2147483647})); - CHECK(json::from_bjdata(v_m) == json({3147483647, 3147483647})); - CHECK(json::from_bjdata(v_L) == json({9223372036854775807, 9223372036854775807})); - CHECK(json::from_bjdata(v_M) == json({10223372036854775807ull, 10223372036854775807ull})); - CHECK(json::from_bjdata(v_D) == json({3.1415926, 3.1415926})); - CHECK(json::from_bjdata(v_S) == json({"a", "a"})); - CHECK(json::from_bjdata(v_C) == json({"a", "a"})); + CHECK(json::from_bjdata(v_TU) == json({ true, true })); + CHECK(json::from_bjdata(v_T) == json({ true, true })); + CHECK(json::from_bjdata(v_F) == json({ false, false })); + CHECK(json::from_bjdata(v_Z) == json({ nullptr, nullptr })); + CHECK(json::from_bjdata(v_i) == json({ 127, 127 })); + CHECK(json::from_bjdata(v_U) == json({ 255, 255 })); + CHECK(json::from_bjdata(v_I) == json({ 32767, 32767 })); + CHECK(json::from_bjdata(v_u) == json({ 42767, 42767 })); + CHECK(json::from_bjdata(v_l) == json({ 2147483647, 2147483647 })); + CHECK(json::from_bjdata(v_m) == json({ 3147483647, 3147483647 })); + CHECK(json::from_bjdata(v_L) == json({ 9223372036854775807, 9223372036854775807 })); + CHECK(json::from_bjdata(v_M) == json({ 10223372036854775807ull, 10223372036854775807ull })); + CHECK(json::from_bjdata(v_D) == json({ 3.1415926, 3.1415926 })); + CHECK(json::from_bjdata(v_S) == json({ "a", "a" })); + CHECK(json::from_bjdata(v_C) == json({ "a", "a" })); // roundtrip: output should be optimized CHECK(json::to_bjdata(json::from_bjdata(v_T), true) == v_T); @@ -2302,36 +2297,36 @@ TEST_CASE("BJData") SECTION("optimized version (type and length)") { // create vector with two elements of the same type - std::vector const v_i = {'[', '$', 'i', '#', 'i', 2, 0x7F, 0x7F}; - std::vector const v_U = {'[', '$', 'U', '#', 'i', 2, 0xFF, 0xFF}; - std::vector const v_I = {'[', '$', 'I', '#', 'i', 2, 0xFF, 0x7F, 0xFF, 0x7F}; - std::vector const v_u = {'[', '$', 'u', '#', 'i', 2, 0x0F, 0xA7, 0x0F, 0xA7}; - std::vector const v_l = {'[', '$', 'l', '#', 'i', 2, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_m = {'[', '$', 'm', '#', 'i', 2, 0xFF, 0xC9, 0x9A, 0xBB, 0xFF, 0xC9, 0x9A, 0xBB}; - std::vector const v_L = {'[', '$', 'L', '#', 'i', 2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_M = {'[', '$', 'M', '#', 'i', 2, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, - 0xB6, 0xE0, 0x8D, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D}; - std::vector const v_D = {'[', '$', 'D', '#', 'i', 2, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, - 0x21, 0x09, 0x40, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40}; - std::vector const v_S = {'[', '#', 'i', 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a'}; - std::vector const v_C = {'[', '$', 'C', '#', 'i', 2, 'a', 'a'}; + std::vector const v_i = { '[', '$', 'i', '#', 'i', 2, 0x7F, 0x7F }; + std::vector const v_U = { '[', '$', 'U', '#', 'i', 2, 0xFF, 0xFF }; + std::vector const v_I = { '[', '$', 'I', '#', 'i', 2, 0xFF, 0x7F, 0xFF, 0x7F }; + std::vector const v_u = { '[', '$', 'u', '#', 'i', 2, 0x0F, 0xA7, 0x0F, 0xA7 }; + std::vector const v_l = { '[', '$', 'l', '#', 'i', 2, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_m = { '[', '$', 'm', '#', 'i', 2, 0xFF, 0xC9, 0x9A, 0xBB, 0xFF, 0xC9, 0x9A, 0xBB }; + std::vector const v_L = { '[', '$', 'L', '#', 'i', 2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_M = { '[', '$', 'M', '#', 'i', 2, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, + 0xB6, 0xE0, 0x8D, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D }; + std::vector const v_D = { '[', '$', 'D', '#', 'i', 2, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, + 0x21, 0x09, 0x40, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40 }; + std::vector const v_S = { '[', '#', 'i', 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a' }; + std::vector const v_C = { '[', '$', 'C', '#', 'i', 2, 'a', 'a' }; // check if vector is parsed correctly - CHECK(json::from_bjdata(v_i) == json({127, 127})); - CHECK(json::from_bjdata(v_U) == json({255, 255})); - CHECK(json::from_bjdata(v_I) == json({32767, 32767})); - CHECK(json::from_bjdata(v_u) == json({42767, 42767})); - CHECK(json::from_bjdata(v_l) == json({2147483647, 2147483647})); - CHECK(json::from_bjdata(v_m) == json({3147483647, 3147483647})); - CHECK(json::from_bjdata(v_L) == json({9223372036854775807, 9223372036854775807})); - CHECK(json::from_bjdata(v_M) == json({10223372036854775807ull, 10223372036854775807ull})); - CHECK(json::from_bjdata(v_D) == json({3.1415926, 3.1415926})); - CHECK(json::from_bjdata(v_S) == json({"a", "a"})); - CHECK(json::from_bjdata(v_C) == json({"a", "a"})); + CHECK(json::from_bjdata(v_i) == json({ 127, 127 })); + CHECK(json::from_bjdata(v_U) == json({ 255, 255 })); + CHECK(json::from_bjdata(v_I) == json({ 32767, 32767 })); + CHECK(json::from_bjdata(v_u) == json({ 42767, 42767 })); + CHECK(json::from_bjdata(v_l) == json({ 2147483647, 2147483647 })); + CHECK(json::from_bjdata(v_m) == json({ 3147483647, 3147483647 })); + CHECK(json::from_bjdata(v_L) == json({ 9223372036854775807, 9223372036854775807 })); + CHECK(json::from_bjdata(v_M) == json({ 10223372036854775807ull, 10223372036854775807ull })); + CHECK(json::from_bjdata(v_D) == json({ 3.1415926, 3.1415926 })); + CHECK(json::from_bjdata(v_S) == json({ "a", "a" })); + CHECK(json::from_bjdata(v_C) == json({ "a", "a" })); // roundtrip: output should be optimized - std::vector const v_empty = {'[', '#', 'i', 0}; + std::vector const v_empty = { '[', '#', 'i', 0 }; CHECK(json::to_bjdata(json::from_bjdata(v_i), true, true) == v_i); CHECK(json::to_bjdata(json::from_bjdata(v_U), true, true) == v_U); CHECK(json::to_bjdata(json::from_bjdata(v_I), true, true) == v_I); @@ -2348,83 +2343,86 @@ TEST_CASE("BJData") SECTION("optimized ndarray (type and vector-size as optimized 1D array)") { // create vector with two elements of the same type - std::vector const v_0 = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 1, 0}; - std::vector const v_1 = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 1, 2, 0x7F, 0x7F}; - std::vector const v_i = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0x7F, 0x7F}; - std::vector const v_U = {'[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xFF}; - std::vector const v_I = {'[', '$', 'I', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0x7F, 0xFF, 0x7F}; - std::vector const v_u = {'[', '$', 'u', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0x0F, 0xA7, 0x0F, 0xA7}; - std::vector const v_l = {'[', '$', 'l', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_m = {'[', '$', 'm', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xC9, 0x9A, 0xBB, 0xFF, 0xC9, 0x9A, 0xBB}; - std::vector const v_L = {'[', '$', 'L', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_M = {'[', '$', 'M', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xFF, - 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D}; - std::vector const v_D = {'[', '$', 'D', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0x4a, 0xd8, - 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40}; - std::vector const v_S = {'[', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a'}; - std::vector const v_C = {'[', '$', 'C', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 'a', 'a'}; + std::vector const v_0 = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 1, 0 }; + std::vector const v_1 = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 1, 2, 0x7F, 0x7F }; + std::vector const v_i = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0x7F, 0x7F }; + std::vector const v_U = { '[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xFF }; + std::vector const v_I = { '[', '$', 'I', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0x7F, 0xFF, 0x7F }; + std::vector const v_u = { '[', '$', 'u', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0x0F, 0xA7, 0x0F, 0xA7 }; + std::vector const v_l = { '[', '$', 'l', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_m = { '[', '$', 'm', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xC9, 0x9A, 0xBB, 0xFF, 0xC9, 0x9A, 0xBB }; + std::vector const v_L = { '[', '$', 'L', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_M = { '[', '$', 'M', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0xFF, 0xFF, + 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D }; + std::vector const v_D = { '[', '$', 'D', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 0x4a, 0xd8, + 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40 }; + std::vector const v_S = { '[', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a' }; + std::vector const v_C = { '[', '$', 'C', '#', '[', '$', 'i', '#', 'i', 2, 1, 2, 'a', 'a' }; // check if vector is parsed correctly CHECK(json::from_bjdata(v_0) == json::array()); - CHECK(json::from_bjdata(v_1) == json({127, 127})); - CHECK(json::from_bjdata(v_i) == json({127, 127})); - CHECK(json::from_bjdata(v_U) == json({255, 255})); - CHECK(json::from_bjdata(v_I) == json({32767, 32767})); - CHECK(json::from_bjdata(v_u) == json({42767, 42767})); - CHECK(json::from_bjdata(v_l) == json({2147483647, 2147483647})); - CHECK(json::from_bjdata(v_m) == json({3147483647, 3147483647})); - CHECK(json::from_bjdata(v_L) == json({9223372036854775807, 9223372036854775807})); - CHECK(json::from_bjdata(v_M) == json({10223372036854775807ull, 10223372036854775807ull})); - CHECK(json::from_bjdata(v_D) == json({3.1415926, 3.1415926})); - CHECK(json::from_bjdata(v_S) == json({"a", "a"})); - CHECK(json::from_bjdata(v_C) == json({"a", "a"})); + CHECK(json::from_bjdata(v_1) == json({ 127, 127 })); + CHECK(json::from_bjdata(v_i) == json({ 127, 127 })); + CHECK(json::from_bjdata(v_U) == json({ 255, 255 })); + CHECK(json::from_bjdata(v_I) == json({ 32767, 32767 })); + CHECK(json::from_bjdata(v_u) == json({ 42767, 42767 })); + CHECK(json::from_bjdata(v_l) == json({ 2147483647, 2147483647 })); + CHECK(json::from_bjdata(v_m) == json({ 3147483647, 3147483647 })); + CHECK(json::from_bjdata(v_L) == json({ 9223372036854775807, 9223372036854775807 })); + CHECK(json::from_bjdata(v_M) == json({ 10223372036854775807ull, 10223372036854775807ull })); + CHECK(json::from_bjdata(v_D) == json({ 3.1415926, 3.1415926 })); + CHECK(json::from_bjdata(v_S) == json({ "a", "a" })); + CHECK(json::from_bjdata(v_C) == json({ "a", "a" })); } SECTION("optimized ndarray (type and vector-size ndarray with JData annotations)") { // create vector with 0, 1, 2 elements of the same type - std::vector const v_e = {'[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 2, 1, 0xFE, 0xFF}; - std::vector const v_U = {'[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06}; - std::vector const v_i = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06}; - std::vector const v_u = {'[', '$', 'u', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, - 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00}; - std::vector const v_I = {'[', '$', 'I', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, - 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00}; - std::vector const v_m = {'[', '$', 'm', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00}; - std::vector const v_l = {'[', '$', 'l', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00}; - std::vector const v_M = {'[', '$', 'M', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - std::vector const v_L = {'[', '$', 'L', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - std::vector const v_d = {'[', '$', 'd', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0xA0, 0x40, 0x00, 0x00, 0xC0, 0x40}; - std::vector const v_D = {'[', '$', 'D', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x40}; - std::vector const v_C = {'[', '$', 'C', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 'a', 'b', 'c', 'd', 'e', 'f'}; + std::vector const v_e = { '[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 2, 1, 0xFE, 0xFF }; + std::vector const v_U = { '[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; + std::vector const v_i = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; + std::vector const v_u = { '[', '$', 'u', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, + 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00 }; + std::vector const v_I = { '[', '$', 'I', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, + 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00 }; + std::vector const v_m = { '[', '$', 'm', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 }; + std::vector const v_l = { '[', '$', 'l', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 }; + std::vector const v_M = { '[', '$', 'M', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + std::vector const v_L = { '[', '$', 'L', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + std::vector const v_d = { '[', '$', 'd', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0xA0, 0x40, 0x00, 0x00, 0xC0, 0x40 }; + std::vector const v_D = { '[', '$', 'D', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x40 }; + std::vector const v_C = { '[', '$', 'C', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 'a', 'b', 'c', 'd', 'e', 'f' }; // check if vector is parsed correctly - CHECK(json::from_bjdata(v_e) == json({{"_ArrayData_", {254, 255}}, {"_ArraySize_", {2, 1}}, {"_ArrayType_", "uint8"}})); - CHECK(json::from_bjdata(v_U) == json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "uint8"}})); - CHECK(json::from_bjdata(v_i) == json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "int8"}})); - CHECK(json::from_bjdata(v_i) == json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "int8"}})); - CHECK(json::from_bjdata(v_u) == json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "uint16"}})); - CHECK(json::from_bjdata(v_I) == json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "int16"}})); - CHECK(json::from_bjdata(v_m) == json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "uint32"}})); - CHECK(json::from_bjdata(v_l) == json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "int32"}})); - CHECK(json::from_bjdata(v_M) == json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "uint64"}})); - CHECK(json::from_bjdata(v_L) == json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "int64"}})); - CHECK(json::from_bjdata(v_d) == json({{"_ArrayData_", {1.f, 2.f, 3.f, 4.f, 5.f, 6.f}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "single"}})); - CHECK(json::from_bjdata(v_D) == json({{"_ArrayData_", {1., 2., 3., 4., 5., 6.}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "double"}})); - CHECK(json::from_bjdata(v_C) == json({{"_ArrayData_", {'a', 'b', 'c', 'd', 'e', 'f'}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "char"}})); + CHECK(json::from_bjdata(v_e) == json({ { "_ArrayData_", { 254, 255 } }, { "_ArraySize_", { 2, 1 } }, { "_ArrayType_", "uint8" } })); + CHECK(json::from_bjdata(v_U) == json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "uint8" } })); + CHECK(json::from_bjdata(v_i) == json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "int8" } })); + CHECK(json::from_bjdata(v_i) == json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "int8" } })); + CHECK(json::from_bjdata(v_u) == json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "uint16" } })); + CHECK(json::from_bjdata(v_I) == json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "int16" } })); + CHECK(json::from_bjdata(v_m) == json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "uint32" } })); + CHECK(json::from_bjdata(v_l) == json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "int32" } })); + CHECK(json::from_bjdata(v_M) == json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "uint64" } })); + CHECK(json::from_bjdata(v_L) == json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "int64" } })); + CHECK(json::from_bjdata(v_d) == + json({ { "_ArrayData_", { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "single" } })); + CHECK(json::from_bjdata(v_D) == + json({ { "_ArrayData_", { 1., 2., 3., 4., 5., 6. } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "double" } })); + CHECK(json::from_bjdata(v_C) == + json({ { "_ArrayData_", { 'a', 'b', 'c', 'd', 'e', 'f' } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "char" } })); // roundtrip: output should be optimized CHECK(json::to_bjdata(json::from_bjdata(v_e), true, true) == v_e); @@ -2444,78 +2442,78 @@ TEST_CASE("BJData") SECTION("optimized ndarray (type and vector-size as 1D array)") { // create vector with two elements of the same type - std::vector const v_0 = {'[', '$', 'i', '#', '[', ']'}; - std::vector const v_E = {'[', '$', 'i', '#', '[', 'i', 2, 'i', 0, ']'}; - std::vector const v_i = {'[', '$', 'i', '#', '[', 'i', 1, 'i', 2, ']', 0x7F, 0x7F}; - std::vector const v_U = {'[', '$', 'U', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xFF}; - std::vector const v_I = {'[', '$', 'I', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0x7F, 0xFF, 0x7F}; - std::vector const v_u = {'[', '$', 'u', '#', '[', 'i', 1, 'i', 2, ']', 0x0F, 0xA7, 0x0F, 0xA7}; - std::vector const v_l = {'[', '$', 'l', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_m = {'[', '$', 'm', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xC9, 0x9A, 0xBB, 0xFF, 0xC9, 0x9A, 0xBB}; - std::vector const v_L = {'[', '$', 'L', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_M = {'[', '$', 'M', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xFF, 0x63, - 0xA7, 0xB3, 0xB6, 0xE0, 0x8D, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D}; - std::vector const v_D = {'[', '$', 'D', '#', '[', 'i', 1, 'i', 2, ']', 0x4a, 0xd8, 0x12, - 0x4d, 0xfb, 0x21, 0x09, 0x40, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40}; - std::vector const v_S = {'[', '#', '[', 'i', 1, 'i', 2, ']', 'S', 'i', 1, 'a', 'S', 'i', 1, 'a'}; - std::vector const v_C = {'[', '$', 'C', '#', '[', 'i', 1, 'i', 2, ']', 'a', 'a'}; - std::vector const v_R = {'[', '#', '[', 'i', 2, ']', 'i', 6, 'U', 7}; + std::vector const v_0 = { '[', '$', 'i', '#', '[', ']' }; + std::vector const v_E = { '[', '$', 'i', '#', '[', 'i', 2, 'i', 0, ']' }; + std::vector const v_i = { '[', '$', 'i', '#', '[', 'i', 1, 'i', 2, ']', 0x7F, 0x7F }; + std::vector const v_U = { '[', '$', 'U', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xFF }; + std::vector const v_I = { '[', '$', 'I', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0x7F, 0xFF, 0x7F }; + std::vector const v_u = { '[', '$', 'u', '#', '[', 'i', 1, 'i', 2, ']', 0x0F, 0xA7, 0x0F, 0xA7 }; + std::vector const v_l = { '[', '$', 'l', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_m = { '[', '$', 'm', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xC9, 0x9A, 0xBB, 0xFF, 0xC9, 0x9A, 0xBB }; + std::vector const v_L = { '[', '$', 'L', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_M = { '[', '$', 'M', '#', '[', 'i', 1, 'i', 2, ']', 0xFF, 0xFF, 0x63, + 0xA7, 0xB3, 0xB6, 0xE0, 0x8D, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D }; + std::vector const v_D = { '[', '$', 'D', '#', '[', 'i', 1, 'i', 2, ']', 0x4a, 0xd8, 0x12, + 0x4d, 0xfb, 0x21, 0x09, 0x40, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40 }; + std::vector const v_S = { '[', '#', '[', 'i', 1, 'i', 2, ']', 'S', 'i', 1, 'a', 'S', 'i', 1, 'a' }; + std::vector const v_C = { '[', '$', 'C', '#', '[', 'i', 1, 'i', 2, ']', 'a', 'a' }; + std::vector const v_R = { '[', '#', '[', 'i', 2, ']', 'i', 6, 'U', 7 }; // check if vector is parsed correctly CHECK(json::from_bjdata(v_0) == json::array()); CHECK(json::from_bjdata(v_E) == json::array()); - CHECK(json::from_bjdata(v_i) == json({127, 127})); - CHECK(json::from_bjdata(v_U) == json({255, 255})); - CHECK(json::from_bjdata(v_I) == json({32767, 32767})); - CHECK(json::from_bjdata(v_u) == json({42767, 42767})); - CHECK(json::from_bjdata(v_l) == json({2147483647, 2147483647})); - CHECK(json::from_bjdata(v_m) == json({3147483647, 3147483647})); - CHECK(json::from_bjdata(v_L) == json({9223372036854775807, 9223372036854775807})); - CHECK(json::from_bjdata(v_M) == json({10223372036854775807ull, 10223372036854775807ull})); - CHECK(json::from_bjdata(v_D) == json({3.1415926, 3.1415926})); - CHECK(json::from_bjdata(v_S) == json({"a", "a"})); - CHECK(json::from_bjdata(v_C) == json({"a", "a"})); - CHECK(json::from_bjdata(v_R) == json({6, 7})); + CHECK(json::from_bjdata(v_i) == json({ 127, 127 })); + CHECK(json::from_bjdata(v_U) == json({ 255, 255 })); + CHECK(json::from_bjdata(v_I) == json({ 32767, 32767 })); + CHECK(json::from_bjdata(v_u) == json({ 42767, 42767 })); + CHECK(json::from_bjdata(v_l) == json({ 2147483647, 2147483647 })); + CHECK(json::from_bjdata(v_m) == json({ 3147483647, 3147483647 })); + CHECK(json::from_bjdata(v_L) == json({ 9223372036854775807, 9223372036854775807 })); + CHECK(json::from_bjdata(v_M) == json({ 10223372036854775807ull, 10223372036854775807ull })); + CHECK(json::from_bjdata(v_D) == json({ 3.1415926, 3.1415926 })); + CHECK(json::from_bjdata(v_S) == json({ "a", "a" })); + CHECK(json::from_bjdata(v_C) == json({ "a", "a" })); + CHECK(json::from_bjdata(v_R) == json({ 6, 7 })); } SECTION("optimized ndarray (type and vector-size as size-optimized array)") { // create vector with two elements of the same type - std::vector const v_i = {'[', '$', 'i', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0x7F, 0x7F}; - std::vector const v_U = {'[', '$', 'U', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xFF}; - std::vector const v_I = {'[', '$', 'I', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0x7F, 0xFF, 0x7F}; - std::vector const v_u = {'[', '$', 'u', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0x0F, 0xA7, 0x0F, 0xA7}; - std::vector const v_l = {'[', '$', 'l', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_m = {'[', '$', 'm', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xC9, 0x9A, 0xBB, 0xFF, 0xC9, 0x9A, 0xBB}; - std::vector const v_L = {'[', '$', 'L', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F}; - std::vector const v_M = {'[', '$', 'M', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xFF, - 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D}; - std::vector const v_D = {'[', '$', 'D', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0x4a, 0xd8, - 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40}; - std::vector const v_S = {'[', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a'}; - std::vector const v_C = {'[', '$', 'C', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 'a', 'a'}; + std::vector const v_i = { '[', '$', 'i', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0x7F, 0x7F }; + std::vector const v_U = { '[', '$', 'U', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xFF }; + std::vector const v_I = { '[', '$', 'I', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0x7F, 0xFF, 0x7F }; + std::vector const v_u = { '[', '$', 'u', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0x0F, 0xA7, 0x0F, 0xA7 }; + std::vector const v_l = { '[', '$', 'l', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_m = { '[', '$', 'm', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xC9, 0x9A, 0xBB, 0xFF, 0xC9, 0x9A, 0xBB }; + std::vector const v_L = { '[', '$', 'L', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F }; + std::vector const v_M = { '[', '$', 'M', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0xFF, 0xFF, + 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D }; + std::vector const v_D = { '[', '$', 'D', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 0x4a, 0xd8, + 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40, 0x4a, 0xd8, 0x12, 0x4d, 0xfb, 0x21, 0x09, 0x40 }; + std::vector const v_S = { '[', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a' }; + std::vector const v_C = { '[', '$', 'C', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2, 'a', 'a' }; // check if vector is parsed correctly - CHECK(json::from_bjdata(v_i) == json({127, 127})); - CHECK(json::from_bjdata(v_U) == json({255, 255})); - CHECK(json::from_bjdata(v_I) == json({32767, 32767})); - CHECK(json::from_bjdata(v_u) == json({42767, 42767})); - CHECK(json::from_bjdata(v_l) == json({2147483647, 2147483647})); - CHECK(json::from_bjdata(v_m) == json({3147483647, 3147483647})); - CHECK(json::from_bjdata(v_L) == json({9223372036854775807, 9223372036854775807})); - CHECK(json::from_bjdata(v_M) == json({10223372036854775807ull, 10223372036854775807ull})); - CHECK(json::from_bjdata(v_D) == json({3.1415926, 3.1415926})); - CHECK(json::from_bjdata(v_S) == json({"a", "a"})); - CHECK(json::from_bjdata(v_C) == json({"a", "a"})); + CHECK(json::from_bjdata(v_i) == json({ 127, 127 })); + CHECK(json::from_bjdata(v_U) == json({ 255, 255 })); + CHECK(json::from_bjdata(v_I) == json({ 32767, 32767 })); + CHECK(json::from_bjdata(v_u) == json({ 42767, 42767 })); + CHECK(json::from_bjdata(v_l) == json({ 2147483647, 2147483647 })); + CHECK(json::from_bjdata(v_m) == json({ 3147483647, 3147483647 })); + CHECK(json::from_bjdata(v_L) == json({ 9223372036854775807, 9223372036854775807 })); + CHECK(json::from_bjdata(v_M) == json({ 10223372036854775807ull, 10223372036854775807ull })); + CHECK(json::from_bjdata(v_D) == json({ 3.1415926, 3.1415926 })); + CHECK(json::from_bjdata(v_S) == json({ "a", "a" })); + CHECK(json::from_bjdata(v_C) == json({ "a", "a" })); } SECTION("invalid ndarray annotations remains as object") { // check if invalid ND array annotations stay as object - json j_type = json({{"_ArrayData_", {1, 2, 3, 4, 5, 6}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "invalidtype"}}); - json j_size = json({{"_ArrayData_", {1, 2, 3, 4, 5}}, {"_ArraySize_", {2, 3}}, {"_ArrayType_", "uint8"}}); + json j_type = json({ { "_ArrayData_", { 1, 2, 3, 4, 5, 6 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "invalidtype" } }); + json j_size = json({ { "_ArrayData_", { 1, 2, 3, 4, 5 } }, { "_ArraySize_", { 2, 3 } }, { "_ArrayType_", "uint8" } }); // roundtrip: output should stay as object CHECK(json::from_bjdata(json::to_bjdata(j_type), true, true) == j_type); @@ -2538,7 +2536,7 @@ TEST_CASE("BJData") { SECTION("eof after C byte") { - std::vector const v = {'C'}; + std::vector const v = { 'C' }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(v), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing BJData char: unexpected end of input", @@ -2547,7 +2545,7 @@ TEST_CASE("BJData") SECTION("byte out of range") { - std::vector const v = {'C', 130}; + std::vector const v = { 'C', 130 }; json _; CHECK_THROWS_WITH( _ = json::from_bjdata(v), @@ -2559,7 +2557,7 @@ TEST_CASE("BJData") { SECTION("eof after S byte") { - std::vector const v = {'S'}; + std::vector const v = { 'S' }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(v), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing BJData value: unexpected end of input", @@ -2568,7 +2566,7 @@ TEST_CASE("BJData") SECTION("invalid byte") { - std::vector const v = {'S', '1', 'a'}; + std::vector const v = { 'S', '1', 'a' }; json _; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(v), @@ -2579,9 +2577,9 @@ TEST_CASE("BJData") SECTION("parse bjdata markers in ubjson") { // create a single-character string for all number types - std::vector const s_u = {'S', 'u', 1, 0, 'a'}; - std::vector const s_m = {'S', 'm', 1, 0, 0, 0, 'a'}; - std::vector const s_M = {'S', 'M', 1, 0, 0, 0, 0, 0, 0, 0, 'a'}; + std::vector const s_u = { 'S', 'u', 1, 0, 'a' }; + std::vector const s_m = { 'S', 'm', 1, 0, 0, 0, 'a' }; + std::vector const s_M = { 'S', 'M', 1, 0, 0, 0, 0, 0, 0, 0, 'a' }; json _; // check if string is parsed correctly to "a" @@ -2604,7 +2602,7 @@ TEST_CASE("BJData") { SECTION("optimized array: no size following type") { - std::vector const v = {'[', '$', 'i', 2}; + std::vector const v = { '[', '$', 'i', 2 }; json _; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(v), @@ -2614,18 +2612,18 @@ TEST_CASE("BJData") SECTION("optimized array: negative size") { - std::vector const v1 = {'[', '#', 'i', 0xF1}; - std::vector const v2 = {'[', '$', 'I', '#', 'i', 0xF2}; - std::vector const v3 = {'[', '$', 'I', '#', '[', 'i', 0xF4, 'i', 0x02, ']'}; - std::vector const v4 = {'[', '$', 0xF6, '#', 'i', 0xF7}; - std::vector const v5 = {'[', '$', 'I', '#', '[', 'i', 0xF5, 'i', 0xF1, ']'}; - std::vector const v6 = {'[', '#', '[', 'i', 0xF3, 'i', 0x02, ']'}; + std::vector const v1 = { '[', '#', 'i', 0xF1 }; + std::vector const v2 = { '[', '$', 'I', '#', 'i', 0xF2 }; + std::vector const v3 = { '[', '$', 'I', '#', '[', 'i', 0xF4, 'i', 0x02, ']' }; + std::vector const v4 = { '[', '$', 0xF6, '#', 'i', 0xF7 }; + std::vector const v5 = { '[', '$', 'I', '#', '[', 'i', 0xF5, 'i', 0xF1, ']' }; + std::vector const v6 = { '[', '#', '[', 'i', 0xF3, 'i', 0x02, ']' }; - std::vector const vI = {'[', '#', 'I', 0x00, 0xF1}; - std::vector const vl = {'[', '#', 'l', 0x00, 0x00, 0x00, 0xF2}; - std::vector const vL = {'[', '#', 'L', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3}; - std::vector const vM = {'[', '$', 'M', '#', '[', 'I', 0x00, 0x20, 'M', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, ']'}; - std::vector const vMX = {'[', '$', 'U', '#', '[', 'M', 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 'U', 0x01, ']'}; + std::vector const vI = { '[', '#', 'I', 0x00, 0xF1 }; + std::vector const vl = { '[', '#', 'l', 0x00, 0x00, 0x00, 0xF2 }; + std::vector const vL = { '[', '#', 'L', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3 }; + std::vector const vM = { '[', '$', 'M', '#', '[', 'I', 0x00, 0x20, 'M', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, ']' }; + std::vector const vMX = { '[', '$', 'U', '#', '[', 'M', 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 'U', 0x01, ']' }; json _; CHECK_THROWS_WITH_AS( @@ -2708,8 +2706,8 @@ TEST_CASE("BJData") SECTION("optimized array: integer value overflow") { #if SIZE_MAX == 0xffffffff - std::vector const vL = {'[', '#', 'L', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F}; - std::vector const vM = {'[', '$', 'M', '#', '[', 'I', 0x00, 0x20, 'M', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, ']'}; + std::vector const vL = { '[', '#', 'L', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F }; + std::vector const vM = { '[', '$', 'M', '#', '[', 'I', 0x00, 0x20, 'M', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, ']' }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vL), @@ -2726,10 +2724,10 @@ TEST_CASE("BJData") SECTION("do not accept NTFZ markers in ndarray optimized type (with count)") { json _; - std::vector const v_N = {'[', '$', 'N', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2}; - std::vector const v_T = {'[', '$', 'T', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2}; - std::vector const v_F = {'[', '$', 'F', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2}; - std::vector const v_Z = {'[', '$', 'Z', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2}; + std::vector const v_N = { '[', '$', 'N', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2 }; + std::vector const v_T = { '[', '$', 'T', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2 }; + std::vector const v_F = { '[', '$', 'F', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2 }; + std::vector const v_Z = { '[', '$', 'Z', '#', '[', '#', 'i', 2, 'i', 1, 'i', 2 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(v_N), @@ -2759,10 +2757,10 @@ TEST_CASE("BJData") SECTION("do not accept NTFZ markers in ndarray optimized type (without count)") { json _; - std::vector const v_N = {'[', '$', 'N', '#', '[', 'i', 1, 'i', 2, ']'}; - std::vector const v_T = {'[', '$', 'T', '#', '[', 'i', 1, 'i', 2, ']'}; - std::vector const v_F = {'[', '$', 'F', '#', '[', 'i', 1, 'i', 2, ']'}; - std::vector const v_Z = {'[', '$', 'Z', '#', '[', 'i', 1, 'i', 2, ']'}; + std::vector const v_N = { '[', '$', 'N', '#', '[', 'i', 1, 'i', 2, ']' }; + std::vector const v_T = { '[', '$', 'T', '#', '[', 'i', 1, 'i', 2, ']' }; + std::vector const v_F = { '[', '$', 'F', '#', '[', 'i', 1, 'i', 2, ']' }; + std::vector const v_Z = { '[', '$', 'Z', '#', '[', 'i', 1, 'i', 2, ']' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(v_N), @@ -2792,20 +2790,20 @@ TEST_CASE("BJData") SECTION("strings") { - std::vector const vS = {'S'}; + std::vector const vS = { 'S' }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vS), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vS, true, false).is_discarded()); - std::vector const v = {'S', 'i', '2', 'a'}; + std::vector const v = { 'S', 'i', '2', 'a' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(v), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing BJData string: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(v, true, false).is_discarded()); - std::vector const vC = {'C'}; + std::vector const vC = { 'C' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vC), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing BJData char: unexpected end of input", json::parse_error&); @@ -2814,56 +2812,56 @@ TEST_CASE("BJData") SECTION("sizes") { - std::vector const vU = {'[', '#', 'U'}; + std::vector const vU = { '[', '#', 'U' }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vU), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vU, true, false).is_discarded()); - std::vector const vi = {'[', '#', 'i'}; + std::vector const vi = { '[', '#', 'i' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vi), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vi, true, false).is_discarded()); - std::vector const vI = {'[', '#', 'I'}; + std::vector const vI = { '[', '#', 'I' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vI), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vI, true, false).is_discarded()); - std::vector const vu = {'[', '#', 'u'}; + std::vector const vu = { '[', '#', 'u' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vu), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vu, true, false).is_discarded()); - std::vector const vl = {'[', '#', 'l'}; + std::vector const vl = { '[', '#', 'l' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vl), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vl, true, false).is_discarded()); - std::vector const vm = {'[', '#', 'm'}; + std::vector const vm = { '[', '#', 'm' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vm), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vm, true, false).is_discarded()); - std::vector const vL = {'[', '#', 'L'}; + std::vector const vL = { '[', '#', 'L' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vL), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vL, true, false).is_discarded()); - std::vector const vM = {'[', '#', 'M'}; + std::vector const vM = { '[', '#', 'M' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vM), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vM, true, false).is_discarded()); - std::vector const v0 = {'[', '#', 'T', ']'}; + std::vector const v0 = { '[', '#', 'T', ']' }; CHECK_THROWS_WITH( _ = json::from_bjdata(v0), "[json.exception.parse_error.113] parse error at byte 3: syntax error while parsing BJData size: expected length type specification (U, i, u, I, m, l, M, L) after '#'; last byte: 0x54"); @@ -2873,28 +2871,28 @@ TEST_CASE("BJData") SECTION("parse bjdata markers as array size in ubjson") { json _; - std::vector const vu = {'[', '#', 'u'}; + std::vector const vu = { '[', '#', 'u' }; CHECK_THROWS_WITH_AS( _ = json::from_ubjson(vu), "[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: 0x75", json::parse_error&); CHECK(json::from_ubjson(vu, true, false).is_discarded()); - std::vector const vm = {'[', '#', 'm'}; + std::vector const vm = { '[', '#', 'm' }; CHECK_THROWS_WITH_AS( _ = json::from_ubjson(vm), "[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: 0x6D", json::parse_error&); CHECK(json::from_ubjson(vm, true, false).is_discarded()); - std::vector const vM = {'[', '#', 'M'}; + std::vector const vM = { '[', '#', 'M' }; CHECK_THROWS_WITH_AS( _ = json::from_ubjson(vM), "[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: 0x4D", json::parse_error&); CHECK(json::from_ubjson(vM, true, false).is_discarded()); - std::vector const v0 = {'[', '#', '['}; + std::vector const v0 = { '[', '#', '[' }; 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: 0x5B", @@ -2904,26 +2902,26 @@ TEST_CASE("BJData") SECTION("types") { - std::vector const v0 = {'[', '$'}; + std::vector const v0 = { '[', '$' }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(v0), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing BJData type: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(v0, true, false).is_discarded()); - std::vector const vi = {'[', '$', '#'}; + std::vector const vi = { '[', '$', '#' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vi), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vi, true, false).is_discarded()); - std::vector const vU = {'[', '$', 'U'}; + std::vector const vU = { '[', '$', 'U' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vU), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vU, true, false).is_discarded()); - std::vector const v1 = {'[', '$', '['}; + std::vector const v1 = { '[', '$', '[' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(v1), "[json.exception.parse_error.112] parse error at byte 3: syntax error while parsing BJData type: marker 0x5B is not a permitted optimized array type", @@ -2933,20 +2931,20 @@ TEST_CASE("BJData") SECTION("arrays") { - std::vector const vST = {'[', '$', 'i', '#', 'i', 2, 1}; + std::vector const vST = { '[', '$', 'i', '#', 'i', 2, 1 }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vST), "[json.exception.parse_error.110] parse error at byte 8: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vST, true, false).is_discarded()); - std::vector const vS = {'[', '#', 'i', 2, 'i', 1}; + std::vector const vS = { '[', '#', 'i', 2, 'i', 1 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vS), "[json.exception.parse_error.110] parse error at byte 7: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vS, true, false).is_discarded()); - std::vector const v = {'[', 'i', 2, 'i', 1}; + std::vector const v = { '[', 'i', 2, 'i', 1 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(v), "[json.exception.parse_error.110] parse error at byte 6: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); @@ -2955,7 +2953,7 @@ TEST_CASE("BJData") SECTION("ndarrays") { - std::vector const vST = {'[', '$', 'i', '#', '[', '$', 'i', '#'}; + std::vector const vST = { '[', '$', 'i', '#', '[', '$', 'i', '#' }; json _; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vST), @@ -2963,123 +2961,123 @@ TEST_CASE("BJData") json::parse_error&); CHECK(json::from_bjdata(vST, true, false).is_discarded()); - std::vector const v = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 1, 2}; + std::vector const v = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 1, 2 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(v), "[json.exception.parse_error.110] parse error at byte 13: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(v, true, false).is_discarded()); - std::vector const vS0 = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 1}; + std::vector const vS0 = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'i', 2, 1 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vS0), "[json.exception.parse_error.110] parse error at byte 12: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vS0, true, false).is_discarded()); - std::vector const vS = {'[', '$', 'i', '#', '[', '#', 'i', 2, 1, 2, 1}; + std::vector const vS = { '[', '$', 'i', '#', '[', '#', 'i', 2, 1, 2, 1 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vS), "[json.exception.parse_error.113] parse error at byte 9: syntax error while parsing BJData size: expected length type specification (U, i, u, I, m, l, M, L) after '#'; last byte: 0x01", json::parse_error&); CHECK(json::from_bjdata(vS, true, false).is_discarded()); - std::vector const vT = {'[', '$', 'i', '#', '[', 'i', 2, 'i'}; + std::vector const vT = { '[', '$', 'i', '#', '[', 'i', 2, 'i' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vT), "[json.exception.parse_error.110] parse error at byte 9: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vT, true, false).is_discarded()); - std::vector const vT0 = {'[', '$', 'i', '#', '[', 'i'}; + std::vector const vT0 = { '[', '$', 'i', '#', '[', 'i' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vT0), "[json.exception.parse_error.110] parse error at byte 7: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vT0, true, false).is_discarded()); - std::vector const vu = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'u', 1, 0}; + std::vector const vu = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'u', 1, 0 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vu), "[json.exception.parse_error.110] parse error at byte 12: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vu, true, false).is_discarded()); - std::vector const vm = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'm', 1, 0, 0, 0}; + std::vector const vm = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'm', 1, 0, 0, 0 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vm), "[json.exception.parse_error.110] parse error at byte 14: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vm, true, false).is_discarded()); - std::vector const vM = {'[', '$', 'i', '#', '[', '$', 'i', '#', 'M', 1, 0, 0, 0, 0, 0, 0, 0}; + std::vector const vM = { '[', '$', 'i', '#', '[', '$', 'i', '#', 'M', 1, 0, 0, 0, 0, 0, 0, 0 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vM), "[json.exception.parse_error.110] parse error at byte 18: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vM, true, false).is_discarded()); - std::vector const vU = {'[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 1, 2, 3, 4, 5}; + std::vector const vU = { '[', '$', 'U', '#', '[', '$', 'i', '#', 'i', 2, 2, 3, 1, 2, 3, 4, 5 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vU), "[json.exception.parse_error.110] parse error at byte 18: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vU, true, false).is_discarded()); - std::vector const vT1 = {'[', '$', 'T', '#', '[', '$', 'i', '#', 'i', 2, 2, 3}; + std::vector const vT1 = { '[', '$', 'T', '#', '[', '$', 'i', '#', 'i', 2, 2, 3 }; CHECK(json::from_bjdata(vT1, true, false).is_discarded()); - std::vector const vh = {'[', '$', 'h', '#', '[', '$', 'i', '#', 'i', 2, 2, 3}; + std::vector const vh = { '[', '$', 'h', '#', '[', '$', 'i', '#', 'i', 2, 2, 3 }; CHECK(json::from_bjdata(vh, true, false).is_discarded()); - std::vector const vR = {'[', '$', 'i', '#', '[', 'i', 1, '[', ']', ']', 1}; + std::vector const vR = { '[', '$', 'i', '#', '[', 'i', 1, '[', ']', ']', 1 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vR), "[json.exception.parse_error.113] parse error at byte 8: syntax error while parsing BJData size: ndarray dimensional vector is not allowed", json::parse_error&); CHECK(json::from_bjdata(vR, true, false).is_discarded()); - std::vector const vRo = {'[', '$', 'i', '#', '[', 'i', 0, '{', '}', ']', 1}; + std::vector const vRo = { '[', '$', 'i', '#', '[', 'i', 0, '{', '}', ']', 1 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vRo), "[json.exception.parse_error.113] parse error at byte 8: syntax error while parsing BJData size: expected length type specification (U, i, u, I, m, l, M, L) after '#'; last byte: 0x7B", json::parse_error&); CHECK(json::from_bjdata(vRo, true, false).is_discarded()); - std::vector const vR1 = {'[', '$', 'i', '#', '[', '[', 'i', 1, ']', ']', 1}; + std::vector const vR1 = { '[', '$', 'i', '#', '[', '[', 'i', 1, ']', ']', 1 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vR1), "[json.exception.parse_error.113] parse error at byte 6: syntax error while parsing BJData size: ndarray dimensional vector is not allowed", json::parse_error&); CHECK(json::from_bjdata(vR1, true, false).is_discarded()); - std::vector const vR2 = {'[', '$', 'i', '#', '[', '#', '[', 'i', 1, ']', ']', 1}; + std::vector const vR2 = { '[', '$', 'i', '#', '[', '#', '[', 'i', 1, ']', ']', 1 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vR2), "[json.exception.parse_error.113] parse error at byte 11: syntax error while parsing BJData size: expected length type specification (U, i, u, I, m, l, M, L) after '#'; last byte: 0x5D", json::parse_error&); CHECK(json::from_bjdata(vR2, true, false).is_discarded()); - std::vector const vR3 = {'[', '#', '[', 'i', '2', 'i', 2, ']'}; + std::vector const vR3 = { '[', '#', '[', 'i', '2', 'i', 2, ']' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vR3), "[json.exception.parse_error.112] parse error at byte 8: syntax error while parsing BJData size: ndarray requires both type and size", json::parse_error&); CHECK(json::from_bjdata(vR3, true, false).is_discarded()); - std::vector const vR4 = {'[', '$', 'i', '#', '[', '$', 'i', '#', '[', 'i', 1, ']', 1}; + std::vector const vR4 = { '[', '$', 'i', '#', '[', '$', 'i', '#', '[', 'i', 1, ']', 1 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vR4), "[json.exception.parse_error.110] parse error at byte 14: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vR4, true, false).is_discarded()); - std::vector const vR5 = {'[', '$', 'i', '#', '[', '[', '[', ']', ']', ']'}; + std::vector const vR5 = { '[', '$', 'i', '#', '[', '[', '[', ']', ']', ']' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vR5), "[json.exception.parse_error.113] parse error at byte 6: syntax error while parsing BJData size: ndarray dimensional vector is not allowed", json::parse_error&); CHECK(json::from_bjdata(vR5, true, false).is_discarded()); - std::vector const vR6 = {'[', '$', 'i', '#', '[', '$', 'i', '#', '[', 'i', '2', 'i', 2, ']'}; + std::vector const vR6 = { '[', '$', 'i', '#', '[', '$', 'i', '#', '[', 'i', '2', 'i', 2, ']' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vR6), "[json.exception.parse_error.112] parse error at byte 14: syntax error while parsing BJData size: ndarray can not be recursive", json::parse_error&); CHECK(json::from_bjdata(vR6, true, false).is_discarded()); - std::vector const vH = {'[', 'H', '[', '#', '[', '$', 'i', '#', '[', 'i', '2', 'i', 2, ']'}; + std::vector const vH = { '[', 'H', '[', '#', '[', '$', 'i', '#', '[', 'i', '2', 'i', 2, ']' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vH), "[json.exception.parse_error.113] parse error at byte 3: syntax error while parsing BJData size: ndarray dimensional vector is not allowed", @@ -3089,63 +3087,63 @@ TEST_CASE("BJData") SECTION("objects") { - std::vector const vST = {'{', '$', 'i', '#', 'i', 2, 'i', 1, 'a', 1}; + std::vector const vST = { '{', '$', 'i', '#', 'i', 2, 'i', 1, 'a', 1 }; json _; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vST), "[json.exception.parse_error.110] parse error at byte 11: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vST, true, false).is_discarded()); - std::vector const vT = {'{', '$', 'i', 'i', 1, 'a', 1}; + std::vector const vT = { '{', '$', 'i', 'i', 1, 'a', 1 }; CHECK_THROWS_WITH( _ = json::from_bjdata(vT), "[json.exception.parse_error.112] parse error at byte 4: syntax error while parsing BJData size: expected '#' after type information; last byte: 0x69"); CHECK(json::from_bjdata(vT, true, false).is_discarded()); - std::vector const vS = {'{', '#', 'i', 2, 'i', 1, 'a', 'i', 1}; + std::vector const vS = { '{', '#', 'i', 2, 'i', 1, 'a', 'i', 1 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vS), "[json.exception.parse_error.110] parse error at byte 10: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vS, true, false).is_discarded()); - std::vector const v = {'{', 'i', 1, 'a', 'i', 1}; + std::vector const v = { '{', 'i', 1, 'a', 'i', 1 }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(v), "[json.exception.parse_error.110] parse error at byte 7: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(v, true, false).is_discarded()); - std::vector const v2 = {'{', 'i', 1, 'a', 'i', 1, 'i'}; + std::vector const v2 = { '{', 'i', 1, 'a', 'i', 1, 'i' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(v2), "[json.exception.parse_error.110] parse error at byte 8: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(v2, true, false).is_discarded()); - std::vector const v3 = {'{', 'i', 1, 'a'}; + std::vector const v3 = { '{', 'i', 1, 'a' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(v3), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(v3, true, false).is_discarded()); - std::vector const vST1 = {'{', '$', 'd', '#', 'i', 2, 'i', 1, 'a'}; + std::vector const vST1 = { '{', '$', 'd', '#', 'i', 2, 'i', 1, 'a' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vST1), "[json.exception.parse_error.110] parse error at byte 10: syntax error while parsing BJData number: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vST1, true, false).is_discarded()); - std::vector const vST2 = {'{', '#', 'i', 2, 'i', 1, 'a'}; + std::vector const vST2 = { '{', '#', 'i', 2, 'i', 1, 'a' }; CHECK_THROWS_WITH_AS(_ = json::from_bjdata(vST2), "[json.exception.parse_error.110] parse error at byte 8: syntax error while parsing BJData value: unexpected end of input", json::parse_error&); CHECK(json::from_bjdata(vST2, true, false).is_discarded()); - std::vector const vO = {'{', '#', '[', 'i', 2, 'i', 1, ']', 'i', 1, 'a', 'i', 1, 'i', 1, 'b', 'i', 2}; + std::vector const vO = { '{', '#', '[', 'i', 2, 'i', 1, ']', 'i', 1, 'a', 'i', 1, 'i', 1, 'b', 'i', 2 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vO), "[json.exception.parse_error.112] parse error at byte 8: syntax error while parsing BJData size: ndarray requires both type and size", json::parse_error&); CHECK(json::from_bjdata(vO, true, false).is_discarded()); - std::vector const vO2 = {'{', '$', 'i', '#', '[', 'i', 2, 'i', 1, ']', 'i', 1, 'a', 1, 'i', 1, 'b', 2}; + std::vector const vO2 = { '{', '$', 'i', '#', '[', 'i', 2, 'i', 1, ']', 'i', 1, 'a', 1, 'i', 1, 'b', 2 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(vO2), "[json.exception.parse_error.112] parse error at byte 10: syntax error while parsing BJData object: BJData object does not support ND-array size in optimized format", @@ -3160,51 +3158,51 @@ TEST_CASE("BJData") { SECTION("array of i") { - json const j = {1, -1}; - std::vector const expected = {'[', '$', 'i', '#', 'i', 2, 1, 0xff}; + json const j = { 1, -1 }; + std::vector const expected = { '[', '$', 'i', '#', 'i', 2, 1, 0xff }; CHECK(json::to_bjdata(j, true, true) == expected); } SECTION("array of U") { - json const j = {200, 201}; - std::vector const expected = {'[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9}; + json const j = { 200, 201 }; + std::vector const expected = { '[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9 }; CHECK(json::to_bjdata(j, true, true) == expected); } SECTION("array of I") { - json const j = {30000, -30000}; - std::vector const expected = {'[', '$', 'I', '#', 'i', 2, 0x30, 0x75, 0xd0, 0x8a}; + json const j = { 30000, -30000 }; + std::vector const expected = { '[', '$', 'I', '#', 'i', 2, 0x30, 0x75, 0xd0, 0x8a }; CHECK(json::to_bjdata(j, true, true) == expected); } SECTION("array of u") { - json const j = {50000, 50001}; - std::vector const expected = {'[', '$', 'u', '#', 'i', 2, 0x50, 0xC3, 0x51, 0xC3}; + json const j = { 50000, 50001 }; + std::vector const expected = { '[', '$', 'u', '#', 'i', 2, 0x50, 0xC3, 0x51, 0xC3 }; CHECK(json::to_bjdata(j, true, true) == expected); } SECTION("array of l") { - json const j = {70000, -70000}; - std::vector const expected = {'[', '$', 'l', '#', 'i', 2, 0x70, 0x11, 0x01, 0x00, 0x90, 0xEE, 0xFE, 0xFF}; + json const j = { 70000, -70000 }; + std::vector const expected = { '[', '$', 'l', '#', 'i', 2, 0x70, 0x11, 0x01, 0x00, 0x90, 0xEE, 0xFE, 0xFF }; CHECK(json::to_bjdata(j, true, true) == expected); } SECTION("array of m") { - json const j = {3147483647, 3147483648}; - std::vector const expected = {'[', '$', 'm', '#', 'i', 2, 0xFF, 0xC9, 0x9A, 0xBB, 0x00, 0xCA, 0x9A, 0xBB}; + json const j = { 3147483647, 3147483648 }; + std::vector const expected = { '[', '$', 'm', '#', 'i', 2, 0xFF, 0xC9, 0x9A, 0xBB, 0x00, 0xCA, 0x9A, 0xBB }; CHECK(json::to_bjdata(j, true, true) == expected); } SECTION("array of L") { - json const j = {5000000000, -5000000000}; - std::vector const expected = {'[', '$', 'L', '#', 'i', 2, 0x00, 0xF2, 0x05, 0x2A, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x0E, 0xFA, 0xD5, 0xFE, 0xFF, 0xFF, 0xFF}; + json const j = { 5000000000, -5000000000 }; + std::vector const expected = { '[', '$', 'L', '#', 'i', 2, 0x00, 0xF2, 0x05, 0x2A, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x0E, 0xFA, 0xD5, 0xFE, 0xFF, 0xFF, 0xFF }; CHECK(json::to_bjdata(j, true, true) == expected); } } @@ -3213,76 +3211,76 @@ TEST_CASE("BJData") { SECTION("array of i") { - json const j = {1u, 2u}; - std::vector const expected = {'[', '$', 'i', '#', 'i', 2, 1, 2}; - std::vector const expected_size = {'[', '#', 'i', 2, 'i', 1, 'i', 2}; + json const j = { 1u, 2u }; + std::vector const expected = { '[', '$', 'i', '#', 'i', 2, 1, 2 }; + std::vector const expected_size = { '[', '#', 'i', 2, 'i', 1, 'i', 2 }; CHECK(json::to_bjdata(j, true, true) == expected); CHECK(json::to_bjdata(j, true) == expected_size); } SECTION("array of U") { - json const j = {200u, 201u}; - std::vector const expected = {'[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9}; - std::vector const expected_size = {'[', '#', 'i', 2, 'U', 0xC8, 'U', 0xC9}; + json const j = { 200u, 201u }; + std::vector const expected = { '[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9 }; + std::vector const expected_size = { '[', '#', 'i', 2, 'U', 0xC8, 'U', 0xC9 }; CHECK(json::to_bjdata(j, true, true) == expected); CHECK(json::to_bjdata(j, true) == expected_size); } SECTION("array of I") { - json const j = {30000u, 30001u}; - std::vector const expected = {'[', '$', 'I', '#', 'i', 2, 0x30, 0x75, 0x31, 0x75}; - std::vector const expected_size = {'[', '#', 'i', 2, 'I', 0x30, 0x75, 'I', 0x31, 0x75}; + json const j = { 30000u, 30001u }; + std::vector const expected = { '[', '$', 'I', '#', 'i', 2, 0x30, 0x75, 0x31, 0x75 }; + std::vector const expected_size = { '[', '#', 'i', 2, 'I', 0x30, 0x75, 'I', 0x31, 0x75 }; CHECK(json::to_bjdata(j, true, true) == expected); CHECK(json::to_bjdata(j, true) == expected_size); } SECTION("array of u") { - json const j = {50000u, 50001u}; - std::vector const expected = {'[', '$', 'u', '#', 'i', 2, 0x50, 0xC3, 0x51, 0xC3}; - std::vector const expected_size = {'[', '#', 'i', 2, 'u', 0x50, 0xC3, 'u', 0x51, 0xC3}; + json const j = { 50000u, 50001u }; + std::vector const expected = { '[', '$', 'u', '#', 'i', 2, 0x50, 0xC3, 0x51, 0xC3 }; + std::vector const expected_size = { '[', '#', 'i', 2, 'u', 0x50, 0xC3, 'u', 0x51, 0xC3 }; CHECK(json::to_bjdata(j, true, true) == expected); CHECK(json::to_bjdata(j, true) == expected_size); } SECTION("array of l") { - json const j = {70000u, 70001u}; - std::vector const expected = {'[', '$', 'l', '#', 'i', 2, 0x70, 0x11, 0x01, 0x00, 0x71, 0x11, 0x01, 0x00}; - std::vector const expected_size = {'[', '#', 'i', 2, 'l', 0x70, 0x11, 0x01, 0x00, 'l', 0x71, 0x11, 0x01, 0x00}; + json const j = { 70000u, 70001u }; + std::vector const expected = { '[', '$', 'l', '#', 'i', 2, 0x70, 0x11, 0x01, 0x00, 0x71, 0x11, 0x01, 0x00 }; + std::vector const expected_size = { '[', '#', 'i', 2, 'l', 0x70, 0x11, 0x01, 0x00, 'l', 0x71, 0x11, 0x01, 0x00 }; CHECK(json::to_bjdata(j, true, true) == expected); CHECK(json::to_bjdata(j, true) == expected_size); } SECTION("array of m") { - json const j = {3147483647u, 3147483648u}; - std::vector const expected = {'[', '$', 'm', '#', 'i', 2, 0xFF, 0xC9, 0x9A, 0xBB, 0x00, 0xCA, 0x9A, 0xBB}; - std::vector const expected_size = {'[', '#', 'i', 2, 'm', 0xFF, 0xC9, 0x9A, 0xBB, 'm', 0x00, 0xCA, 0x9A, 0xBB}; + json const j = { 3147483647u, 3147483648u }; + std::vector const expected = { '[', '$', 'm', '#', 'i', 2, 0xFF, 0xC9, 0x9A, 0xBB, 0x00, 0xCA, 0x9A, 0xBB }; + std::vector const expected_size = { '[', '#', 'i', 2, 'm', 0xFF, 0xC9, 0x9A, 0xBB, 'm', 0x00, 0xCA, 0x9A, 0xBB }; CHECK(json::to_bjdata(j, true, true) == expected); CHECK(json::to_bjdata(j, true) == expected_size); } SECTION("array of L") { - json const j = {5000000000u, 5000000001u}; - std::vector const expected = {'[', '$', 'L', '#', 'i', 2, 0x00, 0xF2, 0x05, 0x2A, 0x01, - 0x00, 0x00, 0x00, 0x01, 0xF2, 0x05, 0x2A, 0x01, 0x00, 0x00, 0x00}; - std::vector const expected_size = {'[', '#', 'i', 2, 'L', 0x00, 0xF2, 0x05, 0x2A, 0x01, 0x00, - 0x00, 0x00, 'L', 0x01, 0xF2, 0x05, 0x2A, 0x01, 0x00, 0x00, 0x00}; + json const j = { 5000000000u, 5000000001u }; + std::vector const expected = { '[', '$', 'L', '#', 'i', 2, 0x00, 0xF2, 0x05, 0x2A, 0x01, + 0x00, 0x00, 0x00, 0x01, 0xF2, 0x05, 0x2A, 0x01, 0x00, 0x00, 0x00 }; + std::vector const expected_size = { '[', '#', 'i', 2, 'L', 0x00, 0xF2, 0x05, 0x2A, 0x01, 0x00, + 0x00, 0x00, 'L', 0x01, 0xF2, 0x05, 0x2A, 0x01, 0x00, 0x00, 0x00 }; CHECK(json::to_bjdata(j, true, true) == expected); CHECK(json::to_bjdata(j, true) == expected_size); } SECTION("array of M") { - json const j = {10223372036854775807ull, 10223372036854775808ull}; - std::vector const expected = {'[', '$', 'M', '#', 'i', 2, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, - 0xB6, 0xE0, 0x8D, 0x00, 0x00, 0x64, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D}; - std::vector const expected_size = {'[', '#', 'i', 2, 'M', 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, - 0xE0, 0x8D, 'M', 0x00, 0x00, 0x64, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D}; + json const j = { 10223372036854775807ull, 10223372036854775808ull }; + std::vector const expected = { '[', '$', 'M', '#', 'i', 2, 0xFF, 0xFF, 0x63, 0xA7, 0xB3, + 0xB6, 0xE0, 0x8D, 0x00, 0x00, 0x64, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D }; + std::vector const expected_size = { '[', '#', 'i', 2, 'M', 0xFF, 0xFF, 0x63, 0xA7, 0xB3, 0xB6, + 0xE0, 0x8D, 'M', 0x00, 0x00, 0x64, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D }; CHECK(json::to_bjdata(j, true, true) == expected); CHECK(json::to_bjdata(j, true) == expected_size); } @@ -3294,18 +3292,18 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") { SECTION("Null Value") { - json const j = {{"passcode", nullptr}}; - std::vector v = {'{', 'i', 8, 'p', 'a', 's', 's', 'c', 'o', 'd', 'e', 'Z', '}'}; + json const j = { { "passcode", nullptr } }; + std::vector v = { '{', 'i', 8, 'p', 'a', 's', 's', 'c', 'o', 'd', 'e', 'Z', '}' }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } SECTION("No-Op Value") { - json const j = {"foo", "bar", "baz"}; - std::vector v = {'[', 'S', 'i', 3, 'f', 'o', 'o', 'S', 'i', 3, 'b', 'a', 'r', 'S', 'i', 3, 'b', 'a', 'z', ']'}; - std::vector const v2 = {'[', 'S', 'i', 3, 'f', 'o', 'o', 'N', 'S', 'i', 3, 'b', 'a', - 'r', 'N', 'N', 'N', 'S', 'i', 3, 'b', 'a', 'z', 'N', 'N', ']'}; + json const j = { "foo", "bar", "baz" }; + std::vector v = { '[', 'S', 'i', 3, 'f', 'o', 'o', 'S', 'i', 3, 'b', 'a', 'r', 'S', 'i', 3, 'b', 'a', 'z', ']' }; + std::vector const v2 = { '[', 'S', 'i', 3, 'f', 'o', 'o', 'N', 'S', 'i', 3, 'b', 'a', + 'r', 'N', 'N', 'N', 'S', 'i', 3, 'b', 'a', 'z', 'N', 'N', ']' }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); CHECK(json::from_bjdata(v2) == j); @@ -3313,38 +3311,39 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Boolean Types") { - json const j = {{"authorized", true}, {"verified", false}}; - std::vector v = {'{', 'i', 10, 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'd', - 'T', 'i', 8, 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', 'F', '}'}; + json const j = { { "authorized", true }, { "verified", false } }; + std::vector v = { + '{', 'i', 10, 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'd', 'T', 'i', 8, 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', 'F', '}' + }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } SECTION("Numeric Types") { - json j = {{"int8", 16}, - {"uint8", 255}, - {"int16", 32767}, - {"uint16", 42767}, - {"int32", 2147483647}, - {"uint32", 3147483647}, - {"int64", 9223372036854775807}, - {"uint64", 10223372036854775807ull}, - {"float64", 113243.7863123}}; - std::vector v = {'{', 'i', 7, 'f', 'l', 'o', 'a', 't', '6', '4', 'D', 0xcf, 0x34, 0xbc, 0x94, 0xbc, 0xa5, 0xfb, 0x40, 'i', - 5, 'i', 'n', 't', '1', '6', 'I', 0xff, 0x7f, 'i', 5, 'i', 'n', 't', '3', '2', 'l', 0xff, 0xff, 0xff, - 0x7f, 'i', 5, 'i', 'n', 't', '6', '4', 'L', 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 'i', 4, 'i', - 'n', 't', '8', 'i', 16, 'i', 6, 'u', 'i', 'n', 't', '1', '6', 'u', 0x0F, 0xA7, 'i', 6, 'u', 'i', - 'n', 't', '3', '2', 'm', 0xFF, 0xC9, 0x9A, 0xBB, 'i', 6, 'u', 'i', 'n', 't', '6', '4', 'M', 0xFF, 0xFF, - 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D, 'i', 5, 'u', 'i', 'n', 't', '8', 'U', 0xff, '}'}; + json j = { { "int8", 16 }, + { "uint8", 255 }, + { "int16", 32767 }, + { "uint16", 42767 }, + { "int32", 2147483647 }, + { "uint32", 3147483647 }, + { "int64", 9223372036854775807 }, + { "uint64", 10223372036854775807ull }, + { "float64", 113243.7863123 } }; + std::vector v = { '{', 'i', 7, 'f', 'l', 'o', 'a', 't', '6', '4', 'D', 0xcf, 0x34, 0xbc, 0x94, 0xbc, 0xa5, 0xfb, 0x40, 'i', + 5, 'i', 'n', 't', '1', '6', 'I', 0xff, 0x7f, 'i', 5, 'i', 'n', 't', '3', '2', 'l', 0xff, 0xff, 0xff, + 0x7f, 'i', 5, 'i', 'n', 't', '6', '4', 'L', 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 'i', 4, 'i', + 'n', 't', '8', 'i', 16, 'i', 6, 'u', 'i', 'n', 't', '1', '6', 'u', 0x0F, 0xA7, 'i', 6, 'u', 'i', + 'n', 't', '3', '2', 'm', 0xFF, 0xC9, 0x9A, 0xBB, 'i', 6, 'u', 'i', 'n', 't', '6', '4', 'M', 0xFF, 0xFF, + 0x63, 0xA7, 0xB3, 0xB6, 0xE0, 0x8D, 'i', 5, 'u', 'i', 'n', 't', '8', 'U', 0xff, '}' }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } SECTION("Char Type") { - json const j = {{"rolecode", "a"}, {"delim", ";"}}; - std::vector const v = {'{', 'i', 5, 'd', 'e', 'l', 'i', 'm', 'C', ';', 'i', 8, 'r', 'o', 'l', 'e', 'c', 'o', 'd', 'e', 'C', 'a', '}'}; + json const j = { { "rolecode", "a" }, { "delim", ";" } }; + std::vector const v = { '{', 'i', 5, 'd', 'e', 'l', 'i', 'm', 'C', ';', 'i', 8, 'r', 'o', 'l', 'e', 'c', 'o', 'd', 'e', 'C', 'a', '}' }; //CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } @@ -3354,7 +3353,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("English") { json const j = "hello"; - std::vector v = {'S', 'i', 5, 'h', 'e', 'l', 'l', 'o'}; + std::vector v = { 'S', 'i', 5, 'h', 'e', 'l', 'l', 'o' }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } @@ -3362,7 +3361,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Russian") { json const j = "привет"; - std::vector v = {'S', 'i', 12, 0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5, 0xD1, 0x82}; + std::vector v = { 'S', 'i', 12, 0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5, 0xD1, 0x82 }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } @@ -3370,7 +3369,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Russian") { json const j = "مرحبا"; - std::vector v = {'S', 'i', 10, 0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xA7}; + std::vector v = { 'S', 'i', 10, 0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xA7 }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } @@ -3381,9 +3380,9 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("size=false type=false") { // note the float has been replaced by a double - json const j = {nullptr, true, false, 4782345193, 153.132, "ham"}; - std::vector v = {'[', 'Z', 'T', 'F', 'L', 0xE9, 0xCB, 0x0C, 0x1D, 0x01, 0x00, 0x00, 0x00, 'D', 0x4e, - 0x62, 0x10, 0x58, 0x39, 0x24, 0x63, 0x40, 'S', 'i', 3, 'h', 'a', 'm', ']'}; + json const j = { nullptr, true, false, 4782345193, 153.132, "ham" }; + std::vector v = { '[', 'Z', 'T', 'F', 'L', 0xE9, 0xCB, 0x0C, 0x1D, 0x01, 0x00, 0x00, 0x00, 'D', 0x4e, + 0x62, 0x10, 0x58, 0x39, 0x24, 0x63, 0x40, 'S', 'i', 3, 'h', 'a', 'm', ']' }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } @@ -3391,9 +3390,9 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("size=true type=false") { // note the float has been replaced by a double - json const j = {nullptr, true, false, 4782345193, 153.132, "ham"}; - std::vector v = {'[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0xE9, 0xCB, 0x0C, 0x1D, 0x01, 0x00, 0x00, 0x00, - 'D', 0x4e, 0x62, 0x10, 0x58, 0x39, 0x24, 0x63, 0x40, 'S', 'i', 3, 'h', 'a', 'm'}; + json const j = { nullptr, true, false, 4782345193, 153.132, "ham" }; + std::vector v = { '[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0xE9, 0xCB, 0x0C, 0x1D, 0x01, 0x00, 0x00, 0x00, + 'D', 0x4e, 0x62, 0x10, 0x58, 0x39, 0x24, 0x63, 0x40, 'S', 'i', 3, 'h', 'a', 'm' }; CHECK(json::to_bjdata(j, true) == v); CHECK(json::from_bjdata(v) == j); } @@ -3401,9 +3400,9 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("size=true type=true") { // note the float has been replaced by a double - json const j = {nullptr, true, false, 4782345193, 153.132, "ham"}; - std::vector v = {'[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0xE9, 0xCB, 0x0C, 0x1D, 0x01, 0x00, 0x00, 0x00, - 'D', 0x4e, 0x62, 0x10, 0x58, 0x39, 0x24, 0x63, 0x40, 'S', 'i', 3, 'h', 'a', 'm'}; + json const j = { nullptr, true, false, 4782345193, 153.132, "ham" }; + std::vector v = { '[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0xE9, 0xCB, 0x0C, 0x1D, 0x01, 0x00, 0x00, 0x00, + 'D', 0x4e, 0x62, 0x10, 0x58, 0x39, 0x24, 0x63, 0x40, 'S', 'i', 3, 'h', 'a', 'm' }; CHECK(json::to_bjdata(j, true, true) == v); CHECK(json::from_bjdata(v) == j); } @@ -3413,18 +3412,18 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") { SECTION("size=false type=false") { - json j = {{"post", {{"id", 1137}, {"author", "rkalla"}, {"timestamp", 1364482090592}, {"body", "I totally agree!"}}}}; - std::vector v = {'{', 'i', 4, 'p', 'o', 's', 't', '{', 'i', 6, 'a', 'u', 't', 'h', 'o', 'r', 'S', 'i', 6, 'r', - 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', 't', 'o', 't', 'a', - 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', 'i', 2, 'i', 'd', 'I', 0x71, 0x04, 'i', 9, 't', - 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x60, 0x66, 0x78, 0xB1, 0x3D, 0x01, 0x00, 0x00, '}', '}'}; + json j = { { "post", { { "id", 1137 }, { "author", "rkalla" }, { "timestamp", 1364482090592 }, { "body", "I totally agree!" } } } }; + std::vector v = { '{', 'i', 4, 'p', 'o', 's', 't', '{', 'i', 6, 'a', 'u', 't', 'h', 'o', 'r', 'S', 'i', 6, 'r', + 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', 't', 'o', 't', 'a', + 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', 'i', 2, 'i', 'd', 'I', 0x71, 0x04, 'i', 9, 't', + 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x60, 0x66, 0x78, 0xB1, 0x3D, 0x01, 0x00, 0x00, '}', '}' }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } SECTION("size=true type=false") { - json j = {{"post", {{"id", 1137}, {"author", "rkalla"}, {"timestamp", 1364482090592}, {"body", "I totally agree!"}}}}; + json j = { { "post", { { "id", 1137 }, { "author", "rkalla" }, { "timestamp", 1364482090592 }, { "body", "I totally agree!" } } } }; std::vector v = { '{', '#', 'i', 1, 'i', 4, 'p', 'o', 's', 't', '{', '#', 'i', 4, 'i', 6, 'a', 'u', 't', 'h', 'o', 'r', 'S', 'i', 6, 'r', 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', @@ -3437,7 +3436,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("size=true type=true") { - json j = {{"post", {{"id", 1137}, {"author", "rkalla"}, {"timestamp", 1364482090592}, {"body", "I totally agree!"}}}}; + json j = { { "post", { { "id", 1137 }, { "author", "rkalla" }, { "timestamp", 1364482090592 }, { "body", "I totally agree!" } } } }; std::vector v = { '{', '#', 'i', 1, 'i', 4, 'p', 'o', 's', 't', '{', '#', 'i', 4, 'i', 6, 'a', 'u', 't', 'h', 'o', 'r', 'S', 'i', 6, 'r', 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', @@ -3456,10 +3455,10 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("No Optimization") { // note the floats have been replaced by doubles - json const j = {29.97, 31.13, 67.0, 2.113, 23.888}; - std::vector v = {'[', 'D', 0xb8, 0x1e, 0x85, 0xeb, 0x51, 0xf8, 0x3d, 0x40, 'D', 0xe1, 0x7a, 0x14, 0xae, 0x47, - 0x21, 0x3f, 0x40, 'D', 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x50, 0x40, 'D', 0x81, 0x95, 0x43, - 0x8b, 0x6c, 0xe7, 0x00, 0x40, 'D', 0x17, 0xd9, 0xce, 0xf7, 0x53, 0xe3, 0x37, 0x40, ']'}; + json const j = { 29.97, 31.13, 67.0, 2.113, 23.888 }; + std::vector v = { '[', 'D', 0xb8, 0x1e, 0x85, 0xeb, 0x51, 0xf8, 0x3d, 0x40, 'D', 0xe1, 0x7a, 0x14, 0xae, 0x47, + 0x21, 0x3f, 0x40, 'D', 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x50, 0x40, 'D', 0x81, 0x95, 0x43, + 0x8b, 0x6c, 0xe7, 0x00, 0x40, 'D', 0x17, 0xd9, 0xce, 0xf7, 0x53, 0xe3, 0x37, 0x40, ']' }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } @@ -3467,7 +3466,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Optimized with count") { // note the floats have been replaced by doubles - json const j = {29.97, 31.13, 67.0, 2.113, 23.888}; + json const j = { 29.97, 31.13, 67.0, 2.113, 23.888 }; std::vector v = { '[', '#', 'i', 5, 'D', 0xb8, 0x1e, 0x85, 0xeb, 0x51, 0xf8, 0x3d, 0x40, 'D', 0xe1, 0x7a, 0x14, 0xae, 0x47, 0x21, 0x3f, 0x40, 'D', 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x50, 0x40, 'D', 0x81, 0x95, @@ -3480,7 +3479,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Optimized with type & count") { // note the floats have been replaced by doubles - json const j = {29.97, 31.13, 67.0, 2.113, 23.888}; + json const j = { 29.97, 31.13, 67.0, 2.113, 23.888 }; std::vector v = { '[', '$', 'D', '#', 'i', 5, 0xb8, 0x1e, 0x85, 0xeb, 0x51, 0xf8, 0x3d, 0x40, 0xe1, 0x7a, 0x14, 0xae, 0x47, 0x21, 0x3f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x50, 0x40, 0x81, 0x95, 0x43, 0x8b, 0x6c, 0xe7, 0x00, 0x40, 0x17, 0xd9, 0xce, 0xf7, 0x53, 0xe3, 0x37, 0x40, @@ -3495,10 +3494,10 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("No Optimization") { // note the floats have been replaced by doubles - json const j = {{"lat", 29.976}, {"long", 31.131}, {"alt", 67.0}}; - std::vector v = {'{', 'i', 3, 'a', 'l', 't', 'D', 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x50, 0x40, - 'i', 3, 'l', 'a', 't', 'D', 0x60, 0xe5, 0xd0, 0x22, 0xdb, 0xf9, 0x3d, 0x40, 'i', - 4, 'l', 'o', 'n', 'g', 'D', 0xa8, 0xc6, 0x4b, 0x37, 0x89, 0x21, 0x3f, 0x40, '}'}; + json const j = { { "lat", 29.976 }, { "long", 31.131 }, { "alt", 67.0 } }; + std::vector v = { '{', 'i', 3, 'a', 'l', 't', 'D', 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x50, 0x40, + 'i', 3, 'l', 'a', 't', 'D', 0x60, 0xe5, 0xd0, 0x22, 0xdb, 0xf9, 0x3d, 0x40, 'i', + 4, 'l', 'o', 'n', 'g', 'D', 0xa8, 0xc6, 0x4b, 0x37, 0x89, 0x21, 0x3f, 0x40, '}' }; CHECK(json::to_bjdata(j) == v); CHECK(json::from_bjdata(v) == j); } @@ -3506,7 +3505,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Optimized with count") { // note the floats have been replaced by doubles - json const j = {{"lat", 29.976}, {"long", 31.131}, {"alt", 67.0}}; + json const j = { { "lat", 29.976 }, { "long", 31.131 }, { "alt", 67.0 } }; std::vector v = { '{', '#', 'i', 3, 'i', 3, 'a', 'l', 't', 'D', 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x50, 0x40, 'i', 3, 'l', 'a', 't', 'D', 0x60, 0xe5, 0xd0, 0x22, 0xdb, 0xf9, 0x3d, 0x40, 'i', 4, 'l', 'o', 'n', 'g', 'D', 0xa8, 0xc6, 0x4b, 0x37, 0x89, 0x21, 0x3f, 0x40, @@ -3518,7 +3517,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Optimized with type & count") { // note the floats have been replaced by doubles - json const j = {{"lat", 29.976}, {"long", 31.131}, {"alt", 67.0}}; + json const j = { { "lat", 29.976 }, { "long", 31.131 }, { "alt", 67.0 } }; std::vector v = { '{', '$', 'D', '#', 'i', 3, 'i', 3, 'a', 'l', 't', 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x50, 0x40, 'i', 3, 'l', 'a', 't', 0x60, 0xe5, 0xd0, 0x22, 0xdb, 0xf9, 0x3d, 0x40, 'i', 4, 'l', 'o', 'n', 'g', 0xa8, 0xc6, 0x4b, 0x37, 0x89, 0x21, 0x3f, 0x40, @@ -3533,7 +3532,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Array") { json _; - std::vector const v = {'[', '$', 'N', '#', 'I', 0x00, 0x02}; + std::vector const v = { '[', '$', 'N', '#', 'I', 0x00, 0x02 }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(v), "[json.exception.parse_error.112] parse error at byte 3: syntax error while parsing BJData type: marker 0x4E is not a permitted optimized array type", @@ -3544,8 +3543,8 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Object") { json _; - std::vector const v = {'{', '$', 'Z', '#', 'i', 3, 'i', 4, 'n', 'a', 'm', 'e', 'i', 8, 'p', - 'a', 's', 's', 'w', 'o', 'r', 'd', 'i', 5, 'e', 'm', 'a', 'i', 'l'}; + std::vector const v = { '{', '$', 'Z', '#', 'i', 3, 'i', 4, 'n', 'a', 'm', 'e', 'i', 8, 'p', + 'a', 's', 's', 'w', 'o', 'r', 'd', 'i', 5, 'e', 'm', 'a', 'i', 'l' }; CHECK_THROWS_WITH_AS( _ = json::from_bjdata(v), "[json.exception.parse_error.112] parse error at byte 3: syntax error while parsing BJData type: marker 0x5A is not a permitted optimized array type", @@ -3560,7 +3559,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") TEST_CASE("all BJData first bytes") { // these bytes will fail immediately with exception parse_error.112 - std::set supported = {'T', 'F', 'Z', 'U', 'i', 'I', 'l', 'L', 'd', 'D', 'C', 'S', '[', '{', 'N', 'H', 'u', 'm', 'M', 'h'}; + std::set supported = { 'T', 'F', 'Z', 'U', 'i', 'I', 'l', 'L', 'd', 'D', 'C', 'S', '[', '{', 'N', 'H', 'u', 'm', 'M', 'h' }; for (auto i = 0; i < 256; ++i) { @@ -3593,48 +3592,48 @@ TEST_CASE("BJData roundtrips" * doctest::skip()) { SECTION("input from self-generated BJData files") { - for (const std::string filename : {TEST_DATA_DIRECTORY "/json_nlohmann_tests/all_unicode.json", - TEST_DATA_DIRECTORY "/json.org/1.json", - TEST_DATA_DIRECTORY "/json.org/2.json", - TEST_DATA_DIRECTORY "/json.org/3.json", - TEST_DATA_DIRECTORY "/json.org/4.json", - TEST_DATA_DIRECTORY "/json.org/5.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip01.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip02.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip03.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip04.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip05.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip06.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip07.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip08.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip09.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip10.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip11.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip12.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip13.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip14.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip15.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip16.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip17.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip18.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip19.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip20.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip21.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip22.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip23.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip24.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip25.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip26.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip27.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip28.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip29.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip30.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip31.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip32.json", - TEST_DATA_DIRECTORY "/json_testsuite/sample.json", - TEST_DATA_DIRECTORY "/json_tests/pass1.json", - TEST_DATA_DIRECTORY "/json_tests/pass2.json", - TEST_DATA_DIRECTORY "/json_tests/pass3.json"}) + for (const std::string filename : { TEST_DATA_DIRECTORY "/json_nlohmann_tests/all_unicode.json", + TEST_DATA_DIRECTORY "/json.org/1.json", + TEST_DATA_DIRECTORY "/json.org/2.json", + TEST_DATA_DIRECTORY "/json.org/3.json", + TEST_DATA_DIRECTORY "/json.org/4.json", + TEST_DATA_DIRECTORY "/json.org/5.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip01.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip02.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip03.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip04.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip05.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip06.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip07.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip08.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip09.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip10.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip11.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip12.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip13.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip14.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip15.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip16.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip17.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip18.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip19.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip20.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip21.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip22.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip23.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip24.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip25.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip26.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip27.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip28.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip29.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip30.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip31.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip32.json", + TEST_DATA_DIRECTORY "/json_testsuite/sample.json", + TEST_DATA_DIRECTORY "/json_tests/pass1.json", + TEST_DATA_DIRECTORY "/json_tests/pass2.json", + TEST_DATA_DIRECTORY "/json_tests/pass3.json" }) { CAPTURE(filename) diff --git a/tests/src/unit-bson.cpp b/tests/src/unit-bson.cpp index 5759b6e1d..5cc2b7968 100644 --- a/tests/src/unit-bson.cpp +++ b/tests/src/unit-bson.cpp @@ -74,7 +74,7 @@ TEST_CASE("BSON") SECTION("array") { - json const j = std::vector{1, 2, 3, 4, 5, 6, 7}; + json const j = std::vector{ 1, 2, 3, 4, 5, 6, 7 }; CHECK_THROWS_WITH_AS(json::to_bson(j), "[json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is array", json::type_error&); @@ -83,7 +83,7 @@ TEST_CASE("BSON") SECTION("keys containing code-point U+0000 cannot be serialized to BSON") { - json const j = {{std::string("en\0try", 6), true}}; + json const j = { { std::string("en\0try", 6), true } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(json::to_bson(j), "[json.exception.out_of_range.409] (/en) BSON key cannot contain code point U+0000 (at byte 2)", @@ -96,7 +96,7 @@ TEST_CASE("BSON") SECTION("string length must be at least 1") { // from https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11175 - std::vector const v = {0x20, 0x20, 0x20, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80}; + std::vector const v = { 0x20, 0x20, 0x20, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80 }; json _; CHECK_THROWS_WITH_AS( _ = json::from_bson(v), @@ -128,20 +128,13 @@ TEST_CASE("BSON") SECTION("non-empty object with bool") { - json const j = {{"entry", true}}; + json const j = { { "entry", true } }; std::vector const expected = { - 0x0D, - 0x00, - 0x00, + 0x0D, 0x00, 0x00, 0x00, // size (little endian) 0x08, // entry: boolean - 'e', - 'n', - 't', - 'r', - 'y', - '\x00', + 'e', 'n', 't', 'r', 'y', '\x00', 0x01, // value = true 0x00 // end marker }; @@ -156,20 +149,13 @@ TEST_CASE("BSON") SECTION("non-empty object with bool") { - json const j = {{"entry", false}}; + json const j = { { "entry", false } }; std::vector const expected = { - 0x0D, - 0x00, - 0x00, + 0x0D, 0x00, 0x00, 0x00, // size (little endian) 0x08, // entry: boolean - 'e', - 'n', - 't', - 'r', - 'y', - '\x00', + 'e', 'n', 't', 'r', 'y', '\x00', 0x00, // value = false 0x00 // end marker }; @@ -184,7 +170,7 @@ TEST_CASE("BSON") SECTION("non-empty object with double") { - json const j = {{"entry", 4.2}}; + json const j = { { "entry", 4.2 } }; std::vector const expected = { 0x14, 0x00, 0x00, @@ -204,7 +190,7 @@ TEST_CASE("BSON") SECTION("non-empty object with string") { - json const j = {{"entry", "bsonstr"}}; + json const j = { { "entry", "bsonstr" } }; std::vector const expected = { 0x18, 0x00, 0x00, @@ -224,20 +210,13 @@ TEST_CASE("BSON") SECTION("non-empty object with null member") { - json const j = {{"entry", nullptr}}; + json const j = { { "entry", nullptr } }; std::vector const expected = { - 0x0C, - 0x00, - 0x00, + 0x0C, 0x00, 0x00, 0x00, // size (little endian) 0x0A, /// entry: null - 'e', - 'n', - 't', - 'r', - 'y', - '\x00', + 'e', 'n', 't', 'r', 'y', '\x00', 0x00 // end marker }; @@ -251,24 +230,13 @@ TEST_CASE("BSON") SECTION("non-empty object with integer (32-bit) member") { - json const j = {{"entry", std::int32_t{0x12345678}}}; + json const j = { { "entry", std::int32_t{ 0x12345678 } } }; std::vector const expected = { - 0x10, - 0x00, - 0x00, + 0x10, 0x00, 0x00, 0x00, // size (little endian) 0x10, /// entry: int32 - 'e', - 'n', - 't', - 'r', - 'y', - '\x00', - 0x78, - 0x56, - 0x34, - 0x12, + 'e', 'n', 't', 'r', 'y', '\x00', 0x78, 0x56, 0x34, 0x12, 0x00 // end marker }; @@ -282,7 +250,7 @@ TEST_CASE("BSON") SECTION("non-empty object with integer (64-bit) member") { - json const j = {{"entry", std::int64_t{0x1234567804030201}}}; + json const j = { { "entry", std::int64_t{ 0x1234567804030201 } } }; std::vector const expected = { 0x14, 0x00, 0x00, @@ -302,24 +270,13 @@ TEST_CASE("BSON") SECTION("non-empty object with negative integer (32-bit) member") { - json const j = {{"entry", std::int32_t{-1}}}; + json const j = { { "entry", std::int32_t{ -1 } } }; std::vector const expected = { - 0x10, - 0x00, - 0x00, + 0x10, 0x00, 0x00, 0x00, // size (little endian) 0x10, /// entry: int32 - 'e', - 'n', - 't', - 'r', - 'y', - '\x00', - 0xFF, - 0xFF, - 0xFF, - 0xFF, + 'e', 'n', 't', 'r', 'y', '\x00', 0xFF, 0xFF, 0xFF, 0xFF, 0x00 // end marker }; @@ -333,24 +290,13 @@ TEST_CASE("BSON") SECTION("non-empty object with negative integer (64-bit) member") { - json const j = {{"entry", std::int64_t{-1}}}; + json const j = { { "entry", std::int64_t{ -1 } } }; std::vector const expected = { - 0x10, - 0x00, - 0x00, + 0x10, 0x00, 0x00, 0x00, // size (little endian) 0x10, /// entry: int32 - 'e', - 'n', - 't', - 'r', - 'y', - '\x00', - 0xFF, - 0xFF, - 0xFF, - 0xFF, + 'e', 'n', 't', 'r', 'y', '\x00', 0xFF, 0xFF, 0xFF, 0xFF, 0x00 // end marker }; @@ -365,7 +311,7 @@ TEST_CASE("BSON") SECTION("non-empty object with unsigned integer (64-bit) member") { // directly encoding uint64 is not supported in bson (only for timestamp values) - json const j = {{"entry", std::uint64_t{0x1234567804030201}}}; + json const j = { { "entry", std::uint64_t{ 0x1234567804030201 } } }; std::vector const expected = { 0x14, 0x00, 0x00, @@ -385,24 +331,13 @@ TEST_CASE("BSON") SECTION("non-empty object with small unsigned integer member") { - json const j = {{"entry", std::uint64_t{0x42}}}; + json const j = { { "entry", std::uint64_t{ 0x42 } } }; std::vector const expected = { - 0x10, - 0x00, - 0x00, + 0x10, 0x00, 0x00, 0x00, // size (little endian) 0x10, /// entry: int32 - 'e', - 'n', - 't', - 'r', - 'y', - '\x00', - 0x42, - 0x00, - 0x00, - 0x00, + 'e', 'n', 't', 'r', 'y', '\x00', 0x42, 0x00, 0x00, 0x00, 0x00 // end marker }; @@ -416,7 +351,7 @@ TEST_CASE("BSON") SECTION("non-empty object with object member") { - json const j = {{"entry", json::object()}}; + json const j = { { "entry", json::object() } }; std::vector const expected = { 0x11, @@ -451,7 +386,7 @@ TEST_CASE("BSON") SECTION("non-empty object with array member") { - json const j = {{"entry", json::array()}}; + json const j = { { "entry", json::array() } }; std::vector const expected = { 0x11, @@ -486,7 +421,7 @@ TEST_CASE("BSON") SECTION("non-empty object with non-empty array member") { - json const j = {{"entry", json::array({1, 2, 3, 4, 5, 6, 7, 8})}}; + json const j = { { "entry", json::array({ 1, 2, 3, 4, 5, 6, 7, 8 }) } }; std::vector const expected = { 0x49, 0x00, 0x00, @@ -516,7 +451,7 @@ TEST_CASE("BSON") { const size_t N = 10; const auto s = std::vector(N, 'x'); - json const j = {{"entry", json::binary(s, 0)}}; + json const j = { { "entry", json::binary(s, 0) } }; std::vector const expected = { 0x1B, 0x00, 0x00, @@ -543,8 +478,8 @@ TEST_CASE("BSON") SECTION("non-empty object with binary member with subtype") { // an MD5 hash - const std::vector md5hash = {0xd7, 0x7e, 0x27, 0x54, 0xbe, 0x12, 0x37, 0xfe, 0xd6, 0x0c, 0x33, 0x98, 0x30, 0x3b, 0x8d, 0xc4}; - json const j = {{"entry", json::binary(md5hash, 5)}}; + const std::vector md5hash = { 0xd7, 0x7e, 0x27, 0x54, 0xbe, 0x12, 0x37, 0xfe, 0xd6, 0x0c, 0x33, 0x98, 0x30, 0x3b, 0x8d, 0xc4 }; + json const j = { { "entry", json::binary(md5hash, 5) } }; std::vector const expected = { 0x21, 0x00, 0x00, @@ -571,87 +506,87 @@ TEST_CASE("BSON") SECTION("Some more complex document") { // directly encoding uint64 is not supported in bson (only for timestamp values) - json const j = {{"double", 42.5}, {"entry", 4.2}, {"number", 12345}, {"object", {{"string", "value"}}}}; + json const j = { { "double", 42.5 }, { "entry", 4.2 }, { "number", 12345 }, { "object", { { "string", "value" } } } }; - std::vector const expected = {/*size */ 0x4f, - 0x00, - 0x00, - 0x00, - /*entry*/ 0x01, - 'd', - 'o', - 'u', - 'b', - 'l', - 'e', - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x40, - 0x45, - 0x40, - /*entry*/ 0x01, - 'e', - 'n', - 't', - 'r', - 'y', - 0x00, - 0xcd, - 0xcc, - 0xcc, - 0xcc, - 0xcc, - 0xcc, - 0x10, - 0x40, - /*entry*/ 0x10, - 'n', - 'u', - 'm', - 'b', - 'e', - 'r', - 0x00, - 0x39, - 0x30, - 0x00, - 0x00, - /*entry*/ 0x03, - 'o', - 'b', - 'j', - 'e', - 'c', - 't', - 0x00, - /*entry: obj-size */ 0x17, - 0x00, - 0x00, - 0x00, - /*entry: obj-entry*/ 0x02, - 's', - 't', - 'r', - 'i', - 'n', - 'g', - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 'v', - 'a', - 'l', - 'u', - 'e', - 0, - /*entry: obj-term.*/ 0x00, - /*obj-term*/ 0x00}; + std::vector const expected = { /*size */ 0x4f, + 0x00, + 0x00, + 0x00, + /*entry*/ 0x01, + 'd', + 'o', + 'u', + 'b', + 'l', + 'e', + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x40, + 0x45, + 0x40, + /*entry*/ 0x01, + 'e', + 'n', + 't', + 'r', + 'y', + 0x00, + 0xcd, + 0xcc, + 0xcc, + 0xcc, + 0xcc, + 0xcc, + 0x10, + 0x40, + /*entry*/ 0x10, + 'n', + 'u', + 'm', + 'b', + 'e', + 'r', + 0x00, + 0x39, + 0x30, + 0x00, + 0x00, + /*entry*/ 0x03, + 'o', + 'b', + 'j', + 'e', + 'c', + 't', + 0x00, + /*entry: obj-size */ 0x17, + 0x00, + 0x00, + 0x00, + /*entry: obj-entry*/ 0x02, + 's', + 't', + 'r', + 'i', + 'n', + 'g', + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 'v', + 'a', + 'l', + 'u', + 'e', + 0, + /*entry: obj-term.*/ 0x00, + /*obj-term*/ 0x00 }; const auto result = json::to_bson(j); CHECK(result == expected); @@ -666,10 +601,10 @@ TEST_CASE("BSON") { SECTION("Example 1") { - std::vector input = {0x16, 0x00, 0x00, 0x00, 0x02, 'h', 'e', 'l', 'l', 'o', 0x00, - 0x06, 0x00, 0x00, 0x00, 'w', 'o', 'r', 'l', 'd', 0x00, 0x00}; + std::vector input = { 0x16, 0x00, 0x00, 0x00, 0x02, 'h', 'e', 'l', 'l', 'o', 0x00, + 0x06, 0x00, 0x00, 0x00, 'w', 'o', 'r', 'l', 'd', 0x00, 0x00 }; json parsed = json::from_bson(input); - json expected = {{"hello", "world"}}; + json expected = { { "hello", "world" } }; CHECK(parsed == expected); auto dumped = json::to_bson(parsed); CHECK(dumped == input); @@ -678,11 +613,11 @@ TEST_CASE("BSON") SECTION("Example 2") { - std::vector input = {0x31, 0x00, 0x00, 0x00, 0x04, 'B', 'S', 'O', 'N', 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x30, 0x00, - 0x08, 0x00, 0x00, 0x00, 'a', 'w', 'e', 's', 'o', 'm', 'e', 0x00, 0x01, 0x31, 0x00, 0x33, 0x33, - 0x33, 0x33, 0x33, 0x33, 0x14, 0x40, 0x10, 0x32, 0x00, 0xc2, 0x07, 0x00, 0x00, 0x00, 0x00}; + std::vector input = { 0x31, 0x00, 0x00, 0x00, 0x04, 'B', 'S', 'O', 'N', 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x30, 0x00, + 0x08, 0x00, 0x00, 0x00, 'a', 'w', 'e', 's', 'o', 'm', 'e', 0x00, 0x01, 0x31, 0x00, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0x14, 0x40, 0x10, 0x32, 0x00, 0xc2, 0x07, 0x00, 0x00, 0x00, 0x00 }; json parsed = json::from_bson(input); - json expected = {{"BSON", {"awesome", 5.05, 1986}}}; + json expected = { { "BSON", { "awesome", 5.05, 1986 } } }; CHECK(parsed == expected); auto dumped = json::to_bson(parsed); CHECK(dumped == input); @@ -693,87 +628,87 @@ TEST_CASE("BSON") TEST_CASE("BSON input/output_adapters") { - json json_representation = {{"double", 42.5}, {"entry", 4.2}, {"number", 12345}, {"object", {{"string", "value"}}}}; + json json_representation = { { "double", 42.5 }, { "entry", 4.2 }, { "number", 12345 }, { "object", { { "string", "value" } } } }; - std::vector const bson_representation = {/*size */ 0x4f, - 0x00, - 0x00, - 0x00, - /*entry*/ 0x01, - 'd', - 'o', - 'u', - 'b', - 'l', - 'e', - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x40, - 0x45, - 0x40, - /*entry*/ 0x01, - 'e', - 'n', - 't', - 'r', - 'y', - 0x00, - 0xcd, - 0xcc, - 0xcc, - 0xcc, - 0xcc, - 0xcc, - 0x10, - 0x40, - /*entry*/ 0x10, - 'n', - 'u', - 'm', - 'b', - 'e', - 'r', - 0x00, - 0x39, - 0x30, - 0x00, - 0x00, - /*entry*/ 0x03, - 'o', - 'b', - 'j', - 'e', - 'c', - 't', - 0x00, - /*entry: obj-size */ 0x17, - 0x00, - 0x00, - 0x00, - /*entry: obj-entry*/ 0x02, - 's', - 't', - 'r', - 'i', - 'n', - 'g', - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 'v', - 'a', - 'l', - 'u', - 'e', - 0, - /*entry: obj-term.*/ 0x00, - /*obj-term*/ 0x00}; + std::vector const bson_representation = { /*size */ 0x4f, + 0x00, + 0x00, + 0x00, + /*entry*/ 0x01, + 'd', + 'o', + 'u', + 'b', + 'l', + 'e', + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x40, + 0x45, + 0x40, + /*entry*/ 0x01, + 'e', + 'n', + 't', + 'r', + 'y', + 0x00, + 0xcd, + 0xcc, + 0xcc, + 0xcc, + 0xcc, + 0xcc, + 0x10, + 0x40, + /*entry*/ 0x10, + 'n', + 'u', + 'm', + 'b', + 'e', + 'r', + 0x00, + 0x39, + 0x30, + 0x00, + 0x00, + /*entry*/ 0x03, + 'o', + 'b', + 'j', + 'e', + 'c', + 't', + 0x00, + /*entry: obj-size */ 0x17, + 0x00, + 0x00, + 0x00, + /*entry: obj-entry*/ 0x02, + 's', + 't', + 'r', + 'i', + 'n', + 'g', + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 'v', + 'a', + 'l', + 'u', + 'e', + 0, + /*entry: obj-term.*/ 0x00, + /*obj-term*/ 0x00 }; json j2; CHECK_NOTHROW(j2 = json::from_bson(bson_representation)); @@ -895,13 +830,10 @@ TEST_CASE("Incomplete BSON Input") SECTION("Incomplete BSON Input 1") { std::vector const incomplete_bson = { - 0x0D, - 0x00, - 0x00, + 0x0D, 0x00, 0x00, 0x00, // size (little endian) 0x08, // entry: boolean - 'e', - 'n', + 'e', 'n', 't' // unexpected EOF }; @@ -919,9 +851,7 @@ TEST_CASE("Incomplete BSON Input") SECTION("Incomplete BSON Input 2") { std::vector const incomplete_bson = { - 0x0D, - 0x00, - 0x00, + 0x0D, 0x00, 0x00, 0x00, // size (little endian) 0x08, // entry: boolean, unexpected EOF }; @@ -982,7 +912,7 @@ TEST_CASE("Incomplete BSON Input") { SECTION("key") { - json const j = {{"key", "value"}}; + json const j = { { "key", "value" } }; auto bson_vec = json::to_bson(j); SaxCountdown scp(2); CHECK(!json::sax_parse(bson_vec, &scp, json::input_format_t::bson)); @@ -990,7 +920,7 @@ TEST_CASE("Incomplete BSON Input") SECTION("array") { - json const j = {{"entry", json::array()}}; + json const j = { { "entry", json::array() } }; auto bson_vec = json::to_bson(j); SaxCountdown scp(2); CHECK(!json::sax_parse(bson_vec, &scp, json::input_format_t::bson)); @@ -1024,17 +954,10 @@ TEST_CASE("Negative size of binary value") TEST_CASE("Unsupported BSON input") { std::vector const bson = { - 0x0C, - 0x00, - 0x00, + 0x0C, 0x00, 0x00, 0x00, // size (little endian) 0xFF, // entry type: Min key (not supported yet) - 'e', - 'n', - 't', - 'r', - 'y', - '\x00', + 'e', 'n', 't', 'r', 'y', '\x00', 0x00 // end marker }; @@ -1074,7 +997,7 @@ TEST_CASE("BSON numerical data") { CAPTURE(i) - json const j = {{"entry", i}}; + json const j = { { "entry", i } }; CHECK(j.at("entry").is_number_integer()); std::uint64_t const iu = *reinterpret_cast(&i); @@ -1114,37 +1037,37 @@ TEST_CASE("BSON numerical data") SECTION("signed std::int32_t: INT32_MIN .. INT32_MAX") { - std::vector const numbers{(std::numeric_limits::min)(), - -2147483647L, - -1000000000L, - -100000000L, - -10000000L, - -1000000L, - -100000L, - -10000L, - -1000L, - -100L, - -10L, - -1L, - 0L, - 1L, - 10L, - 100L, - 1000L, - 10000L, - 100000L, - 1000000L, - 10000000L, - 100000000L, - 1000000000L, - 2147483646L, - (std::numeric_limits::max)()}; + std::vector const numbers{ (std::numeric_limits::min)(), + -2147483647L, + -1000000000L, + -100000000L, + -10000000L, + -1000000L, + -100000L, + -10000L, + -1000L, + -100L, + -10L, + -1L, + 0L, + 1L, + 10L, + 100L, + 1000L, + 10000L, + 100000L, + 1000000L, + 10000000L, + 100000000L, + 1000000000L, + 2147483646L, + (std::numeric_limits::max)() }; for (const auto i : numbers) { CAPTURE(i) - json const j = {{"entry", i}}; + json const j = { { "entry", i } }; CHECK(j.at("entry").is_number_integer()); std::uint32_t const iu = *reinterpret_cast(&i); @@ -1198,7 +1121,7 @@ TEST_CASE("BSON numerical data") { CAPTURE(i) - json const j = {{"entry", i}}; + json const j = { { "entry", i } }; CHECK(j.at("entry").is_number_integer()); std::uint64_t const iu = *reinterpret_cast(&i); @@ -1241,25 +1164,25 @@ TEST_CASE("BSON numerical data") { SECTION("unsigned std::uint64_t: 0 .. INT32_MAX") { - std::vector const numbers{0ULL, - 1ULL, - 10ULL, - 100ULL, - 1000ULL, - 10000ULL, - 100000ULL, - 1000000ULL, - 10000000ULL, - 100000000ULL, - 1000000000ULL, - 2147483646ULL, - static_cast((std::numeric_limits::max)())}; + std::vector const numbers{ 0ULL, + 1ULL, + 10ULL, + 100ULL, + 1000ULL, + 10000ULL, + 100000ULL, + 1000000ULL, + 10000000ULL, + 100000000ULL, + 1000000000ULL, + 2147483646ULL, + static_cast((std::numeric_limits::max)()) }; for (const auto i : numbers) { CAPTURE(i) - json const j = {{"entry", i}}; + json const j = { { "entry", i } }; auto iu = i; std::vector const expected_bson = { @@ -1315,7 +1238,7 @@ TEST_CASE("BSON numerical data") { CAPTURE(i) - json const j = {{"entry", i}}; + json const j = { { "entry", i } }; auto iu = i; std::vector const expected_bson = { @@ -1367,7 +1290,7 @@ TEST_CASE("BSON numerical data") { CAPTURE(i) - json const j = {{"entry", i}}; + json const j = { { "entry", i } }; auto iu = i; std::vector const expected_bson = { @@ -1413,11 +1336,11 @@ TEST_CASE("BSON roundtrips" * doctest::skip()) { SECTION("reference files") { - for (const std::string filename : {TEST_DATA_DIRECTORY "/json.org/1.json", - TEST_DATA_DIRECTORY "/json.org/2.json", - TEST_DATA_DIRECTORY "/json.org/3.json", - TEST_DATA_DIRECTORY "/json.org/4.json", - TEST_DATA_DIRECTORY "/json.org/5.json"}) + for (const std::string filename : { TEST_DATA_DIRECTORY "/json.org/1.json", + TEST_DATA_DIRECTORY "/json.org/2.json", + TEST_DATA_DIRECTORY "/json.org/3.json", + TEST_DATA_DIRECTORY "/json.org/4.json", + TEST_DATA_DIRECTORY "/json.org/5.json" }) { CAPTURE(filename) @@ -1460,7 +1383,7 @@ TEST_CASE("BSON roundtrips" * doctest::skip()) // parse BSON file auto packed = utils::read_binary_file(filename + ".bson"); json j2; - CHECK_NOTHROW(j2 = json::from_bson({packed.data(), packed.size()})); + CHECK_NOTHROW(j2 = json::from_bson({ packed.data(), packed.size() })); // compare parsed JSON values CHECK(j1 == j2); diff --git a/tests/src/unit-byte_container_with_subtype.cpp b/tests/src/unit-byte_container_with_subtype.cpp index 4116076b0..afe66e487 100644 --- a/tests/src/unit-byte_container_with_subtype.cpp +++ b/tests/src/unit-byte_container_with_subtype.cpp @@ -45,7 +45,7 @@ TEST_CASE("byte_container_with_subtype") SECTION("comparisons") { - std::vector const bytes = {{0xCA, 0xFE, 0xBA, 0xBE}}; + std::vector const bytes = { { 0xCA, 0xFE, 0xBA, 0xBE } }; nlohmann::byte_container_with_subtype> container1; nlohmann::byte_container_with_subtype> container2({}, 42); nlohmann::byte_container_with_subtype> container3(bytes); diff --git a/tests/src/unit-capacity.cpp b/tests/src/unit-capacity.cpp index 2a0b5ab92..8f5a7b908 100644 --- a/tests/src/unit-capacity.cpp +++ b/tests/src/unit-capacity.cpp @@ -74,8 +74,8 @@ TEST_CASE("capacity") SECTION("filled array") { - json j = {1, 2, 3}; // NOLINT(misc-const-correctness) - const json j_const = {1, 2, 3}; + json j = { 1, 2, 3 }; // NOLINT(misc-const-correctness) + const json j_const = { 1, 2, 3 }; SECTION("result of empty") { @@ -113,8 +113,8 @@ TEST_CASE("capacity") SECTION("filled object") { - json j = {{"one", 1}, {"two", 2}, {"three", 3}}; // NOLINT(misc-const-correctness) - const json j_const = {{"one", 1}, {"two", 2}, {"three", 3}}; + json j = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; // NOLINT(misc-const-correctness) + const json j_const = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; SECTION("result of empty") { @@ -269,8 +269,8 @@ TEST_CASE("capacity") SECTION("filled array") { - json j = {1, 2, 3}; // NOLINT(misc-const-correctness) - const json j_const = {1, 2, 3}; + json j = { 1, 2, 3 }; // NOLINT(misc-const-correctness) + const json j_const = { 1, 2, 3 }; SECTION("result of size") { @@ -312,8 +312,8 @@ TEST_CASE("capacity") SECTION("filled object") { - json j = {{"one", 1}, {"two", 2}, {"three", 3}}; // NOLINT(misc-const-correctness) - const json j_const = {{"one", 1}, {"two", 2}, {"three", 3}}; + json j = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; // NOLINT(misc-const-correctness) + const json j_const = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; SECTION("result of size") { @@ -454,8 +454,8 @@ TEST_CASE("capacity") SECTION("filled array") { - json j = {1, 2, 3}; // NOLINT(misc-const-correctness) - const json j_const = {1, 2, 3}; + json j = { 1, 2, 3 }; // NOLINT(misc-const-correctness) + const json j_const = { 1, 2, 3 }; SECTION("result of max_size") { @@ -481,8 +481,8 @@ TEST_CASE("capacity") SECTION("filled object") { - json j = {{"one", 1}, {"two", 2}, {"three", 3}}; // NOLINT(misc-const-correctness) - const json j_const = {{"one", 1}, {"two", 2}, {"three", 3}}; + json j = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; // NOLINT(misc-const-correctness) + const json j_const = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; SECTION("result of max_size") { diff --git a/tests/src/unit-cbor.cpp b/tests/src/unit-cbor.cpp index b6b01d3c3..8de1aa537 100644 --- a/tests/src/unit-cbor.cpp +++ b/tests/src/unit-cbor.cpp @@ -117,7 +117,7 @@ TEST_CASE("CBOR") { // NaN value json const j = std::numeric_limits::quiet_NaN(); - const std::vector expected = {0xf9, 0x7e, 0x00}; + const std::vector expected = { 0xf9, 0x7e, 0x00 }; const auto result = json::to_cbor(j); CHECK(result == expected); } @@ -126,7 +126,7 @@ TEST_CASE("CBOR") { // Infinity value json const j = std::numeric_limits::infinity(); - const std::vector expected = {0xf9, 0x7c, 0x00}; + const std::vector expected = { 0xf9, 0x7c, 0x00 }; const auto result = json::to_cbor(j); CHECK(result == expected); } @@ -134,7 +134,7 @@ TEST_CASE("CBOR") SECTION("null") { const json j = nullptr; - const std::vector expected = {0xf6}; + const std::vector expected = { 0xf6 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -148,7 +148,7 @@ TEST_CASE("CBOR") SECTION("true") { const json j = true; - const std::vector expected = {0xf5}; + const std::vector expected = { 0xf5 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -160,7 +160,7 @@ TEST_CASE("CBOR") SECTION("false") { const json j = false; - const std::vector expected = {0xf4}; + const std::vector expected = { 0xf4 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -236,13 +236,7 @@ TEST_CASE("CBOR") SECTION("-4294967296..-65537") { const std::vector numbers{ - -65537, - -100000, - -1000000, - -10000000, - -100000000, - -1000000000, - -4294967296, + -65537, -100000, -1000000, -10000000, -100000000, -1000000000, -4294967296, }; for (const auto i : numbers) { @@ -322,7 +316,7 @@ TEST_CASE("CBOR") SECTION("-9263 (int 16)") { const json j = -9263; - std::vector expected = {0x39, 0x24, 0x2e}; + std::vector expected = { 0x39, 0x24, 0x2e }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -503,7 +497,7 @@ TEST_CASE("CBOR") SECTION("65536..4294967295") { - for (const uint32_t i : {65536u, 77777u, 1048576u}) + for (const uint32_t i : { 65536u, 77777u, 1048576u }) { CAPTURE(i) @@ -542,7 +536,7 @@ TEST_CASE("CBOR") SECTION("4294967296..4611686018427387903") { - for (const uint64_t i : {4294967296ul, 4611686018427387903ul}) + for (const uint64_t i : { 4294967296ul, 4611686018427387903ul }) { CAPTURE(i) @@ -724,7 +718,7 @@ TEST_CASE("CBOR") SECTION("65536..4294967295 (four-byte uint32_t)") { - for (const uint32_t i : {65536u, 77777u, 1048576u}) + for (const uint32_t i : { 65536u, 77777u, 1048576u }) { CAPTURE(i) @@ -762,7 +756,7 @@ TEST_CASE("CBOR") SECTION("4294967296..4611686018427387903 (eight-byte uint64_t)") { - for (const uint64_t i : {4294967296ul, 4611686018427387903ul}) + for (const uint64_t i : { 4294967296ul, 4611686018427387903ul }) { CAPTURE(i) @@ -811,7 +805,7 @@ TEST_CASE("CBOR") { double v = 3.1415925; const json j = v; - std::vector expected = {0xfb, 0x40, 0x09, 0x21, 0xfb, 0x3f, 0xa6, 0xde, 0xfc}; + std::vector expected = { 0xfb, 0x40, 0x09, 0x21, 0xfb, 0x3f, 0xa6, 0xde, 0xfc }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -832,7 +826,7 @@ TEST_CASE("CBOR") // its double-precision float binary value is // {0xfb, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // but to save memory, we can store it as single-precision float. - const std::vector expected = {0xfa, 0x3f, 0x00, 0x00, 0x00}; + const std::vector expected = { 0xfa, 0x3f, 0x00, 0x00, 0x00 }; const auto result = json::to_cbor(j); CHECK(result == expected); // roundtrip @@ -845,7 +839,7 @@ TEST_CASE("CBOR") const json j = v; // its double-precision binary value is: // {0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} - const std::vector expected = {0xfa, 0x00, 0x00, 0x00, 0x00}; + const std::vector expected = { 0xfa, 0x00, 0x00, 0x00, 0x00 }; const auto result = json::to_cbor(j); CHECK(result == expected); // roundtrip @@ -858,7 +852,7 @@ TEST_CASE("CBOR") const json j = v; // its double-precision binary value is: // {0xfb, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} - const std::vector expected = {0xfa, 0x80, 0x00, 0x00, 0x00}; + const std::vector expected = { 0xfa, 0x80, 0x00, 0x00, 0x00 }; const auto result = json::to_cbor(j); CHECK(result == expected); // roundtrip @@ -871,7 +865,7 @@ TEST_CASE("CBOR") const json j = v; // its double-precision binary value is: // {0xfb, 0x40, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} - const std::vector expected = {0xfa, 0x42, 0xc8, 0x00, 0x00}; + const std::vector expected = { 0xfa, 0x42, 0xc8, 0x00, 0x00 }; const auto result = json::to_cbor(j); CHECK(result == expected); // roundtrip @@ -884,7 +878,7 @@ TEST_CASE("CBOR") const json j = v; // its double-precision binary value is: // {0xfb, 0x40, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} - const std::vector expected = {0xfa, 0x43, 0x48, 0x00, 0x00}; + const std::vector expected = { 0xfa, 0x43, 0x48, 0x00, 0x00 }; const auto result = json::to_cbor(j); CHECK(result == expected); // roundtrip @@ -895,7 +889,7 @@ TEST_CASE("CBOR") { float v = (std::numeric_limits::max)(); const json j = v; - const std::vector expected = {0xfa, 0x7f, 0x7f, 0xff, 0xff}; + const std::vector expected = { 0xfa, 0x7f, 0x7f, 0xff, 0xff }; const auto result = json::to_cbor(j); CHECK(result == expected); // roundtrip @@ -906,7 +900,7 @@ TEST_CASE("CBOR") { auto v = static_cast(std::numeric_limits::lowest()); const json j = v; - const std::vector expected = {0xfa, 0xff, 0x7f, 0xff, 0xff}; + const std::vector expected = { 0xfa, 0xff, 0x7f, 0xff, 0xff }; const auto result = json::to_cbor(j); CHECK(result == expected); // roundtrip @@ -917,7 +911,7 @@ TEST_CASE("CBOR") { double v = static_cast((std::numeric_limits::max)()) + 0.1e+34; const json j = v; - const std::vector expected = {0xfb, 0x47, 0xf0, 0x00, 0x03, 0x04, 0xdc, 0x64, 0x49}; + const std::vector expected = { 0xfb, 0x47, 0xf0, 0x00, 0x03, 0x04, 0xdc, 0x64, 0x49 }; // double const auto result = json::to_cbor(j); CHECK(result == expected); @@ -929,7 +923,7 @@ TEST_CASE("CBOR") { double v = static_cast(std::numeric_limits::lowest()) - 1.0; const json j = v; - const std::vector expected = {0xfa, 0xff, 0x7f, 0xff, 0xff}; + const std::vector expected = { 0xfa, 0xff, 0x7f, 0xff, 0xff }; // the same with lowest float const auto result = json::to_cbor(j); CHECK(result == expected); @@ -947,19 +941,19 @@ TEST_CASE("CBOR") { json _; CHECK_THROWS_WITH_AS( - _ = json::from_cbor(std::vector({0xf9})), + _ = json::from_cbor(std::vector({ 0xf9 })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK(json::from_cbor(std::vector({0xf9}), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0xf9 }), true, false).is_discarded()); } SECTION("only one byte follows") { json _; CHECK_THROWS_WITH_AS( - _ = json::from_cbor(std::vector({0xf9, 0x7c})), + _ = json::from_cbor(std::vector({ 0xf9, 0x7c })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK(json::from_cbor(std::vector({0xf9, 0x7c}), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0xf9, 0x7c }), true, false).is_discarded()); } } @@ -967,22 +961,22 @@ TEST_CASE("CBOR") { SECTION("0 (0 00000 0000000000)") { - json const j = json::from_cbor(std::vector({0xf9, 0x00, 0x00})); - json::number_float_t d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0x00, 0x00 })); + json::number_float_t d{ j }; CHECK(d == 0.0); } SECTION("-0 (1 00000 0000000000)") { - json const j = json::from_cbor(std::vector({0xf9, 0x80, 0x00})); - json::number_float_t d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0x80, 0x00 })); + json::number_float_t d{ j }; CHECK(d == -0.0); } SECTION("2**-24 (0 00000 0000000001)") { - json const j = json::from_cbor(std::vector({0xf9, 0x00, 0x01})); - json::number_float_t d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0x00, 0x01 })); + json::number_float_t d{ j }; CHECK(d == std::pow(2.0, -24.0)); } } @@ -991,16 +985,16 @@ TEST_CASE("CBOR") { SECTION("infinity (0 11111 0000000000)") { - json const j = json::from_cbor(std::vector({0xf9, 0x7c, 0x00})); - json::number_float_t d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0x7c, 0x00 })); + json::number_float_t d{ j }; CHECK(d == std::numeric_limits::infinity()); CHECK(j.dump() == "null"); } SECTION("-infinity (1 11111 0000000000)") { - json const j = json::from_cbor(std::vector({0xf9, 0xfc, 0x00})); - json::number_float_t d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0xfc, 0x00 })); + json::number_float_t d{ j }; CHECK(d == -std::numeric_limits::infinity()); CHECK(j.dump() == "null"); } @@ -1010,38 +1004,38 @@ TEST_CASE("CBOR") { SECTION("1 (0 01111 0000000000)") { - json const j = json::from_cbor(std::vector({0xf9, 0x3c, 0x00})); - json::number_float_t d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0x3c, 0x00 })); + json::number_float_t d{ j }; CHECK(d == 1); } SECTION("-2 (1 10000 0000000000)") { - json const j = json::from_cbor(std::vector({0xf9, 0xc0, 0x00})); - json::number_float_t d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0xc0, 0x00 })); + json::number_float_t d{ j }; CHECK(d == -2); } SECTION("65504 (0 11110 1111111111)") { - json const j = json::from_cbor(std::vector({0xf9, 0x7b, 0xff})); - json::number_float_t d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0x7b, 0xff })); + json::number_float_t d{ j }; CHECK(d == 65504); } } SECTION("infinity") { - json const j = json::from_cbor(std::vector({0xf9, 0x7c, 0x00})); - json::number_float_t const d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0x7c, 0x00 })); + json::number_float_t const d{ j }; CHECK(!std::isfinite(d)); CHECK(j.dump() == "null"); } SECTION("NaN") { - json const j = json::from_cbor(std::vector({0xf9, 0x7e, 0x00})); - json::number_float_t const d{j}; + json const j = json::from_cbor(std::vector({ 0xf9, 0x7e, 0x00 })); + json::number_float_t const d{ j }; CHECK(std::isnan(d)); CHECK(j.dump() == "null"); } @@ -1119,7 +1113,7 @@ TEST_CASE("CBOR") SECTION("N = 256..65535") { - for (const size_t N : {256u, 999u, 1025u, 3333u, 2048u, 65535u}) + for (const size_t N : { 256u, 999u, 1025u, 3333u, 2048u, 65535u }) { CAPTURE(N) @@ -1149,7 +1143,7 @@ TEST_CASE("CBOR") SECTION("N = 65536..4294967295") { - for (const size_t N : {65536u, 77777u, 1048576u}) + for (const size_t N : { 65536u, 77777u, 1048576u }) { CAPTURE(N) @@ -1185,7 +1179,7 @@ TEST_CASE("CBOR") SECTION("empty") { const json j = json::array(); - std::vector expected = {0x80}; + std::vector expected = { 0x80 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -1196,8 +1190,8 @@ TEST_CASE("CBOR") SECTION("[null]") { - const json j = {nullptr}; - const std::vector expected = {0x81, 0xf6}; + const json j = { nullptr }; + const std::vector expected = { 0x81, 0xf6 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -1209,7 +1203,7 @@ TEST_CASE("CBOR") SECTION("[1,2,3,4,5]") { const json j = json::parse("[1,2,3,4,5]"); - const std::vector expected = {0x85, 0x01, 0x02, 0x03, 0x04, 0x05}; + const std::vector expected = { 0x85, 0x01, 0x02, 0x03, 0x04, 0x05 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -1221,7 +1215,7 @@ TEST_CASE("CBOR") SECTION("[[[[]]]]") { const json j = json::parse("[[[[]]]]"); - const std::vector expected = {0x81, 0x81, 0x81, 0x80}; + const std::vector expected = { 0x81, 0x81, 0x81, 0x80 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -1268,7 +1262,7 @@ TEST_CASE("CBOR") SECTION("empty") { const json j = json::object(); - const std::vector expected = {0xa0}; + const std::vector expected = { 0xa0 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -1279,8 +1273,8 @@ TEST_CASE("CBOR") SECTION("{\"\":null}") { - const json j = {{"", nullptr}}; - const std::vector expected = {0xa1, 0x60, 0xf6}; + const json j = { { "", nullptr } }; + const std::vector expected = { 0xa1, 0x60, 0xf6 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -1292,7 +1286,7 @@ TEST_CASE("CBOR") SECTION("{\"a\": {\"b\": {\"c\": {}}}}") { const json j = json::parse(R"({"a": {"b": {"c": {}}}})"); - const std::vector expected = {0xa1, 0x61, 0x61, 0xa1, 0x61, 0x62, 0xa1, 0x61, 0x63, 0xa0}; + const std::vector expected = { 0xa1, 0x61, 0x61, 0xa1, 0x61, 0x62, 0xa1, 0x61, 0x63, 0xa0 }; const auto result = json::to_cbor(j); CHECK(result == expected); @@ -1459,7 +1453,7 @@ TEST_CASE("CBOR") SECTION("N = 256..65535") { - for (const size_t N : {256u, 999u, 1025u, 3333u, 2048u, 65535u}) + for (const size_t N : { 256u, 999u, 1025u, 3333u, 2048u, 65535u }) { CAPTURE(N) @@ -1489,7 +1483,7 @@ TEST_CASE("CBOR") SECTION("N = 65536..4294967295") { - for (const size_t N : {65536u, 77777u, 1048576u}) + for (const size_t N : { 65536u, 77777u, 1048576u }) { CAPTURE(N) @@ -1521,10 +1515,10 @@ TEST_CASE("CBOR") SECTION("indefinite size") { - std::vector const input = {0x5F, 0x44, 0xaa, 0xbb, 0xcc, 0xdd, 0x43, 0xee, 0xff, 0x99, 0xFF}; + std::vector const input = { 0x5F, 0x44, 0xaa, 0xbb, 0xcc, 0xdd, 0x43, 0xee, 0xff, 0x99, 0xFF }; auto j = json::from_cbor(input); CHECK(j.is_binary()); - auto k = json::binary({0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x99}); + auto k = json::binary({ 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x99 }); CAPTURE(j.dump(0, ' ', false, json::error_handler_t::strict)) CHECK(j == k); } @@ -1532,7 +1526,7 @@ TEST_CASE("CBOR") SECTION("binary in array") { // array with three empty byte strings - std::vector const input = {0x83, 0x40, 0x40, 0x40}; + std::vector const input = { 0x83, 0x40, 0x40, 0x40 }; json _; CHECK_NOTHROW(_ = json::from_cbor(input)); } @@ -1540,7 +1534,7 @@ TEST_CASE("CBOR") SECTION("binary in object") { // object mapping "foo" to empty byte string - std::vector const input = {0xA1, 0x63, 0x66, 0x6F, 0x6F, 0x40}; + std::vector const input = { 0xA1, 0x63, 0x66, 0x6F, 0x6F, 0x40 }; json _; CHECK_NOTHROW(_ = json::from_cbor(input)); } @@ -1548,7 +1542,7 @@ TEST_CASE("CBOR") SECTION("SAX callback with binary") { // object mapping "foo" to byte string - std::vector const input = {0xA1, 0x63, 0x66, 0x6F, 0x6F, 0x41, 0x00}; + std::vector const input = { 0xA1, 0x63, 0x66, 0x6F, 0x6F, 0x41, 0x00 }; // callback to set binary_seen to true if a binary value was seen bool binary_seen = false; @@ -1573,28 +1567,28 @@ TEST_CASE("CBOR") { SECTION("0x5b (byte array)") { - std::vector const given = {0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x61}; + std::vector const given = { 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x61 }; const json j = json::from_cbor(given); - CHECK(j == json::binary(std::vector{'a'})); + CHECK(j == json::binary(std::vector{ 'a' })); } SECTION("0x7b (string)") { - std::vector const given = {0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x61}; + std::vector const given = { 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x61 }; const json j = json::from_cbor(given); CHECK(j == "a"); } SECTION("0x9b (array)") { - std::vector const given = {0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4}; + std::vector const given = { 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4 }; const json j = json::from_cbor(given); CHECK(j == json::parse("[false]")); } SECTION("0xbb (map)") { - std::vector const given = {0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x60, 0xf4}; + std::vector const given = { 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x60, 0xf4 }; const json j = json::from_cbor(given); CHECK(j == json::parse("{\"\": false}")); } @@ -1614,116 +1608,116 @@ TEST_CASE("CBOR") SECTION("too short byte vector") { json _; - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x18})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x18 })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x19})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x19 })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x19, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x19, 0x00 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1a})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1a })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1a, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1a, 0x00 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1a, 0x00, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1a, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1a, 0x00, 0x00, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1a, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1b})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1b })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1b, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1b, 0x00 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1b, 0x00, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1b, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 6: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0x00, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 7: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 8: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 9: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x62})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x62 })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR string: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x62, 0x60})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x62, 0x60 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR string: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x7F})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x7F })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR string: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x7F, 0x60})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x7F, 0x60 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR string: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x82, 0x01})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x82, 0x01 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR value: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x9F, 0x01})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x9F, 0x01 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR value: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0xBF, 0x61, 0x61, 0xF5})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0xBF, 0x61, 0x61, 0xF5 })), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing CBOR string: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0xA1, 0x61, 0X61})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0xA1, 0x61, 0X61 })), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing CBOR value: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0xBF, 0x61, 0X61})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0xBF, 0x61, 0X61 })), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing CBOR value: unexpected end of input", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x5F})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x5F })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR binary: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_cbor(std::vector({0x5F, 0x00})), + _ = json::from_cbor(std::vector({ 0x5F, 0x00 })), "[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing CBOR binary: expected length specification (0x40-0x5B) or indefinite binary array type (0x5F); last byte: 0x00", json::parse_error&); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x41})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x41 })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR binary: unexpected end of input", json::parse_error&); - CHECK(json::from_cbor(std::vector({0x18}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x19}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x19, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1a}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1a, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1a, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1a, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1b}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1b, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1b, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x62}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x62, 0x60}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x7F}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x7F, 0x60}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x82, 0x01}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x9F, 0x01}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0xBF, 0x61, 0x61, 0xF5}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0xA1, 0x61, 0x61}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0xBF, 0x61, 0x61}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x5F}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x5F, 0x00}), true, false).is_discarded()); - CHECK(json::from_cbor(std::vector({0x41}), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x18 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x19 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x19, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1a }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1a, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1a, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1a, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1b }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1b, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1b, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x62 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x62, 0x60 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x7F }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x7F, 0x60 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x82, 0x01 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x9F, 0x01 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0xBF, 0x61, 0x61, 0xF5 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0xA1, 0x61, 0x61 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0xBF, 0x61, 0x61 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x5F }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x5F, 0x00 }), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x41 }), true, false).is_discarded()); } SECTION("unsupported bytes") @@ -1731,114 +1725,114 @@ TEST_CASE("CBOR") SECTION("concrete examples") { json _; - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0x1c})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0x1c })), "[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0x1C", json::parse_error&); - CHECK(json::from_cbor(std::vector({0x1c}), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0x1c }), true, false).is_discarded()); - CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({0xf8})), + CHECK_THROWS_WITH_AS(_ = json::from_cbor(std::vector({ 0xf8 })), "[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0xF8", json::parse_error&); - CHECK(json::from_cbor(std::vector({0xf8}), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0xf8 }), true, false).is_discarded()); } SECTION("all unsupported bytes") { - for (const auto byte : {// ? - 0x1c, - 0x1d, - 0x1e, - 0x1f, - // ? - 0x3c, - 0x3d, - 0x3e, - 0x3f, - // ? - 0x5c, - 0x5d, - 0x5e, - // ? - 0x7c, - 0x7d, - 0x7e, - // ? - 0x9c, - 0x9d, - 0x9e, - // ? - 0xbc, - 0xbd, - 0xbe, - // date/time - 0xc0, - 0xc1, - // bignum - 0xc2, - 0xc3, - // fraction - 0xc4, - // bigfloat - 0xc5, - // tagged item - 0xc6, - 0xc7, - 0xc8, - 0xc9, - 0xca, - 0xcb, - 0xcc, - 0xcd, - 0xce, - 0xcf, - 0xd0, - 0xd1, - 0xd2, - 0xd3, - 0xd4, - // expected conversion - 0xd5, - 0xd6, - 0xd7, - // more tagged items - 0xd8, - 0xd9, - 0xda, - 0xdb, - // ? - 0xdc, - 0xdd, - 0xde, - 0xdf, - // (simple value) - 0xe0, - 0xe1, - 0xe2, - 0xe3, - 0xe4, - 0xe5, - 0xe6, - 0xe7, - 0xe8, - 0xe9, - 0xea, - 0xeb, - 0xec, - 0xed, - 0xee, - 0xef, - 0xf0, - 0xf1, - 0xf2, - 0xf3, - // undefined - 0xf7, - // simple value - 0xf8}) + for (const auto byte : { // ? + 0x1c, + 0x1d, + 0x1e, + 0x1f, + // ? + 0x3c, + 0x3d, + 0x3e, + 0x3f, + // ? + 0x5c, + 0x5d, + 0x5e, + // ? + 0x7c, + 0x7d, + 0x7e, + // ? + 0x9c, + 0x9d, + 0x9e, + // ? + 0xbc, + 0xbd, + 0xbe, + // date/time + 0xc0, + 0xc1, + // bignum + 0xc2, + 0xc3, + // fraction + 0xc4, + // bigfloat + 0xc5, + // tagged item + 0xc6, + 0xc7, + 0xc8, + 0xc9, + 0xca, + 0xcb, + 0xcc, + 0xcd, + 0xce, + 0xcf, + 0xd0, + 0xd1, + 0xd2, + 0xd3, + 0xd4, + // expected conversion + 0xd5, + 0xd6, + 0xd7, + // more tagged items + 0xd8, + 0xd9, + 0xda, + 0xdb, + // ? + 0xdc, + 0xdd, + 0xde, + 0xdf, + // (simple value) + 0xe0, + 0xe1, + 0xe2, + 0xe3, + 0xe4, + 0xe5, + 0xe6, + 0xe7, + 0xe8, + 0xe9, + 0xea, + 0xeb, + 0xec, + 0xed, + 0xee, + 0xef, + 0xf0, + 0xf1, + 0xf2, + 0xf3, + // undefined + 0xf7, + // simple value + 0xf8 }) { json _; - CHECK_THROWS_AS(_ = json::from_cbor(std::vector({static_cast(byte)})), json::parse_error&); - CHECK(json::from_cbor(std::vector({static_cast(byte)}), true, false).is_discarded()); + CHECK_THROWS_AS(_ = json::from_cbor(std::vector({ static_cast(byte) })), json::parse_error&); + CHECK(json::from_cbor(std::vector({ static_cast(byte) }), true, false).is_discarded()); } } } @@ -1847,15 +1841,15 @@ TEST_CASE("CBOR") { json _; CHECK_THROWS_WITH_AS( - _ = json::from_cbor(std::vector({0xa1, 0xff, 0x01})), + _ = json::from_cbor(std::vector({ 0xa1, 0xff, 0x01 })), "[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing CBOR string: expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0xFF", json::parse_error&); - CHECK(json::from_cbor(std::vector({0xa1, 0xff, 0x01}), true, false).is_discarded()); + CHECK(json::from_cbor(std::vector({ 0xa1, 0xff, 0x01 }), true, false).is_discarded()); } SECTION("strict mode") { - std::vector const vec = {0xf6, 0xf6}; + std::vector const vec = { 0xf6, 0xf6 }; SECTION("non-strict mode") { const auto result = json::from_cbor(vec, false); @@ -1879,21 +1873,21 @@ TEST_CASE("CBOR") { SECTION("start_array(len)") { - std::vector const v = {0x83, 0x01, 0x02, 0x03}; + std::vector const v = { 0x83, 0x01, 0x02, 0x03 }; SaxCountdown scp(0); CHECK(!json::sax_parse(v, &scp, json::input_format_t::cbor)); } SECTION("start_object(len)") { - std::vector const v = {0xA1, 0x63, 0x66, 0x6F, 0x6F, 0xF4}; + std::vector const v = { 0xA1, 0x63, 0x66, 0x6F, 0x6F, 0xF4 }; SaxCountdown scp(0); CHECK(!json::sax_parse(v, &scp, json::input_format_t::cbor)); } SECTION("key()") { - std::vector const v = {0xA1, 0x63, 0x66, 0x6F, 0x6F, 0xF4}; + std::vector const v = { 0xA1, 0x63, 0x66, 0x6F, 0x6F, 0xF4 }; SaxCountdown scp(1); CHECK(!json::sax_parse(v, &scp, json::input_format_t::cbor)); } @@ -1955,13 +1949,13 @@ TEST_CASE("CBOR regressions") detected. */ for (const std::string filename : - {TEST_DATA_DIRECTORY "/cbor_regression/test01", TEST_DATA_DIRECTORY "/cbor_regression/test02", TEST_DATA_DIRECTORY "/cbor_regression/test03", - TEST_DATA_DIRECTORY "/cbor_regression/test04", TEST_DATA_DIRECTORY "/cbor_regression/test05", TEST_DATA_DIRECTORY "/cbor_regression/test06", - TEST_DATA_DIRECTORY "/cbor_regression/test07", TEST_DATA_DIRECTORY "/cbor_regression/test08", TEST_DATA_DIRECTORY "/cbor_regression/test09", - TEST_DATA_DIRECTORY "/cbor_regression/test10", TEST_DATA_DIRECTORY "/cbor_regression/test11", TEST_DATA_DIRECTORY "/cbor_regression/test12", - TEST_DATA_DIRECTORY "/cbor_regression/test13", TEST_DATA_DIRECTORY "/cbor_regression/test14", TEST_DATA_DIRECTORY "/cbor_regression/test15", - TEST_DATA_DIRECTORY "/cbor_regression/test16", TEST_DATA_DIRECTORY "/cbor_regression/test17", TEST_DATA_DIRECTORY "/cbor_regression/test18", - TEST_DATA_DIRECTORY "/cbor_regression/test19", TEST_DATA_DIRECTORY "/cbor_regression/test20", TEST_DATA_DIRECTORY "/cbor_regression/test21"}) + { TEST_DATA_DIRECTORY "/cbor_regression/test01", TEST_DATA_DIRECTORY "/cbor_regression/test02", TEST_DATA_DIRECTORY "/cbor_regression/test03", + TEST_DATA_DIRECTORY "/cbor_regression/test04", TEST_DATA_DIRECTORY "/cbor_regression/test05", TEST_DATA_DIRECTORY "/cbor_regression/test06", + TEST_DATA_DIRECTORY "/cbor_regression/test07", TEST_DATA_DIRECTORY "/cbor_regression/test08", TEST_DATA_DIRECTORY "/cbor_regression/test09", + TEST_DATA_DIRECTORY "/cbor_regression/test10", TEST_DATA_DIRECTORY "/cbor_regression/test11", TEST_DATA_DIRECTORY "/cbor_regression/test12", + TEST_DATA_DIRECTORY "/cbor_regression/test13", TEST_DATA_DIRECTORY "/cbor_regression/test14", TEST_DATA_DIRECTORY "/cbor_regression/test15", + TEST_DATA_DIRECTORY "/cbor_regression/test16", TEST_DATA_DIRECTORY "/cbor_regression/test17", TEST_DATA_DIRECTORY "/cbor_regression/test18", + TEST_DATA_DIRECTORY "/cbor_regression/test19", TEST_DATA_DIRECTORY "/cbor_regression/test20", TEST_DATA_DIRECTORY "/cbor_regression/test21" }) { CAPTURE(filename) @@ -2015,151 +2009,152 @@ TEST_CASE("CBOR roundtrips" * doctest::skip()) exclude_packed.insert(TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key.json"); exclude_packed.insert(TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_long_strings.json"); - for (const std::string filename : {TEST_DATA_DIRECTORY "/json_nlohmann_tests/all_unicode.json", - TEST_DATA_DIRECTORY "/json.org/1.json", - TEST_DATA_DIRECTORY "/json.org/2.json", - TEST_DATA_DIRECTORY "/json.org/3.json", - TEST_DATA_DIRECTORY "/json.org/4.json", - TEST_DATA_DIRECTORY "/json.org/5.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip01.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip02.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip03.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip04.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip05.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip06.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip07.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip08.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip09.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip10.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip11.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip12.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip13.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip14.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip15.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip16.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip17.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip18.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip19.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip20.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip21.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip22.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip23.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip24.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip25.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip26.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip27.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip28.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip29.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip30.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip31.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip32.json", - TEST_DATA_DIRECTORY "/json_testsuite/sample.json", // kills AppVeyor - TEST_DATA_DIRECTORY "/json_tests/pass1.json", - TEST_DATA_DIRECTORY "/json_tests/pass2.json", - TEST_DATA_DIRECTORY "/json_tests/pass3.json", - TEST_DATA_DIRECTORY "/regression/floats.json", - TEST_DATA_DIRECTORY "/regression/signed_ints.json", - TEST_DATA_DIRECTORY "/regression/unsigned_ints.json", - TEST_DATA_DIRECTORY "/regression/working_file.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty-string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_heterogeneous.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_leading_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_several_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e+1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_after_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_huge_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_int_with_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_minus_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_one.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_underflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_real.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_basic.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_long_strings.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_simple.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_string_unicode.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_with_newlines.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_comments.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_a.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_n.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_null_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_pi.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_simple_ascii.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_uEscape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json", - // TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf16.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_with_del_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_true.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_string_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_true_in_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json"}) + for (const std::string filename : + { TEST_DATA_DIRECTORY "/json_nlohmann_tests/all_unicode.json", + TEST_DATA_DIRECTORY "/json.org/1.json", + TEST_DATA_DIRECTORY "/json.org/2.json", + TEST_DATA_DIRECTORY "/json.org/3.json", + TEST_DATA_DIRECTORY "/json.org/4.json", + TEST_DATA_DIRECTORY "/json.org/5.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip01.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip02.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip03.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip04.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip05.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip06.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip07.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip08.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip09.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip10.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip11.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip12.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip13.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip14.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip15.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip16.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip17.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip18.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip19.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip20.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip21.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip22.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip23.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip24.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip25.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip26.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip27.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip28.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip29.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip30.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip31.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip32.json", + TEST_DATA_DIRECTORY "/json_testsuite/sample.json", // kills AppVeyor + TEST_DATA_DIRECTORY "/json_tests/pass1.json", + TEST_DATA_DIRECTORY "/json_tests/pass2.json", + TEST_DATA_DIRECTORY "/json_tests/pass3.json", + TEST_DATA_DIRECTORY "/regression/floats.json", + TEST_DATA_DIRECTORY "/regression/signed_ints.json", + TEST_DATA_DIRECTORY "/regression/unsigned_ints.json", + TEST_DATA_DIRECTORY "/regression/working_file.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty-string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_heterogeneous.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_leading_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_several_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e+1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_after_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_huge_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_int_with_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_minus_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_one.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_underflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_real.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_basic.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_long_strings.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_simple.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_string_unicode.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_with_newlines.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_comments.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_a.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_n.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_null_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_pi.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_simple_ascii.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_uEscape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json", + // TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf16.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_with_del_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_true.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_string_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_true_in_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json" }) { CAPTURE(filename) @@ -2202,7 +2197,7 @@ TEST_CASE("CBOR roundtrips" * doctest::skip()) // parse CBOR file const auto packed = utils::read_binary_file(filename + ".cbor"); json j2; - CHECK_NOTHROW(j2 = json::from_cbor({packed.data(), packed.size()})); + CHECK_NOTHROW(j2 = json::from_cbor({ packed.data(), packed.size() })); // compare parsed JSON values CHECK(j1 == j2); @@ -2235,100 +2230,101 @@ TEST_CASE("CBOR roundtrips" * doctest::skip()) TEST_CASE("all CBOR first bytes") { // these bytes will fail immediately with exception parse_error.112 - std::set unsupported = {//// types not supported by this library + std::set unsupported = { //// types not supported by this library - // date/time - 0xc0, - 0xc1, - // bignum - 0xc2, - 0xc3, - // decimal fracion - 0xc4, - // bigfloat - 0xc5, - // tagged item - 0xc6, - 0xc7, - 0xc8, - 0xc9, - 0xca, - 0xcb, - 0xcc, - 0xcd, - 0xce, - 0xcf, - 0xd0, - 0xd1, - 0xd2, - 0xd3, - 0xd4, - 0xd8, - 0xd9, - 0xda, - 0xdb, - // expected conversion - 0xd5, - 0xd6, - 0xd7, - // simple value - 0xe0, - 0xe1, - 0xe2, - 0xe3, - 0xe4, - 0xe5, - 0xe6, - 0xe7, - 0xe8, - 0xe9, - 0xea, - 0xeb, - 0xec, - 0xed, - 0xef, - 0xf0, - 0xf1, - 0xf2, - 0xf3, - 0xf8, - // undefined - 0xf7, + // date/time + 0xc0, + 0xc1, + // bignum + 0xc2, + 0xc3, + // decimal fracion + 0xc4, + // bigfloat + 0xc5, + // tagged item + 0xc6, + 0xc7, + 0xc8, + 0xc9, + 0xca, + 0xcb, + 0xcc, + 0xcd, + 0xce, + 0xcf, + 0xd0, + 0xd1, + 0xd2, + 0xd3, + 0xd4, + 0xd8, + 0xd9, + 0xda, + 0xdb, + // expected conversion + 0xd5, + 0xd6, + 0xd7, + // simple value + 0xe0, + 0xe1, + 0xe2, + 0xe3, + 0xe4, + 0xe5, + 0xe6, + 0xe7, + 0xe8, + 0xe9, + 0xea, + 0xeb, + 0xec, + 0xed, + 0xef, + 0xf0, + 0xf1, + 0xf2, + 0xf3, + 0xf8, + // undefined + 0xf7, - //// bytes not specified by CBOR + //// bytes not specified by CBOR - 0x1c, - 0x1d, - 0x1e, - 0x1f, - 0x3c, - 0x3d, - 0x3e, - 0x3f, - 0x5c, - 0x5d, - 0x5e, - 0x7c, - 0x7d, - 0x7e, - 0x9c, - 0x9d, - 0x9e, - 0xbc, - 0xbd, - 0xbe, - 0xdc, - 0xdd, - 0xde, - 0xdf, - 0xee, - 0xfc, - 0xfe, - 0xfd, + 0x1c, + 0x1d, + 0x1e, + 0x1f, + 0x3c, + 0x3d, + 0x3e, + 0x3f, + 0x5c, + 0x5d, + 0x5e, + 0x7c, + 0x7d, + 0x7e, + 0x9c, + 0x9d, + 0x9e, + 0xbc, + 0xbd, + 0xbe, + 0xdc, + 0xdd, + 0xde, + 0xdf, + 0xee, + 0xfc, + 0xfe, + 0xfd, - /// break cannot be the first byte + /// break cannot be the first byte - 0xff}; + 0xff + }; for (auto i = 0; i < 256; ++i) { @@ -2360,38 +2356,38 @@ TEST_CASE("examples from RFC 7049 Appendix A") { SECTION("numbers") { - CHECK(json::to_cbor(json::parse("0")) == std::vector({0x00})); - CHECK(json::parse("0") == json::from_cbor(std::vector({0x00}))); + CHECK(json::to_cbor(json::parse("0")) == std::vector({ 0x00 })); + CHECK(json::parse("0") == json::from_cbor(std::vector({ 0x00 }))); - CHECK(json::to_cbor(json::parse("1")) == std::vector({0x01})); - CHECK(json::parse("1") == json::from_cbor(std::vector({0x01}))); + CHECK(json::to_cbor(json::parse("1")) == std::vector({ 0x01 })); + CHECK(json::parse("1") == json::from_cbor(std::vector({ 0x01 }))); - CHECK(json::to_cbor(json::parse("10")) == std::vector({0x0a})); - CHECK(json::parse("10") == json::from_cbor(std::vector({0x0a}))); + CHECK(json::to_cbor(json::parse("10")) == std::vector({ 0x0a })); + CHECK(json::parse("10") == json::from_cbor(std::vector({ 0x0a }))); - CHECK(json::to_cbor(json::parse("23")) == std::vector({0x17})); - CHECK(json::parse("23") == json::from_cbor(std::vector({0x17}))); + CHECK(json::to_cbor(json::parse("23")) == std::vector({ 0x17 })); + CHECK(json::parse("23") == json::from_cbor(std::vector({ 0x17 }))); - CHECK(json::to_cbor(json::parse("24")) == std::vector({0x18, 0x18})); - CHECK(json::parse("24") == json::from_cbor(std::vector({0x18, 0x18}))); + CHECK(json::to_cbor(json::parse("24")) == std::vector({ 0x18, 0x18 })); + CHECK(json::parse("24") == json::from_cbor(std::vector({ 0x18, 0x18 }))); - CHECK(json::to_cbor(json::parse("25")) == std::vector({0x18, 0x19})); - CHECK(json::parse("25") == json::from_cbor(std::vector({0x18, 0x19}))); + CHECK(json::to_cbor(json::parse("25")) == std::vector({ 0x18, 0x19 })); + CHECK(json::parse("25") == json::from_cbor(std::vector({ 0x18, 0x19 }))); - CHECK(json::to_cbor(json::parse("100")) == std::vector({0x18, 0x64})); - CHECK(json::parse("100") == json::from_cbor(std::vector({0x18, 0x64}))); + CHECK(json::to_cbor(json::parse("100")) == std::vector({ 0x18, 0x64 })); + CHECK(json::parse("100") == json::from_cbor(std::vector({ 0x18, 0x64 }))); - CHECK(json::to_cbor(json::parse("1000")) == std::vector({0x19, 0x03, 0xe8})); - CHECK(json::parse("1000") == json::from_cbor(std::vector({0x19, 0x03, 0xe8}))); + CHECK(json::to_cbor(json::parse("1000")) == std::vector({ 0x19, 0x03, 0xe8 })); + CHECK(json::parse("1000") == json::from_cbor(std::vector({ 0x19, 0x03, 0xe8 }))); - CHECK(json::to_cbor(json::parse("1000000")) == std::vector({0x1a, 0x00, 0x0f, 0x42, 0x40})); - CHECK(json::parse("1000000") == json::from_cbor(std::vector({0x1a, 0x00, 0x0f, 0x42, 0x40}))); + CHECK(json::to_cbor(json::parse("1000000")) == std::vector({ 0x1a, 0x00, 0x0f, 0x42, 0x40 })); + CHECK(json::parse("1000000") == json::from_cbor(std::vector({ 0x1a, 0x00, 0x0f, 0x42, 0x40 }))); - CHECK(json::to_cbor(json::parse("1000000000000")) == std::vector({0x1b, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00})); - CHECK(json::parse("1000000000000") == json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00}))); + CHECK(json::to_cbor(json::parse("1000000000000")) == std::vector({ 0x1b, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00 })); + CHECK(json::parse("1000000000000") == json::from_cbor(std::vector({ 0x1b, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00 }))); - CHECK(json::to_cbor(json::parse("18446744073709551615")) == std::vector({0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff})); - CHECK(json::parse("18446744073709551615") == json::from_cbor(std::vector({0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}))); + CHECK(json::to_cbor(json::parse("18446744073709551615")) == std::vector({ 0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff })); + CHECK(json::parse("18446744073709551615") == json::from_cbor(std::vector({ 0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }))); // positive bignum is not supported //CHECK(json::to_cbor(json::parse("18446744073709551616")) == std::vector({0xc2, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); @@ -2404,101 +2400,101 @@ TEST_CASE("examples from RFC 7049 Appendix A") //CHECK(json::to_cbor(json::parse("-18446744073709551617")) == std::vector({0xc3, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); //CHECK(json::parse("-18446744073709551617") == json::from_cbor(std::vector({0xc3, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}))); - CHECK(json::to_cbor(json::parse("-1")) == std::vector({0x20})); - CHECK(json::parse("-1") == json::from_cbor(std::vector({0x20}))); + CHECK(json::to_cbor(json::parse("-1")) == std::vector({ 0x20 })); + CHECK(json::parse("-1") == json::from_cbor(std::vector({ 0x20 }))); - CHECK(json::to_cbor(json::parse("-10")) == std::vector({0x29})); - CHECK(json::parse("-10") == json::from_cbor(std::vector({0x29}))); + CHECK(json::to_cbor(json::parse("-10")) == std::vector({ 0x29 })); + CHECK(json::parse("-10") == json::from_cbor(std::vector({ 0x29 }))); - CHECK(json::to_cbor(json::parse("-100")) == std::vector({0x38, 0x63})); - CHECK(json::parse("-100") == json::from_cbor(std::vector({0x38, 0x63}))); + CHECK(json::to_cbor(json::parse("-100")) == std::vector({ 0x38, 0x63 })); + CHECK(json::parse("-100") == json::from_cbor(std::vector({ 0x38, 0x63 }))); - CHECK(json::to_cbor(json::parse("-1000")) == std::vector({0x39, 0x03, 0xe7})); - CHECK(json::parse("-1000") == json::from_cbor(std::vector({0x39, 0x03, 0xe7}))); + CHECK(json::to_cbor(json::parse("-1000")) == std::vector({ 0x39, 0x03, 0xe7 })); + CHECK(json::parse("-1000") == json::from_cbor(std::vector({ 0x39, 0x03, 0xe7 }))); // half-precision float //CHECK(json::to_cbor(json::parse("0.0")) == std::vector({0xf9, 0x00, 0x00})); - CHECK(json::parse("0.0") == json::from_cbor(std::vector({0xf9, 0x00, 0x00}))); + CHECK(json::parse("0.0") == json::from_cbor(std::vector({ 0xf9, 0x00, 0x00 }))); // half-precision float //CHECK(json::to_cbor(json::parse("-0.0")) == std::vector({0xf9, 0x80, 0x00})); - CHECK(json::parse("-0.0") == json::from_cbor(std::vector({0xf9, 0x80, 0x00}))); + CHECK(json::parse("-0.0") == json::from_cbor(std::vector({ 0xf9, 0x80, 0x00 }))); // half-precision float //CHECK(json::to_cbor(json::parse("1.0")) == std::vector({0xf9, 0x3c, 0x00})); - CHECK(json::parse("1.0") == json::from_cbor(std::vector({0xf9, 0x3c, 0x00}))); + CHECK(json::parse("1.0") == json::from_cbor(std::vector({ 0xf9, 0x3c, 0x00 }))); - CHECK(json::to_cbor(json::parse("1.1")) == std::vector({0xfb, 0x3f, 0xf1, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a})); - CHECK(json::parse("1.1") == json::from_cbor(std::vector({0xfb, 0x3f, 0xf1, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a}))); + CHECK(json::to_cbor(json::parse("1.1")) == std::vector({ 0xfb, 0x3f, 0xf1, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a })); + CHECK(json::parse("1.1") == json::from_cbor(std::vector({ 0xfb, 0x3f, 0xf1, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a }))); // half-precision float //CHECK(json::to_cbor(json::parse("1.5")) == std::vector({0xf9, 0x3e, 0x00})); - CHECK(json::parse("1.5") == json::from_cbor(std::vector({0xf9, 0x3e, 0x00}))); + CHECK(json::parse("1.5") == json::from_cbor(std::vector({ 0xf9, 0x3e, 0x00 }))); // half-precision float //CHECK(json::to_cbor(json::parse("65504.0")) == std::vector({0xf9, 0x7b, 0xff})); - CHECK(json::parse("65504.0") == json::from_cbor(std::vector({0xf9, 0x7b, 0xff}))); + CHECK(json::parse("65504.0") == json::from_cbor(std::vector({ 0xf9, 0x7b, 0xff }))); //CHECK(json::to_cbor(json::parse("100000.0")) == std::vector({0xfa, 0x47, 0xc3, 0x50, 0x00})); - CHECK(json::parse("100000.0") == json::from_cbor(std::vector({0xfa, 0x47, 0xc3, 0x50, 0x00}))); + CHECK(json::parse("100000.0") == json::from_cbor(std::vector({ 0xfa, 0x47, 0xc3, 0x50, 0x00 }))); //CHECK(json::to_cbor(json::parse("3.4028234663852886e+38")) == std::vector({0xfa, 0x7f, 0x7f, 0xff, 0xff})); - CHECK(json::parse("3.4028234663852886e+38") == json::from_cbor(std::vector({0xfa, 0x7f, 0x7f, 0xff, 0xff}))); + CHECK(json::parse("3.4028234663852886e+38") == json::from_cbor(std::vector({ 0xfa, 0x7f, 0x7f, 0xff, 0xff }))); - CHECK(json::to_cbor(json::parse("1.0e+300")) == std::vector({0xfb, 0x7e, 0x37, 0xe4, 0x3c, 0x88, 0x00, 0x75, 0x9c})); - CHECK(json::parse("1.0e+300") == json::from_cbor(std::vector({0xfb, 0x7e, 0x37, 0xe4, 0x3c, 0x88, 0x00, 0x75, 0x9c}))); + CHECK(json::to_cbor(json::parse("1.0e+300")) == std::vector({ 0xfb, 0x7e, 0x37, 0xe4, 0x3c, 0x88, 0x00, 0x75, 0x9c })); + CHECK(json::parse("1.0e+300") == json::from_cbor(std::vector({ 0xfb, 0x7e, 0x37, 0xe4, 0x3c, 0x88, 0x00, 0x75, 0x9c }))); // half-precision float //CHECK(json::to_cbor(json::parse("5.960464477539063e-8")) == std::vector({0xf9, 0x00, 0x01})); - CHECK(json::parse("-4.0") == json::from_cbor(std::vector({0xf9, 0xc4, 0x00}))); + CHECK(json::parse("-4.0") == json::from_cbor(std::vector({ 0xf9, 0xc4, 0x00 }))); // half-precision float //CHECK(json::to_cbor(json::parse("0.00006103515625")) == std::vector({0xf9, 0x04, 0x00})); - CHECK(json::parse("-4.0") == json::from_cbor(std::vector({0xf9, 0xc4, 0x00}))); + CHECK(json::parse("-4.0") == json::from_cbor(std::vector({ 0xf9, 0xc4, 0x00 }))); // half-precision float //CHECK(json::to_cbor(json::parse("-4.0")) == std::vector({0xf9, 0xc4, 0x00})); - CHECK(json::parse("-4.0") == json::from_cbor(std::vector({0xf9, 0xc4, 0x00}))); + CHECK(json::parse("-4.0") == json::from_cbor(std::vector({ 0xf9, 0xc4, 0x00 }))); - CHECK(json::to_cbor(json::parse("-4.1")) == std::vector({0xfb, 0xc0, 0x10, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66})); - CHECK(json::parse("-4.1") == json::from_cbor(std::vector({0xfb, 0xc0, 0x10, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}))); + CHECK(json::to_cbor(json::parse("-4.1")) == std::vector({ 0xfb, 0xc0, 0x10, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66 })); + CHECK(json::parse("-4.1") == json::from_cbor(std::vector({ 0xfb, 0xc0, 0x10, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66 }))); } SECTION("simple values") { - CHECK(json::to_cbor(json::parse("false")) == std::vector({0xf4})); - CHECK(json::parse("false") == json::from_cbor(std::vector({0xf4}))); + CHECK(json::to_cbor(json::parse("false")) == std::vector({ 0xf4 })); + CHECK(json::parse("false") == json::from_cbor(std::vector({ 0xf4 }))); - CHECK(json::to_cbor(json::parse("true")) == std::vector({0xf5})); - CHECK(json::parse("true") == json::from_cbor(std::vector({0xf5}))); + CHECK(json::to_cbor(json::parse("true")) == std::vector({ 0xf5 })); + CHECK(json::parse("true") == json::from_cbor(std::vector({ 0xf5 }))); - CHECK(json::to_cbor(json::parse("true")) == std::vector({0xf5})); - CHECK(json::parse("true") == json::from_cbor(std::vector({0xf5}))); + CHECK(json::to_cbor(json::parse("true")) == std::vector({ 0xf5 })); + CHECK(json::parse("true") == json::from_cbor(std::vector({ 0xf5 }))); } SECTION("strings") { - CHECK(json::to_cbor(json::parse("\"\"")) == std::vector({0x60})); - CHECK(json::parse("\"\"") == json::from_cbor(std::vector({0x60}))); + CHECK(json::to_cbor(json::parse("\"\"")) == std::vector({ 0x60 })); + CHECK(json::parse("\"\"") == json::from_cbor(std::vector({ 0x60 }))); - CHECK(json::to_cbor(json::parse("\"a\"")) == std::vector({0x61, 0x61})); - CHECK(json::parse("\"a\"") == json::from_cbor(std::vector({0x61, 0x61}))); + CHECK(json::to_cbor(json::parse("\"a\"")) == std::vector({ 0x61, 0x61 })); + CHECK(json::parse("\"a\"") == json::from_cbor(std::vector({ 0x61, 0x61 }))); - CHECK(json::to_cbor(json::parse("\"IETF\"")) == std::vector({0x64, 0x49, 0x45, 0x54, 0x46})); - CHECK(json::parse("\"IETF\"") == json::from_cbor(std::vector({0x64, 0x49, 0x45, 0x54, 0x46}))); + CHECK(json::to_cbor(json::parse("\"IETF\"")) == std::vector({ 0x64, 0x49, 0x45, 0x54, 0x46 })); + CHECK(json::parse("\"IETF\"") == json::from_cbor(std::vector({ 0x64, 0x49, 0x45, 0x54, 0x46 }))); - CHECK(json::to_cbor(json::parse("\"\\u00fc\"")) == std::vector({0x62, 0xc3, 0xbc})); - CHECK(json::parse("\"\\u00fc\"") == json::from_cbor(std::vector({0x62, 0xc3, 0xbc}))); + CHECK(json::to_cbor(json::parse("\"\\u00fc\"")) == std::vector({ 0x62, 0xc3, 0xbc })); + CHECK(json::parse("\"\\u00fc\"") == json::from_cbor(std::vector({ 0x62, 0xc3, 0xbc }))); - CHECK(json::to_cbor(json::parse("\"\\u6c34\"")) == std::vector({0x63, 0xe6, 0xb0, 0xb4})); - CHECK(json::parse("\"\\u6c34\"") == json::from_cbor(std::vector({0x63, 0xe6, 0xb0, 0xb4}))); + CHECK(json::to_cbor(json::parse("\"\\u6c34\"")) == std::vector({ 0x63, 0xe6, 0xb0, 0xb4 })); + CHECK(json::parse("\"\\u6c34\"") == json::from_cbor(std::vector({ 0x63, 0xe6, 0xb0, 0xb4 }))); - CHECK(json::to_cbor(json::parse("\"\\ud800\\udd51\"")) == std::vector({0x64, 0xf0, 0x90, 0x85, 0x91})); - CHECK(json::parse("\"\\ud800\\udd51\"") == json::from_cbor(std::vector({0x64, 0xf0, 0x90, 0x85, 0x91}))); + CHECK(json::to_cbor(json::parse("\"\\ud800\\udd51\"")) == std::vector({ 0x64, 0xf0, 0x90, 0x85, 0x91 })); + CHECK(json::parse("\"\\ud800\\udd51\"") == json::from_cbor(std::vector({ 0x64, 0xf0, 0x90, 0x85, 0x91 }))); // indefinite length strings CHECK(json::parse("\"streaming\"") == - json::from_cbor(std::vector({0x7f, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x67, 0xff}))); + json::from_cbor(std::vector({ 0x7f, 0x65, 0x73, 0x74, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x67, 0xff }))); } SECTION("byte arrays") @@ -2511,21 +2507,21 @@ TEST_CASE("examples from RFC 7049 Appendix A") CHECK(j == json::binary(expected)); // 0xd8 - CHECK(json::to_cbor(json::binary(std::vector{}, 0x42)) == std::vector{0xd8, 0x42, 0x40}); + CHECK(json::to_cbor(json::binary(std::vector{}, 0x42)) == std::vector{ 0xd8, 0x42, 0x40 }); CHECK(!json::from_cbor(json::to_cbor(json::binary(std::vector{}, 0x42)), true, true, json::cbor_tag_handler_t::ignore) .get_binary() .has_subtype()); CHECK(json::from_cbor(json::to_cbor(json::binary(std::vector{}, 0x42)), true, true, json::cbor_tag_handler_t::store).get_binary().subtype() == 0x42); // 0xd9 - CHECK(json::to_cbor(json::binary(std::vector{}, 1000)) == std::vector{0xd9, 0x03, 0xe8, 0x40}); + CHECK(json::to_cbor(json::binary(std::vector{}, 1000)) == std::vector{ 0xd9, 0x03, 0xe8, 0x40 }); CHECK(!json::from_cbor(json::to_cbor(json::binary(std::vector{}, 1000)), true, true, json::cbor_tag_handler_t::ignore) .get_binary() .has_subtype()); CHECK(json::from_cbor(json::to_cbor(json::binary(std::vector{}, 1000)), true, true, json::cbor_tag_handler_t::store).get_binary().subtype() == 1000); // 0xda - CHECK(json::to_cbor(json::binary(std::vector{}, 394216)) == std::vector{0xda, 0x00, 0x06, 0x03, 0xe8, 0x40}); + CHECK(json::to_cbor(json::binary(std::vector{}, 394216)) == std::vector{ 0xda, 0x00, 0x06, 0x03, 0xe8, 0x40 }); CHECK(!json::from_cbor(json::to_cbor(json::binary(std::vector{}, 394216)), true, true, json::cbor_tag_handler_t::ignore) .get_binary() .has_subtype()); @@ -2534,7 +2530,7 @@ TEST_CASE("examples from RFC 7049 Appendix A") 394216); // 0xdb CHECK(json::to_cbor(json::binary(std::vector{}, 8589934590)) == - std::vector{0xdb, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x40}); + std::vector{ 0xdb, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x40 }); CHECK(!json::from_cbor(json::to_cbor(json::binary(std::vector{}, 8589934590)), true, true, json::cbor_tag_handler_t::ignore) .get_binary() .has_subtype()); @@ -2545,57 +2541,57 @@ TEST_CASE("examples from RFC 7049 Appendix A") SECTION("arrays") { - CHECK(json::to_cbor(json::parse("[]")) == std::vector({0x80})); - CHECK(json::parse("[]") == json::from_cbor(std::vector({0x80}))); + CHECK(json::to_cbor(json::parse("[]")) == std::vector({ 0x80 })); + CHECK(json::parse("[]") == json::from_cbor(std::vector({ 0x80 }))); - CHECK(json::to_cbor(json::parse("[1, 2, 3]")) == std::vector({0x83, 0x01, 0x02, 0x03})); - CHECK(json::parse("[1, 2, 3]") == json::from_cbor(std::vector({0x83, 0x01, 0x02, 0x03}))); + CHECK(json::to_cbor(json::parse("[1, 2, 3]")) == std::vector({ 0x83, 0x01, 0x02, 0x03 })); + CHECK(json::parse("[1, 2, 3]") == json::from_cbor(std::vector({ 0x83, 0x01, 0x02, 0x03 }))); - CHECK(json::to_cbor(json::parse("[1, [2, 3], [4, 5]]")) == std::vector({0x83, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05})); - CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x83, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05}))); + CHECK(json::to_cbor(json::parse("[1, [2, 3], [4, 5]]")) == std::vector({ 0x83, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05 })); + CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({ 0x83, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05 }))); CHECK(json::to_cbor(json::parse("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]")) == - std::vector({0x98, 0x19, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, - 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19})); + std::vector({ 0x98, 0x19, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19 })); CHECK(json::parse("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]") == - json::from_cbor(std::vector({0x98, 0x19, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, - 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19}))); + json::from_cbor(std::vector({ 0x98, 0x19, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, + 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19 }))); // indefinite length arrays - CHECK(json::parse("[]") == json::from_cbor(std::vector({0x9f, 0xff}))); - CHECK(json::parse("[1, [2, 3], [4, 5]] ") == json::from_cbor(std::vector({0x9f, 0x01, 0x82, 0x02, 0x03, 0x9f, 0x04, 0x05, 0xff, 0xff}))); - CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x9f, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05, 0xff}))); - CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x83, 0x01, 0x82, 0x02, 0x03, 0x9f, 0x04, 0x05, 0xff}))); - CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x83, 0x01, 0x9f, 0x02, 0x03, 0xff, 0x82, 0x04, 0x05}))); + CHECK(json::parse("[]") == json::from_cbor(std::vector({ 0x9f, 0xff }))); + CHECK(json::parse("[1, [2, 3], [4, 5]] ") == json::from_cbor(std::vector({ 0x9f, 0x01, 0x82, 0x02, 0x03, 0x9f, 0x04, 0x05, 0xff, 0xff }))); + CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({ 0x9f, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05, 0xff }))); + CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({ 0x83, 0x01, 0x82, 0x02, 0x03, 0x9f, 0x04, 0x05, 0xff }))); + CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({ 0x83, 0x01, 0x9f, 0x02, 0x03, 0xff, 0x82, 0x04, 0x05 }))); CHECK(json::parse("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]") == - json::from_cbor(std::vector({0x9f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, - 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19, 0xff}))); + json::from_cbor(std::vector({ 0x9f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19, 0xff }))); } SECTION("objects") { - CHECK(json::to_cbor(json::parse("{}")) == std::vector({0xa0})); - CHECK(json::parse("{}") == json::from_cbor(std::vector({0xa0}))); + CHECK(json::to_cbor(json::parse("{}")) == std::vector({ 0xa0 })); + CHECK(json::parse("{}") == json::from_cbor(std::vector({ 0xa0 }))); - CHECK(json::to_cbor(json::parse("{\"a\": 1, \"b\": [2, 3]}")) == std::vector({0xa2, 0x61, 0x61, 0x01, 0x61, 0x62, 0x82, 0x02, 0x03})); - CHECK(json::parse("{\"a\": 1, \"b\": [2, 3]}") == json::from_cbor(std::vector({0xa2, 0x61, 0x61, 0x01, 0x61, 0x62, 0x82, 0x02, 0x03}))); + CHECK(json::to_cbor(json::parse("{\"a\": 1, \"b\": [2, 3]}")) == std::vector({ 0xa2, 0x61, 0x61, 0x01, 0x61, 0x62, 0x82, 0x02, 0x03 })); + CHECK(json::parse("{\"a\": 1, \"b\": [2, 3]}") == json::from_cbor(std::vector({ 0xa2, 0x61, 0x61, 0x01, 0x61, 0x62, 0x82, 0x02, 0x03 }))); - CHECK(json::to_cbor(json::parse("[\"a\", {\"b\": \"c\"}]")) == std::vector({0x82, 0x61, 0x61, 0xa1, 0x61, 0x62, 0x61, 0x63})); - CHECK(json::parse("[\"a\", {\"b\": \"c\"}]") == json::from_cbor(std::vector({0x82, 0x61, 0x61, 0xa1, 0x61, 0x62, 0x61, 0x63}))); + CHECK(json::to_cbor(json::parse("[\"a\", {\"b\": \"c\"}]")) == std::vector({ 0x82, 0x61, 0x61, 0xa1, 0x61, 0x62, 0x61, 0x63 })); + CHECK(json::parse("[\"a\", {\"b\": \"c\"}]") == json::from_cbor(std::vector({ 0x82, 0x61, 0x61, 0xa1, 0x61, 0x62, 0x61, 0x63 }))); CHECK(json::to_cbor(json::parse("{\"a\": \"A\", \"b\": \"B\", \"c\": \"C\", \"d\": \"D\", \"e\": \"E\"}")) == std::vector( - {0xa5, 0x61, 0x61, 0x61, 0x41, 0x61, 0x62, 0x61, 0x42, 0x61, 0x63, 0x61, 0x43, 0x61, 0x64, 0x61, 0x44, 0x61, 0x65, 0x61, 0x45})); + { 0xa5, 0x61, 0x61, 0x61, 0x41, 0x61, 0x62, 0x61, 0x42, 0x61, 0x63, 0x61, 0x43, 0x61, 0x64, 0x61, 0x44, 0x61, 0x65, 0x61, 0x45 })); CHECK(json::parse("{\"a\": \"A\", \"b\": \"B\", \"c\": \"C\", \"d\": \"D\", \"e\": \"E\"}") == json::from_cbor(std::vector( - {0xa5, 0x61, 0x61, 0x61, 0x41, 0x61, 0x62, 0x61, 0x42, 0x61, 0x63, 0x61, 0x43, 0x61, 0x64, 0x61, 0x44, 0x61, 0x65, 0x61, 0x45}))); + { 0xa5, 0x61, 0x61, 0x61, 0x41, 0x61, 0x62, 0x61, 0x42, 0x61, 0x63, 0x61, 0x43, 0x61, 0x64, 0x61, 0x44, 0x61, 0x65, 0x61, 0x45 }))); // indefinite length objects CHECK(json::parse("{\"a\": 1, \"b\": [2, 3]}") == - json::from_cbor(std::vector({0xbf, 0x61, 0x61, 0x01, 0x61, 0x62, 0x9f, 0x02, 0x03, 0xff, 0xff}))); - CHECK(json::parse("[\"a\", {\"b\": \"c\"}]") == json::from_cbor(std::vector({0x82, 0x61, 0x61, 0xbf, 0x61, 0x62, 0x61, 0x63, 0xff}))); + json::from_cbor(std::vector({ 0xbf, 0x61, 0x61, 0x01, 0x61, 0x62, 0x9f, 0x02, 0x03, 0xff, 0xff }))); + CHECK(json::parse("[\"a\", {\"b\": \"c\"}]") == json::from_cbor(std::vector({ 0x82, 0x61, 0x61, 0xbf, 0x61, 0x62, 0x61, 0x63, 0xff }))); CHECK(json::parse("{\"Fun\": true, \"Amt\": -2}") == - json::from_cbor(std::vector({0xbf, 0x63, 0x46, 0x75, 0x6e, 0xf5, 0x63, 0x41, 0x6d, 0x74, 0x21, 0xff}))); + json::from_cbor(std::vector({ 0xbf, 0x63, 0x46, 0x75, 0x6e, 0xf5, 0x63, 0x41, 0x6d, 0x74, 0x21, 0xff }))); } } @@ -2606,7 +2602,7 @@ TEST_CASE("Tagged values") SECTION("0xC6..0xD4") { - for (const auto b : std::vector{0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4}) + for (const auto b : std::vector{ 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4 }) { CAPTURE(b); @@ -2786,11 +2782,11 @@ TEST_CASE("Tagged values") { // create a binary value of subtype 42 json j_binary; - j_binary["binary"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42); + j_binary["binary"] = json::binary({ 0xCA, 0xFE, 0xBA, 0xBE }, 42); // convert to CBOR const auto vec = json::to_cbor(j_binary); - CHECK(vec == std::vector{0xA1, 0x66, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79, 0xD8, 0x2A, 0x44, 0xCA, 0xFE, 0xBA, 0xBE}); + CHECK(vec == std::vector{ 0xA1, 0x66, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79, 0xD8, 0x2A, 0x44, 0xCA, 0xFE, 0xBA, 0xBE }); // parse error when parsing tagged value json _; diff --git a/tests/src/unit-class_const_iterator.cpp b/tests/src/unit-class_const_iterator.cpp index d94e5200d..2c7934f2e 100644 --- a/tests/src/unit-class_const_iterator.cpp +++ b/tests/src/unit-class_const_iterator.cpp @@ -141,14 +141,14 @@ TEST_CASE("const_iterator class") SECTION("object") { - json const j({{"foo", "bar"}}); + json const j({ { "foo", "bar" } }); json::const_iterator const it = j.cbegin(); CHECK(*it == json("bar")); } SECTION("array") { - json const j({1, 2, 3, 4}); + json const j({ 1, 2, 3, 4 }); json::const_iterator const it = j.cbegin(); CHECK(*it == json(1)); } @@ -174,14 +174,14 @@ TEST_CASE("const_iterator class") SECTION("object") { - json const j({{"foo", "bar"}}); + json const j({ { "foo", "bar" } }); json::const_iterator const it = j.cbegin(); CHECK(std::string(it->type_name()) == "string"); } SECTION("array") { - json const j({1, 2, 3, 4}); + json const j({ 1, 2, 3, 4 }); json::const_iterator const it = j.cbegin(); CHECK(std::string(it->type_name()) == "number"); } @@ -214,7 +214,7 @@ TEST_CASE("const_iterator class") SECTION("object") { - json const j({{"foo", "bar"}}); + json const j({ { "foo", "bar" } }); json::const_iterator it = j.cbegin(); CHECK((it.m_it.object_iterator == it.m_object->m_data.m_value.object->begin())); it++; @@ -223,7 +223,7 @@ TEST_CASE("const_iterator class") SECTION("array") { - json const j({1, 2, 3, 4}); + json const j({ 1, 2, 3, 4 }); json::const_iterator it = j.cbegin(); CHECK((it.m_it.array_iterator == it.m_object->m_data.m_value.array->begin())); it++; @@ -265,7 +265,7 @@ TEST_CASE("const_iterator class") SECTION("object") { - json const j({{"foo", "bar"}}); + json const j({ { "foo", "bar" } }); json::const_iterator it = j.cbegin(); CHECK((it.m_it.object_iterator == it.m_object->m_data.m_value.object->begin())); ++it; @@ -274,7 +274,7 @@ TEST_CASE("const_iterator class") SECTION("array") { - json const j({1, 2, 3, 4}); + json const j({ 1, 2, 3, 4 }); json::const_iterator it = j.cbegin(); CHECK((it.m_it.array_iterator == it.m_object->m_data.m_value.array->begin())); ++it; @@ -314,7 +314,7 @@ TEST_CASE("const_iterator class") SECTION("object") { - json const j({{"foo", "bar"}}); + json const j({ { "foo", "bar" } }); json::const_iterator it = j.cend(); CHECK((it.m_it.object_iterator == it.m_object->m_data.m_value.object->end())); it--; @@ -323,7 +323,7 @@ TEST_CASE("const_iterator class") SECTION("array") { - json const j({1, 2, 3, 4}); + json const j({ 1, 2, 3, 4 }); json::const_iterator it = j.cend(); CHECK((it.m_it.array_iterator == it.m_object->m_data.m_value.array->end())); it--; @@ -363,7 +363,7 @@ TEST_CASE("const_iterator class") SECTION("object") { - json const j({{"foo", "bar"}}); + json const j({ { "foo", "bar" } }); json::const_iterator it = j.cend(); CHECK((it.m_it.object_iterator == it.m_object->m_data.m_value.object->end())); --it; @@ -372,7 +372,7 @@ TEST_CASE("const_iterator class") SECTION("array") { - json const j({1, 2, 3, 4}); + json const j({ 1, 2, 3, 4 }); json::const_iterator it = j.cend(); CHECK((it.m_it.array_iterator == it.m_object->m_data.m_value.array->end())); --it; diff --git a/tests/src/unit-class_iterator.cpp b/tests/src/unit-class_iterator.cpp index 1e8342ee4..1736c87eb 100644 --- a/tests/src/unit-class_iterator.cpp +++ b/tests/src/unit-class_iterator.cpp @@ -131,14 +131,14 @@ TEST_CASE("iterator class") SECTION("object") { - json j({{"foo", "bar"}}); + json j({ { "foo", "bar" } }); json::iterator const it = j.begin(); CHECK(*it == json("bar")); } SECTION("array") { - json j({1, 2, 3, 4}); + json j({ 1, 2, 3, 4 }); json::iterator const it = j.begin(); CHECK(*it == json(1)); } @@ -164,14 +164,14 @@ TEST_CASE("iterator class") SECTION("object") { - json j({{"foo", "bar"}}); + json j({ { "foo", "bar" } }); json::iterator const it = j.begin(); CHECK(std::string(it->type_name()) == "string"); } SECTION("array") { - json j({1, 2, 3, 4}); + json j({ 1, 2, 3, 4 }); json::iterator const it = j.begin(); CHECK(std::string(it->type_name()) == "number"); } @@ -204,7 +204,7 @@ TEST_CASE("iterator class") SECTION("object") { - json j({{"foo", "bar"}}); + json j({ { "foo", "bar" } }); json::iterator it = j.begin(); CHECK((it.m_it.object_iterator == it.m_object->m_data.m_value.object->begin())); it++; @@ -213,7 +213,7 @@ TEST_CASE("iterator class") SECTION("array") { - json j({1, 2, 3, 4}); + json j({ 1, 2, 3, 4 }); json::iterator it = j.begin(); CHECK((it.m_it.array_iterator == it.m_object->m_data.m_value.array->begin())); it++; @@ -255,7 +255,7 @@ TEST_CASE("iterator class") SECTION("object") { - json j({{"foo", "bar"}}); + json j({ { "foo", "bar" } }); json::iterator it = j.begin(); CHECK((it.m_it.object_iterator == it.m_object->m_data.m_value.object->begin())); ++it; @@ -264,7 +264,7 @@ TEST_CASE("iterator class") SECTION("array") { - json j({1, 2, 3, 4}); + json j({ 1, 2, 3, 4 }); json::iterator it = j.begin(); CHECK((it.m_it.array_iterator == it.m_object->m_data.m_value.array->begin())); ++it; @@ -304,7 +304,7 @@ TEST_CASE("iterator class") SECTION("object") { - json j({{"foo", "bar"}}); + json j({ { "foo", "bar" } }); json::iterator it = j.end(); CHECK((it.m_it.object_iterator == it.m_object->m_data.m_value.object->end())); it--; @@ -313,7 +313,7 @@ TEST_CASE("iterator class") SECTION("array") { - json j({1, 2, 3, 4}); + json j({ 1, 2, 3, 4 }); json::iterator it = j.end(); CHECK((it.m_it.array_iterator == it.m_object->m_data.m_value.array->end())); it--; @@ -353,7 +353,7 @@ TEST_CASE("iterator class") SECTION("object") { - json j({{"foo", "bar"}}); + json j({ { "foo", "bar" } }); json::iterator it = j.end(); CHECK((it.m_it.object_iterator == it.m_object->m_data.m_value.object->end())); --it; @@ -362,7 +362,7 @@ TEST_CASE("iterator class") SECTION("array") { - json j({1, 2, 3, 4}); + json j({ 1, 2, 3, 4 }); json::iterator it = j.end(); CHECK((it.m_it.array_iterator == it.m_object->m_data.m_value.array->end())); --it; diff --git a/tests/src/unit-class_parser.cpp b/tests/src/unit-class_parser.cpp index 1a4888d82..14a8e0187 100644 --- a/tests/src/unit-class_parser.cpp +++ b/tests/src/unit-class_parser.cpp @@ -333,7 +333,7 @@ TEST_CASE("parser class") SECTION("nonempty array") { - CHECK(parser_helper("[true, false, null]") == json({true, false, nullptr})); + CHECK(parser_helper("[true, false, null]") == json({ true, false, nullptr })); } } @@ -347,7 +347,7 @@ TEST_CASE("parser class") SECTION("nonempty object") { - CHECK(parser_helper("{\"\": true, \"one\": 1, \"two\": null}") == json({{"", true}, {"one", 1}, {"two", nullptr}})); + CHECK(parser_helper("{\"\": true, \"one\": 1, \"two\": null}") == json({ { "", true }, { "one", 1 }, { "two", nullptr } })); } } @@ -1675,13 +1675,13 @@ TEST_CASE("parser class") return true; }); - CHECK(j_object == json({{"foo", 2}, {"bar", {{"baz", 1}}}})); + CHECK(j_object == json({ { "foo", 2 }, { "bar", { { "baz", 1 } } } })); json j_array = json::parse(s_array, [](int /*unused*/, json::parse_event_t /*unused*/, const json& /*unused*/) noexcept { return true; }); - CHECK(j_array == json({1, 2, {3, 4, 5}, 4, 5})); + CHECK(j_array == json({ 1, 2, { 3, 4, 5 }, 4, 5 })); } SECTION("filter everything") @@ -1708,13 +1708,13 @@ TEST_CASE("parser class") return event != json::parse_event_t::value || j != json(2); }); - CHECK(j_object == json({{"bar", {{"baz", 1}}}})); + CHECK(j_object == json({ { "bar", { { "baz", 1 } } } })); json j_array = json::parse(s_array, [](int /*unused*/, json::parse_event_t event, const json& j) noexcept { return event != json::parse_event_t::value || j != json(2); }); - CHECK(j_array == json({1, {3, 4, 5}, 4, 5})); + CHECK(j_array == json({ 1, { 3, 4, 5 }, 4, 5 })); } SECTION("filter object in array") @@ -1725,7 +1725,7 @@ TEST_CASE("parser class") // the specified object will be discarded, and removed. CHECK(j_filtered1.size() == 2); - CHECK(j_filtered1 == json({1, {{"qux", "baz"}}})); + CHECK(j_filtered1 == json({ 1, { { "qux", "baz" } } })); json j_filtered2 = json::parse(structured_array, [](int /*unused*/, json::parse_event_t e, const json& /*parsed*/) noexcept { return e != json::parse_event_t::object_end; @@ -1733,7 +1733,7 @@ TEST_CASE("parser class") // removed all objects in array. CHECK(j_filtered2.size() == 1); - CHECK(j_filtered2 == json({1})); + CHECK(j_filtered2 == json({ 1 })); } SECTION("filter specific events") @@ -1753,7 +1753,7 @@ TEST_CASE("parser class") }); // the first completed object will be discarded - CHECK(j_object == json({{"foo", 2}})); + CHECK(j_object == json({ { "foo", 2 } })); } { @@ -1769,7 +1769,7 @@ TEST_CASE("parser class") }); // the first completed array will be discarded - CHECK(j_array == json({1, 2, 4, 5})); + CHECK(j_array == json({ 1, 2, 4, 5 })); } } } @@ -1796,7 +1796,7 @@ TEST_CASE("parser class") { SECTION("from std::vector") { - std::vector v = {'t', 'r', 'u', 'e'}; + std::vector v = { 't', 'r', 'u', 'e' }; json j; json::parser(nlohmann::detail::input_adapter(std::begin(v), std::end(v))).parse(true, j); CHECK(j == json(true)); @@ -1804,7 +1804,7 @@ TEST_CASE("parser class") SECTION("from std::array") { - std::array v{{'t', 'r', 'u', 'e'}}; + std::array v{ { 't', 'r', 'u', 'e' } }; json j; json::parser(nlohmann::detail::input_adapter(std::begin(v), std::end(v))).parse(true, j); CHECK(j == json(true)); @@ -1812,7 +1812,7 @@ TEST_CASE("parser class") SECTION("from array") { - uint8_t v[] = {'t', 'r', 'u', 'e'}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + uint8_t v[] = { 't', 'r', 'u', 'e' }; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) json j; json::parser(nlohmann::detail::input_adapter(std::begin(v), std::end(v))).parse(true, j); CHECK(j == json(true)); @@ -1825,7 +1825,7 @@ TEST_CASE("parser class") SECTION("from std::string") { - std::string v = {'t', 'r', 'u', 'e'}; + std::string v = { 't', 'r', 'u', 'e' }; json j; json::parser(nlohmann::detail::input_adapter(std::begin(v), std::end(v))).parse(true, j); CHECK(j == json(true)); @@ -1833,7 +1833,7 @@ TEST_CASE("parser class") SECTION("from std::initializer_list") { - std::initializer_list const v = {'t', 'r', 'u', 'e'}; + std::initializer_list const v = { 't', 'r', 'u', 'e' }; json j; json::parser(nlohmann::detail::input_adapter(std::begin(v), std::end(v))).parse(true, j); CHECK(j == json(true)); @@ -1841,7 +1841,7 @@ TEST_CASE("parser class") SECTION("from std::valarray") { - std::valarray v = {'t', 'r', 'u', 'e'}; + std::valarray v = { 't', 'r', 'u', 'e' }; json j; json::parser(nlohmann::detail::input_adapter(std::begin(v), std::end(v))).parse(true, j); CHECK(j == json(true)); diff --git a/tests/src/unit-comparison.cpp b/tests/src/unit-comparison.cpp index ca8e10a21..abd90200e 100644 --- a/tests/src/unit-comparison.cpp +++ b/tests/src/unit-comparison.cpp @@ -87,29 +87,23 @@ TEST_CASE("lexicographical comparison operators") SECTION("types") { - std::vector j_types = {json::value_t::null, - json::value_t::boolean, - json::value_t::number_integer, - json::value_t::number_unsigned, - json::value_t::number_float, - json::value_t::object, - json::value_t::array, - json::value_t::string, - json::value_t::binary, - json::value_t::discarded}; + std::vector j_types = { + json::value_t::null, json::value_t::boolean, json::value_t::number_integer, json::value_t::number_unsigned, json::value_t::number_float, + json::value_t::object, json::value_t::array, json::value_t::string, json::value_t::binary, json::value_t::discarded + }; std::vector> expected_lt = { //0 1 2 3 4 5 6 7 8 9 - {f_, _t, _t, _t, _t, _t, _t, _t, _t, f_}, // 0 - {f_, f_, _t, _t, _t, _t, _t, _t, _t, f_}, // 1 - {f_, f_, f_, f_, f_, _t, _t, _t, _t, f_}, // 2 - {f_, f_, f_, f_, f_, _t, _t, _t, _t, f_}, // 3 - {f_, f_, f_, f_, f_, _t, _t, _t, _t, f_}, // 4 - {f_, f_, f_, f_, f_, f_, _t, _t, _t, f_}, // 5 - {f_, f_, f_, f_, f_, f_, f_, _t, _t, f_}, // 6 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, f_}, // 7 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 8 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 9 + { f_, _t, _t, _t, _t, _t, _t, _t, _t, f_ }, // 0 + { f_, f_, _t, _t, _t, _t, _t, _t, _t, f_ }, // 1 + { f_, f_, f_, f_, f_, _t, _t, _t, _t, f_ }, // 2 + { f_, f_, f_, f_, f_, _t, _t, _t, _t, f_ }, // 3 + { f_, f_, f_, f_, f_, _t, _t, _t, _t, f_ }, // 4 + { f_, f_, f_, f_, f_, f_, _t, _t, _t, f_ }, // 5 + { f_, f_, f_, f_, f_, f_, f_, _t, _t, f_ }, // 6 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, f_ }, // 7 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 8 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 9 }; SECTION("comparison: less") @@ -139,16 +133,16 @@ TEST_CASE("lexicographical comparison operators") { std::vector> expected = { //0 1 2 3 4 5 6 7 8 9 - {eq, lt, lt, lt, lt, lt, lt, lt, lt, un}, // 0 - {gt, eq, lt, lt, lt, lt, lt, lt, lt, un}, // 1 - {gt, gt, eq, eq, eq, lt, lt, lt, lt, un}, // 2 - {gt, gt, eq, eq, eq, lt, lt, lt, lt, un}, // 3 - {gt, gt, eq, eq, eq, lt, lt, lt, lt, un}, // 4 - {gt, gt, gt, gt, gt, eq, lt, lt, lt, un}, // 5 - {gt, gt, gt, gt, gt, gt, eq, lt, lt, un}, // 6 - {gt, gt, gt, gt, gt, gt, gt, eq, lt, un}, // 7 - {gt, gt, gt, gt, gt, gt, gt, gt, eq, un}, // 8 - {un, un, un, un, un, un, un, un, un, un}, // 9 + { eq, lt, lt, lt, lt, lt, lt, lt, lt, un }, // 0 + { gt, eq, lt, lt, lt, lt, lt, lt, lt, un }, // 1 + { gt, gt, eq, eq, eq, lt, lt, lt, lt, un }, // 2 + { gt, gt, eq, eq, eq, lt, lt, lt, lt, un }, // 3 + { gt, gt, eq, eq, eq, lt, lt, lt, lt, un }, // 4 + { gt, gt, gt, gt, gt, eq, lt, lt, lt, un }, // 5 + { gt, gt, gt, gt, gt, gt, eq, lt, lt, un }, // 6 + { gt, gt, gt, gt, gt, gt, gt, eq, lt, un }, // 7 + { gt, gt, gt, gt, gt, gt, gt, gt, eq, un }, // 8 + { un, un, un, un, un, un, un, un, un, un }, // 9 }; // check expected partial_ordering against expected boolean @@ -197,94 +191,94 @@ TEST_CASE("lexicographical comparison operators") "bar", // 10 11 true, false, // 12 13 - {1, 2, 3}, - {"one", "two", "three"}, // 14 15 - {{"first", 1}, {"second", 2}}, - {{"a", "A"}, {"b", {"B"}}}, // 16 17 - json::binary({1, 2, 3}), - json::binary({1, 2, 4}), // 18 19 + { 1, 2, 3 }, + { "one", "two", "three" }, // 14 15 + { { "first", 1 }, { "second", 2 } }, + { { "a", "A" }, { "b", { "B" } } }, // 16 17 + json::binary({ 1, 2, 3 }), + json::binary({ 1, 2, 4 }), // 18 19 json(json::value_t::discarded), json(json::value_t::discarded) // 20 21 }; std::vector> expected_eq = { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 - {_t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 0 - {_t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 1 - {f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 2 - {f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 3 - {f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 4 - {f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 5 - {f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 6 - {f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 7 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 8 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 9 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 10 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 11 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 12 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_}, // 13 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_}, // 14 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_}, // 15 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_}, // 16 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_}, // 17 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_}, // 18 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_}, // 19 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 20 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 21 + { _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 0 + { _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 1 + { f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 2 + { f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 3 + { f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 4 + { f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 5 + { f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 6 + { f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 7 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 8 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 9 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 10 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 11 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 12 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, f_ }, // 13 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_ }, // 14 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_ }, // 15 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_ }, // 16 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_ }, // 17 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_ }, // 18 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_ }, // 19 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 20 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 21 }; std::vector> expected_lt = { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 - {f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_}, // 0 - {f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_}, // 1 - {f_, f_, f_, _t, _t, _t, _t, _t, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 2 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 3 - {f_, f_, f_, _t, f_, _t, f_, _t, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 4 - {f_, f_, f_, _t, f_, f_, f_, _t, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 5 - {f_, f_, f_, _t, _t, _t, f_, _t, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 6 - {f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 7 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 8 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 9 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_}, // 10 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_}, // 11 - {f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 12 - {f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, f_, _t, _t, _t, _t, _t, _t, f_, f_}, // 13 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, _t, f_, f_, _t, _t, f_, f_}, // 14 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_}, // 15 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, f_, f_, _t, _t, f_, f_}, // 16 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, f_, _t, _t, f_, f_}, // 17 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_}, // 18 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 19 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 20 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 21 + { f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_ }, // 0 + { f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_ }, // 1 + { f_, f_, f_, _t, _t, _t, _t, _t, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 2 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 3 + { f_, f_, f_, _t, f_, _t, f_, _t, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 4 + { f_, f_, f_, _t, f_, f_, f_, _t, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 5 + { f_, f_, f_, _t, _t, _t, f_, _t, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 6 + { f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 7 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 8 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 9 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_ }, // 10 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_ }, // 11 + { f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 12 + { f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, f_, _t, _t, _t, _t, _t, _t, f_, f_ }, // 13 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, _t, f_, f_, _t, _t, f_, f_ }, // 14 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_ }, // 15 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, f_, f_, _t, _t, f_, f_ }, // 16 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, _t, _t, _t, f_, _t, _t, f_, f_ }, // 17 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, f_, f_ }, // 18 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 19 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 20 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 21 }; SECTION("compares unordered") { std::vector> expected = { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 0 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 1 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 2 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 3 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 4 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 5 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 6 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 7 - {f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 8 - {f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 9 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 10 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 11 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 12 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 13 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 14 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 15 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 16 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 17 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 18 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t}, // 19 - {_t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t}, // 20 - {_t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t}, // 21 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 0 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 1 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 2 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 3 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 4 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 5 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 6 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 7 + { f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 8 + { f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 9 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 10 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 11 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 12 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 13 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 14 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 15 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 16 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 17 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 18 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, _t, _t }, // 19 + { _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t }, // 20 + { _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t, _t }, // 21 }; // check if two values compare unordered as expected @@ -306,28 +300,28 @@ TEST_CASE("lexicographical comparison operators") { std::vector> expected = { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 0 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 1 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 2 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 3 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 4 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 5 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 6 - {f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 7 - {f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 8 - {f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 9 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 10 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 11 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 12 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 13 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 14 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 15 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 16 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 17 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 18 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 19 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 20 - {f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_}, // 21 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 0 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 1 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 2 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 3 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 4 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 5 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 6 + { f_, f_, f_, f_, f_, f_, f_, f_, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 7 + { f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 8 + { f_, f_, _t, _t, _t, _t, _t, _t, _t, _t, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 9 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 10 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 11 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 12 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 13 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 14 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 15 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 16 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 17 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 18 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 19 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 20 + { f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_, f_ }, // 21 }; // check that two values compare unordered as expected (with legacy-mode enabled) @@ -500,28 +494,28 @@ TEST_CASE("lexicographical comparison operators") { std::vector> expected = { //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 - {eq, eq, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, un, un}, // 0 - {eq, eq, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, un, un}, // 1 - {gt, gt, eq, lt, lt, lt, lt, lt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un}, // 2 - {gt, gt, gt, eq, gt, gt, gt, gt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un}, // 3 - {gt, gt, gt, lt, eq, lt, gt, lt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un}, // 4 - {gt, gt, gt, lt, gt, eq, gt, lt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un}, // 5 - {gt, gt, gt, lt, lt, lt, eq, lt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un}, // 6 - {gt, gt, gt, lt, gt, gt, gt, eq, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un}, // 7 - {gt, gt, un, un, un, un, un, un, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un}, // 8 - {gt, gt, un, un, un, un, un, un, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un}, // 9 - {gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, eq, gt, gt, gt, gt, gt, gt, gt, lt, lt, un, un}, // 10 - {gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, eq, gt, gt, gt, gt, gt, gt, lt, lt, un, un}, // 11 - {gt, gt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, eq, gt, lt, lt, lt, lt, lt, lt, un, un}, // 12 - {gt, gt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, eq, lt, lt, lt, lt, lt, lt, un, un}, // 13 - {gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, lt, gt, gt, eq, lt, gt, gt, lt, lt, un, un}, // 14 - {gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, lt, gt, gt, gt, eq, gt, gt, lt, lt, un, un}, // 15 - {gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, lt, gt, gt, lt, lt, eq, gt, lt, lt, un, un}, // 16 - {gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, lt, gt, gt, lt, lt, lt, eq, lt, lt, un, un}, // 17 - {gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, eq, lt, un, un}, // 18 - {gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, eq, un, un}, // 19 - {un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un}, // 20 - {un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un}, // 21 + { eq, eq, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, un, un }, // 0 + { eq, eq, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, un, un }, // 1 + { gt, gt, eq, lt, lt, lt, lt, lt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un }, // 2 + { gt, gt, gt, eq, gt, gt, gt, gt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un }, // 3 + { gt, gt, gt, lt, eq, lt, gt, lt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un }, // 4 + { gt, gt, gt, lt, gt, eq, gt, lt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un }, // 5 + { gt, gt, gt, lt, lt, lt, eq, lt, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un }, // 6 + { gt, gt, gt, lt, gt, gt, gt, eq, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un }, // 7 + { gt, gt, un, un, un, un, un, un, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un }, // 8 + { gt, gt, un, un, un, un, un, un, un, un, lt, lt, gt, gt, lt, lt, lt, lt, lt, lt, un, un }, // 9 + { gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, eq, gt, gt, gt, gt, gt, gt, gt, lt, lt, un, un }, // 10 + { gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, eq, gt, gt, gt, gt, gt, gt, lt, lt, un, un }, // 11 + { gt, gt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, eq, gt, lt, lt, lt, lt, lt, lt, un, un }, // 12 + { gt, gt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, lt, eq, lt, lt, lt, lt, lt, lt, un, un }, // 13 + { gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, lt, gt, gt, eq, lt, gt, gt, lt, lt, un, un }, // 14 + { gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, lt, gt, gt, gt, eq, gt, gt, lt, lt, un, un }, // 15 + { gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, lt, gt, gt, lt, lt, eq, gt, lt, lt, un, un }, // 16 + { gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, lt, lt, gt, gt, lt, lt, lt, eq, lt, lt, un, un }, // 17 + { gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, eq, lt, un, un }, // 18 + { gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, gt, eq, un, un }, // 19 + { un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un }, // 20 + { un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un }, // 21 }; // check expected partial_ordering against expected booleans @@ -582,13 +576,13 @@ TEST_CASE("lexicographical comparison operators") return j != json(2); }); - CHECK(j_object == json({{"bar", {{"baz", 1}}}})); + CHECK(j_object == json({ { "bar", { { "baz", 1 } } } })); json j_array = json::parse(s_array, [](int /*unused*/, json::parse_event_t /*unused*/, const json& j) noexcept { return j != json(2); }); - CHECK(j_array == json({1, {3, 4, 5}, 4, 5})); + CHECK(j_array == json({ 1, { 3, 4, 5 }, 4, 5 })); } } #endif diff --git a/tests/src/unit-concepts.cpp b/tests/src/unit-concepts.cpp index d6bf2c9af..b8a563385 100644 --- a/tests/src/unit-concepts.cpp +++ b/tests/src/unit-concepts.cpp @@ -129,7 +129,7 @@ TEST_CASE("concepts") SECTION("Swappable") { { - json j{1, 2, 3}; + json j{ 1, 2, 3 }; json::iterator it1 = j.begin(); json::iterator it2 = j.end(); swap(it1, it2); @@ -137,7 +137,7 @@ TEST_CASE("concepts") CHECK(it2 == j.begin()); } { - json j{1, 2, 3}; + json j{ 1, 2, 3 }; json::const_iterator it1 = j.cbegin(); json::const_iterator it2 = j.cend(); swap(it1, it2); diff --git a/tests/src/unit-constructor1.cpp b/tests/src/unit-constructor1.cpp index 3d3f1c541..c69be14e9 100644 --- a/tests/src/unit-constructor1.cpp +++ b/tests/src/unit-constructor1.cpp @@ -131,7 +131,7 @@ TEST_CASE("constructors") SECTION("filled object") { - json::object_t const o{{"a", json(1)}, {"b", json(1u)}, {"c", json(2.2)}, {"d", json(false)}, {"e", json("string")}, {"f", json()}}; + json::object_t const o{ { "a", json(1) }, { "b", json(1u) }, { "c", json(2.2) }, { "d", json(false) }, { "e", json("string") }, { "f", json() } }; json const j(o); CHECK(j.type() == json::value_t::object); } @@ -140,12 +140,14 @@ TEST_CASE("constructors") SECTION("create an object (implicit)") { // reference object - json::object_t const o_reference{{"a", json(1)}, {"b", json(1u)}, {"c", json(2.2)}, {"d", json(false)}, {"e", json("string")}, {"f", json()}}; + json::object_t const o_reference{ { "a", json(1) }, { "b", json(1u) }, { "c", json(2.2) }, + { "d", json(false) }, { "e", json("string") }, { "f", json() } }; json const j_reference(o_reference); SECTION("std::map") { - std::map const o{{"a", json(1)}, {"b", json(1u)}, {"c", json(2.2)}, {"d", json(false)}, {"e", json("string")}, {"f", json()}}; + std::map const o{ { "a", json(1) }, { "b", json(1u) }, { "c", json(2.2) }, + { "d", json(false) }, { "e", json("string") }, { "f", json() } }; json const j(o); CHECK(j.type() == json::value_t::object); CHECK(j == j_reference); @@ -154,9 +156,9 @@ TEST_CASE("constructors") SECTION("std::map #600") { const std::map m{ - {"a", "b"}, - {"c", "d"}, - {"e", "f"}, + { "a", "b" }, + { "c", "d" }, + { "e", "f" }, }; json const j(m); @@ -165,7 +167,8 @@ TEST_CASE("constructors") SECTION("std::map") { - std::map const o{{"a", json(1)}, {"b", json(1u)}, {"c", json(2.2)}, {"d", json(false)}, {"e", json("string")}, {"f", json()}}; + std::map const o{ { "a", json(1) }, { "b", json(1u) }, { "c", json(2.2) }, + { "d", json(false) }, { "e", json("string") }, { "f", json() } }; json const j(o); CHECK(j.type() == json::value_t::object); CHECK(j == j_reference); @@ -173,12 +176,8 @@ TEST_CASE("constructors") SECTION("std::multimap") { - std::multimap const o{{"a", json(1)}, - {"b", json(1u)}, - {"c", json(2.2)}, - {"d", json(false)}, - {"e", json("string")}, - {"f", json()}}; + std::multimap const o{ { "a", json(1) }, { "b", json(1u) }, { "c", json(2.2) }, + { "d", json(false) }, { "e", json("string") }, { "f", json() } }; json const j(o); CHECK(j.type() == json::value_t::object); CHECK(j == j_reference); @@ -186,12 +185,8 @@ TEST_CASE("constructors") SECTION("std::unordered_map") { - std::unordered_map const o{{"a", json(1)}, - {"b", json(1u)}, - {"c", json(2.2)}, - {"d", json(false)}, - {"e", json("string")}, - {"f", json()}}; + std::unordered_map const o{ { "a", json(1) }, { "b", json(1u) }, { "c", json(2.2) }, + { "d", json(false) }, { "e", json("string") }, { "f", json() } }; json const j(o); CHECK(j.type() == json::value_t::object); CHECK(j == j_reference); @@ -199,12 +194,8 @@ TEST_CASE("constructors") SECTION("std::unordered_multimap") { - std::unordered_multimap const o{{"a", json(1)}, - {"b", json(1u)}, - {"c", json(2.2)}, - {"d", json(false)}, - {"e", json("string")}, - {"f", json()}}; + std::unordered_multimap const o{ { "a", json(1) }, { "b", json(1u) }, { "c", json(2.2) }, + { "d", json(false) }, { "e", json("string") }, { "f", json() } }; json const j(o); CHECK(j.type() == json::value_t::object); CHECK(j == j_reference); @@ -212,7 +203,7 @@ TEST_CASE("constructors") SECTION("associative container literal") { - json const j({{"a", json(1)}, {"b", json(1u)}, {"c", json(2.2)}, {"d", json(false)}, {"e", json("string")}, {"f", json()}}); + json const j({ { "a", json(1) }, { "b", json(1u) }, { "c", json(2.2) }, { "d", json(false) }, { "e", json("string") }, { "f", json() } }); CHECK(j.type() == json::value_t::object); CHECK(j == j_reference); } @@ -229,7 +220,7 @@ TEST_CASE("constructors") SECTION("filled array") { - json::array_t const a{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + json::array_t const a{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json const j(a); CHECK(j.type() == json::value_t::array); } @@ -238,12 +229,12 @@ TEST_CASE("constructors") SECTION("create an array (implicit)") { // reference array - json::array_t const a_reference{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + json::array_t const a_reference{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json const j_reference(a_reference); SECTION("std::list") { - std::list const a{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + std::list const a{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json const j(a); CHECK(j.type() == json::value_t::array); CHECK(j == j_reference); @@ -251,7 +242,7 @@ TEST_CASE("constructors") SECTION("std::pair") { - std::pair const p{1.0f, "string"}; + std::pair const p{ 1.0f, "string" }; json const j(p); CHECK(j.type() == json::value_t::array); @@ -263,7 +254,7 @@ TEST_CASE("constructors") SECTION("std::pair with discarded values") { - json const j{1, 2.0, "string"}; + json const j{ 1, 2.0, "string" }; const auto p = j.get>(); CHECK(p.first == j[0]); @@ -272,7 +263,7 @@ TEST_CASE("constructors") SECTION("std::tuple") { - const auto t = std::make_tuple(1.0, std::string{"string"}, 42, std::vector{0, 1}); + const auto t = std::make_tuple(1.0, std::string{ "string" }, 42, std::vector{ 0, 1 }); json const j(t); CHECK(j.type() == json::value_t::array); @@ -287,7 +278,7 @@ TEST_CASE("constructors") SECTION("std::tuple with discarded values") { - json const j{1, 2.0, "string", 42}; + json const j{ 1, 2.0, "string", 42 }; const auto t = j.get>(); CHECK(std::get<0>(t) == j[0]); @@ -297,7 +288,7 @@ TEST_CASE("constructors") SECTION("std::pair/tuple/array failures") { - json const j{1}; + json const j{ 1 }; CHECK_THROWS_WITH_AS((j.get>()), "[json.exception.out_of_range.401] array index 1 is out of range", json::out_of_range&); CHECK_THROWS_WITH_AS((j.get>()), "[json.exception.out_of_range.401] array index 1 is out of range", json::out_of_range&); @@ -306,7 +297,7 @@ TEST_CASE("constructors") SECTION("std::forward_list") { - std::forward_list const a{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + std::forward_list const a{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json const j(a); CHECK(j.type() == json::value_t::array); CHECK(j == j_reference); @@ -314,7 +305,7 @@ TEST_CASE("constructors") SECTION("std::array") { - std::array const a{{json(1), json(1u), json(2.2), json(false), json("string"), json()}}; + std::array const a{ { json(1), json(1u), json(2.2), json(false), json("string"), json() } }; json const j(a); CHECK(j.type() == json::value_t::array); CHECK(j == j_reference); @@ -325,10 +316,10 @@ TEST_CASE("constructors") SECTION("std::valarray") { - std::valarray const va = {1, 2, 3, 4, 5}; + std::valarray const va = { 1, 2, 3, 4, 5 }; json const j(va); CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 2, 3, 4, 5})); + CHECK(j == json({ 1, 2, 3, 4, 5 })); auto jva = j.get>(); CHECK(jva.size() == va.size()); @@ -340,10 +331,10 @@ TEST_CASE("constructors") SECTION("std::valarray") { - std::valarray const va = {1.2, 2.3, 3.4, 4.5, 5.6}; + std::valarray const va = { 1.2, 2.3, 3.4, 4.5, 5.6 }; json const j(va); CHECK(j.type() == json::value_t::array); - CHECK(j == json({1.2, 2.3, 3.4, 4.5, 5.6})); + CHECK(j == json({ 1.2, 2.3, 3.4, 4.5, 5.6 })); auto jva = j.get>(); CHECK(jva.size() == va.size()); @@ -355,7 +346,7 @@ TEST_CASE("constructors") SECTION("std::vector") { - std::vector const a{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + std::vector const a{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json const j(a); CHECK(j.type() == json::value_t::array); CHECK(j == j_reference); @@ -363,7 +354,7 @@ TEST_CASE("constructors") SECTION("std::deque") { - std::deque const a{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + std::deque const a{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json const j(a); CHECK(j.type() == json::value_t::array); CHECK(j == j_reference); @@ -371,7 +362,7 @@ TEST_CASE("constructors") SECTION("std::set") { - std::set const a{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + std::set const a{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json const j(a); CHECK(j.type() == json::value_t::array); // we cannot really check for equality here @@ -379,7 +370,7 @@ TEST_CASE("constructors") SECTION("std::unordered_set") { - std::unordered_set const a{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + std::unordered_set const a{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json const j(a); CHECK(j.type() == json::value_t::array); // we cannot really check for equality here @@ -387,7 +378,7 @@ TEST_CASE("constructors") SECTION("sequence container literal") { - json const j({json(1), json(1u), json(2.2), json(false), json("string"), json()}); + json const j({ json(1), json(1u), json(2.2), json(false), json("string"), json() }); CHECK(j.type() == json::value_t::array); CHECK(j == j_reference); } @@ -404,7 +395,7 @@ TEST_CASE("constructors") SECTION("filled string") { - json::string_t const s{"Hello world"}; + json::string_t const s{ "Hello world" }; json const j(s); CHECK(j.type() == json::value_t::string); } @@ -413,12 +404,12 @@ TEST_CASE("constructors") SECTION("create a string (implicit)") { // reference string - json::string_t const s_reference{"Hello world"}; + json::string_t const s_reference{ "Hello world" }; json const j_reference(s_reference); SECTION("std::string") { - std::string const s{"Hello world"}; + std::string const s{ "Hello world" }; json const j(s); CHECK(j.type() == json::value_t::string); CHECK(j == j_reference); @@ -426,7 +417,7 @@ TEST_CASE("constructors") SECTION("char[]") { - char const s[]{"Hello world"}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + char const s[]{ "Hello world" }; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) json const j(s); CHECK(j.type() == json::value_t::string); CHECK(j == j_reference); @@ -434,7 +425,7 @@ TEST_CASE("constructors") SECTION("const char*") { - const char* s{"Hello world"}; + const char* s{ "Hello world" }; json const j(s); CHECK(j.type() == json::value_t::string); CHECK(j == j_reference); @@ -471,7 +462,7 @@ TEST_CASE("constructors") SECTION("from std::vector::reference") { - std::vector v{true}; + std::vector v{ true }; json const j(v[0]); CHECK(std::is_same::reference>::value); CHECK(j.type() == json::value_t::boolean); @@ -479,7 +470,7 @@ TEST_CASE("constructors") SECTION("from std::vector::const_reference") { - const std::vector v{true}; + const std::vector v{ true }; json const j(v[0]); CHECK(std::is_same::const_reference>::value); CHECK(j.type() == json::value_t::boolean); @@ -497,7 +488,7 @@ TEST_CASE("constructors") SECTION("filled binary") { - json::binary_t const b({1, 2, 3}); + json::binary_t const b({ 1, 2, 3 }); json const j(b); CHECK(j.type() == json::value_t::binary); } @@ -851,7 +842,7 @@ TEST_CASE("constructors") CHECK(j.type() == json::value_t::number_float); // check round trip of NaN - json::number_float_t const d{j}; + json::number_float_t const d{ j }; CHECK((std::isnan(d) && std::isnan(n)) == true); // check that NaN is serialized to null @@ -866,7 +857,7 @@ TEST_CASE("constructors") CHECK(j.type() == json::value_t::number_float); // check round trip of infinity - json::number_float_t const d{j}; + json::number_float_t const d{ j }; CHECK(d == n); // check that inf is serialized to null @@ -949,13 +940,13 @@ TEST_CASE("constructors") { SECTION("explicit") { - json const j(json::initializer_list_t{json(json::array_t())}); + json const j(json::initializer_list_t{ json(json::array_t()) }); CHECK(j.type() == json::value_t::array); } SECTION("implicit") { - json const j{json::array_t()}; + json const j{ json::array_t() }; CHECK(j.type() == json::value_t::array); } } @@ -964,13 +955,13 @@ TEST_CASE("constructors") { SECTION("explicit") { - json const j(json::initializer_list_t{json(json::object_t())}); + json const j(json::initializer_list_t{ json(json::object_t()) }); CHECK(j.type() == json::value_t::array); } SECTION("implicit") { - json const j{json::object_t()}; + json const j{ json::object_t() }; CHECK(j.type() == json::value_t::array); } } @@ -979,13 +970,13 @@ TEST_CASE("constructors") { SECTION("explicit") { - json const j(json::initializer_list_t{json("Hello world")}); + json const j(json::initializer_list_t{ json("Hello world") }); CHECK(j.type() == json::value_t::array); } SECTION("implicit") { - json const j{"Hello world"}; + json const j{ "Hello world" }; CHECK(j.type() == json::value_t::array); } } @@ -994,13 +985,13 @@ TEST_CASE("constructors") { SECTION("explicit") { - json const j(json::initializer_list_t{json(true)}); + json const j(json::initializer_list_t{ json(true) }); CHECK(j.type() == json::value_t::array); } SECTION("implicit") { - json const j{true}; + json const j{ true }; CHECK(j.type() == json::value_t::array); } } @@ -1009,13 +1000,13 @@ TEST_CASE("constructors") { SECTION("explicit") { - json const j(json::initializer_list_t{json(1)}); + json const j(json::initializer_list_t{ json(1) }); CHECK(j.type() == json::value_t::array); } SECTION("implicit") { - json const j{1}; + json const j{ 1 }; CHECK(j.type() == json::value_t::array); } } @@ -1024,13 +1015,13 @@ TEST_CASE("constructors") { SECTION("explicit") { - json const j(json::initializer_list_t{json(1u)}); + json const j(json::initializer_list_t{ json(1u) }); CHECK(j.type() == json::value_t::array); } SECTION("implicit") { - json const j{1u}; + json const j{ 1u }; CHECK(j.type() == json::value_t::array); } } @@ -1039,13 +1030,13 @@ TEST_CASE("constructors") { SECTION("explicit") { - json const j(json::initializer_list_t{json(42.23)}); + json const j(json::initializer_list_t{ json(42.23) }); CHECK(j.type() == json::value_t::array); } SECTION("implicit") { - json const j{42.23}; + json const j{ 42.23 }; CHECK(j.type() == json::value_t::array); } } @@ -1055,13 +1046,13 @@ TEST_CASE("constructors") { SECTION("explicit") { - json const j(json::initializer_list_t{1, 1u, 42.23, true, nullptr, json::object_t(), json::array_t()}); + json const j(json::initializer_list_t{ 1, 1u, 42.23, true, nullptr, json::object_t(), json::array_t() }); CHECK(j.type() == json::value_t::array); } SECTION("implicit") { - json const j{1, 1u, 42.23, true, nullptr, json::object_t(), json::array_t()}; + json const j{ 1, 1u, 42.23, true, nullptr, json::object_t(), json::array_t() }; CHECK(j.type() == json::value_t::array); } } @@ -1070,13 +1061,13 @@ TEST_CASE("constructors") { SECTION("object") { - json const j{{"one", 1}, {"two", 1u}, {"three", 2.2}, {"four", false}}; + json const j{ { "one", 1 }, { "two", 1u }, { "three", 2.2 }, { "four", false } }; CHECK(j.type() == json::value_t::object); } SECTION("array") { - json const j{{"one", 1}, {"two", 1u}, {"three", 2.2}, {"four", false}, 13}; + json const j{ { "one", 1 }, { "two", 1u }, { "three", 2.2 }, { "four", false }, 13 }; CHECK(j.type() == json::value_t::array); } } @@ -1091,14 +1082,14 @@ TEST_CASE("constructors") SECTION("object") { - json const j = json::object({{"one", 1}, {"two", 1u}, {"three", 2.2}, {"four", false}}); + json const j = json::object({ { "one", 1 }, { "two", 1u }, { "three", 2.2 }, { "four", false } }); CHECK(j.type() == json::value_t::object); } SECTION("object with error") { json _; - CHECK_THROWS_WITH_AS(_ = json::object({{"one", 1}, {"two", 1u}, {"three", 2.2}, {"four", false}, 13}), + CHECK_THROWS_WITH_AS(_ = json::object({ { "one", 1 }, { "two", 1u }, { "three", 2.2 }, { "four", false }, 13 }), "[json.exception.type_error.301] cannot create object from initializer list", json::type_error&); } @@ -1111,7 +1102,7 @@ TEST_CASE("constructors") SECTION("array") { - json const j = json::array({{"one", 1}, {"two", 1u}, {"three", 2.2}, {"four", false}}); + json const j = json::array({ { "one", 1 }, { "two", 1u }, { "three", 2.2 }, { "four", false } }); CHECK(j.type() == json::value_t::array); } } @@ -1125,7 +1116,7 @@ TEST_CASE("constructors") // This should break through any short string optimization in std::string std::string source(1024, '!'); const auto* source_addr = source.data(); - json j = {std::move(source)}; + json j = { std::move(source) }; const auto* target_addr = j[0].get_ref().data(); const bool success = (target_addr == source_addr); CHECK(success); @@ -1136,7 +1127,7 @@ TEST_CASE("constructors") // This should break through any short string optimization in std::string std::string source(1024, '!'); const auto* source_addr = source.data(); - json j = {{"key", std::move(source)}}; + json j = { { "key", std::move(source) } }; const auto* target_addr = j["key"].get_ref().data(); const bool success = (target_addr == source_addr); CHECK(success); @@ -1147,7 +1138,7 @@ TEST_CASE("constructors") // This should break through any short string optimization in std::string std::string source(1024, '!'); const auto* source_addr = source.data(); - json j = {{std::move(source), 42}}; + json j = { { std::move(source), 42 } }; const auto* target_addr = j.get_ref().begin()->first.data(); const bool success = (target_addr == source_addr); CHECK(success); @@ -1158,9 +1149,9 @@ TEST_CASE("constructors") { SECTION("constructor with implicit types (array)") { - json::array_t source = {1, 2, 3}; + json::array_t source = { 1, 2, 3 }; const auto* source_addr = source.data(); - json j{std::move(source)}; + json j{ std::move(source) }; const auto* target_addr = j[0].get_ref().data(); const bool success = (target_addr == source_addr); CHECK(success); @@ -1168,9 +1159,9 @@ TEST_CASE("constructors") SECTION("constructor with implicit types (object)") { - json::array_t source = {1, 2, 3}; + json::array_t source = { 1, 2, 3 }; const auto* source_addr = source.data(); - json const j{{"key", std::move(source)}}; + json const j{ { "key", std::move(source) } }; const auto* target_addr = j["key"].get_ref().data(); const bool success = (target_addr == source_addr); CHECK(success); @@ -1178,9 +1169,9 @@ TEST_CASE("constructors") SECTION("assignment with implicit types (array)") { - json::array_t source = {1, 2, 3}; + json::array_t source = { 1, 2, 3 }; const auto* source_addr = source.data(); - json j = {std::move(source)}; + json j = { std::move(source) }; const auto* target_addr = j[0].get_ref().data(); const bool success = (target_addr == source_addr); CHECK(success); @@ -1188,9 +1179,9 @@ TEST_CASE("constructors") SECTION("assignment with implicit types (object)") { - json::array_t source = {1, 2, 3}; + json::array_t source = { 1, 2, 3 }; const auto* source_addr = source.data(); - json j = {{"key", std::move(source)}}; + json j = { { "key", std::move(source) } }; const auto* target_addr = j["key"].get_ref().data(); const bool success = (target_addr == source_addr); CHECK(success); @@ -1201,33 +1192,33 @@ TEST_CASE("constructors") { SECTION("constructor with implicit types (array)") { - json::object_t source = {{"hello", "world"}}; + json::object_t source = { { "hello", "world" } }; const json* source_addr = &source.at("hello"); - json j{std::move(source)}; + json j{ std::move(source) }; CHECK(&(j[0].get_ref().at("hello")) == source_addr); } SECTION("constructor with implicit types (object)") { - json::object_t source = {{"hello", "world"}}; + json::object_t source = { { "hello", "world" } }; const json* source_addr = &source.at("hello"); - json j{{"key", std::move(source)}}; + json j{ { "key", std::move(source) } }; CHECK(&(j["key"].get_ref().at("hello")) == source_addr); } SECTION("assignment with implicit types (array)") { - json::object_t source = {{"hello", "world"}}; + json::object_t source = { { "hello", "world" } }; const json* source_addr = &source.at("hello"); - json j = {std::move(source)}; + json j = { std::move(source) }; CHECK(&(j[0].get_ref().at("hello")) == source_addr); } SECTION("assignment with implicit types (object)") { - json::object_t source = {{"hello", "world"}}; + json::object_t source = { { "hello", "world" } }; const json* source_addr = &source.at("hello"); - json j = {{"key", std::move(source)}}; + json j = { { "key", std::move(source) } }; CHECK(&(j["key"].get_ref().at("hello")) == source_addr); } } @@ -1236,33 +1227,33 @@ TEST_CASE("constructors") { SECTION("constructor with implicit types (array)") { - json source{1, 2, 3}; + json source{ 1, 2, 3 }; const json* source_addr = &source[0]; - json j{std::move(source), {}}; + json j{ std::move(source), {} }; CHECK(&j[0][0] == source_addr); } SECTION("constructor with implicit types (object)") { - json source{1, 2, 3}; + json source{ 1, 2, 3 }; const json* source_addr = &source[0]; - json j{{"key", std::move(source)}}; + json j{ { "key", std::move(source) } }; CHECK(&j["key"][0] == source_addr); } SECTION("assignment with implicit types (array)") { - json source{1, 2, 3}; + json source{ 1, 2, 3 }; const json* source_addr = &source[0]; - json j = {std::move(source), {}}; + json j = { std::move(source), {} }; CHECK(&j[0][0] == source_addr); } SECTION("assignment with implicit types (object)") { - json source{1, 2, 3}; + json source{ 1, 2, 3 }; const json* source_addr = &source[0]; - json j = {{"key", std::move(source)}}; + json j = { { "key", std::move(source) } }; CHECK(&j["key"][0] == source_addr); } } @@ -1273,14 +1264,14 @@ TEST_CASE("constructors") { SECTION("cnt = 0") { - json const v = {1, "foo", 34.23, {1, 2, 3}, {{"A", 1}, {"B", 2u}}}; + json const v = { 1, "foo", 34.23, { 1, 2, 3 }, { { "A", 1 }, { "B", 2u } } }; json const arr(0, v); CHECK(arr.size() == 0); } SECTION("cnt = 1") { - json const v = {1, "foo", 34.23, {1, 2, 3}, {{"A", 1}, {"B", 2u}}}; + json const v = { 1, "foo", 34.23, { 1, 2, 3 }, { { "A", 1 }, { "B", 2u } } }; json const arr(1, v); CHECK(arr.size() == 1); for (const auto& x : arr) @@ -1291,7 +1282,7 @@ TEST_CASE("constructors") SECTION("cnt = 3") { - json const v = {1, "foo", 34.23, {1, 2, 3}, {{"A", 1}, {"B", 2u}}}; + json const v = { 1, "foo", 34.23, { 1, 2, 3 }, { { "A", 1 }, { "B", 2u } } }; json const arr(3, v); CHECK(arr.size() == 3); for (const auto& x : arr) @@ -1308,12 +1299,12 @@ TEST_CASE("constructors") SECTION("json(begin(), end())") { { - json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; json const j_new(jobject.begin(), jobject.end()); CHECK(j_new == jobject); } { - json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; json const j_new(jobject.cbegin(), jobject.cend()); CHECK(j_new == jobject); } @@ -1322,12 +1313,12 @@ TEST_CASE("constructors") SECTION("json(begin(), begin())") { { - json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; json const j_new(jobject.begin(), jobject.begin()); CHECK(j_new == json::object()); } { - json const jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + json const jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; json const j_new(jobject.cbegin(), jobject.cbegin()); CHECK(j_new == json::object()); } @@ -1335,16 +1326,16 @@ TEST_CASE("constructors") SECTION("construct from subrange") { - json const jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}, {"d", false}, {"e", true}}; + json const jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u }, { "d", false }, { "e", true } }; json const j_new(jobject.find("b"), jobject.find("e")); - CHECK(j_new == json({{"b", 1}, {"c", 17u}, {"d", false}})); + CHECK(j_new == json({ { "b", 1 }, { "c", 17u }, { "d", false } })); } SECTION("incompatible iterators") { { - json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}, {"d", false}, {"e", true}}; - json jobject2 = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u }, { "d", false }, { "e", true } }; + json jobject2 = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; CHECK_THROWS_WITH_AS(json(jobject.begin(), jobject2.end()), "[json.exception.invalid_iterator.201] iterators are not compatible", json::invalid_iterator&); @@ -1353,8 +1344,8 @@ TEST_CASE("constructors") json::invalid_iterator&); } { - json const jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}, {"d", false}, {"e", true}}; - json const jobject2 = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + json const jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u }, { "d", false }, { "e", true } }; + json const jobject2 = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; CHECK_THROWS_WITH_AS(json(jobject.cbegin(), jobject2.cend()), "[json.exception.invalid_iterator.201] iterators are not compatible", json::invalid_iterator&); @@ -1370,12 +1361,12 @@ TEST_CASE("constructors") SECTION("json(begin(), end())") { { - json jarray = {1, 2, 3, 4, 5}; + json jarray = { 1, 2, 3, 4, 5 }; json const j_new(jarray.begin(), jarray.end()); CHECK(j_new == jarray); } { - json const jarray = {1, 2, 3, 4, 5}; + json const jarray = { 1, 2, 3, 4, 5 }; json const j_new(jarray.cbegin(), jarray.cend()); CHECK(j_new == jarray); } @@ -1384,12 +1375,12 @@ TEST_CASE("constructors") SECTION("json(begin(), begin())") { { - json jarray = {1, 2, 3, 4, 5}; + json jarray = { 1, 2, 3, 4, 5 }; json j_new(jarray.begin(), jarray.begin()); CHECK(j_new == json::array()); } { - json const jarray = {1, 2, 3, 4, 5}; + json const jarray = { 1, 2, 3, 4, 5 }; json const j_new(jarray.cbegin(), jarray.cbegin()); CHECK(j_new == json::array()); } @@ -1398,22 +1389,22 @@ TEST_CASE("constructors") SECTION("construct from subrange") { { - json jarray = {1, 2, 3, 4, 5}; + json jarray = { 1, 2, 3, 4, 5 }; json const j_new(jarray.begin() + 1, jarray.begin() + 3); - CHECK(j_new == json({2, 3})); + CHECK(j_new == json({ 2, 3 })); } { - json const jarray = {1, 2, 3, 4, 5}; + json const jarray = { 1, 2, 3, 4, 5 }; json const j_new(jarray.cbegin() + 1, jarray.cbegin() + 3); - CHECK(j_new == json({2, 3})); + CHECK(j_new == json({ 2, 3 })); } } SECTION("incompatible iterators") { { - json jarray = {1, 2, 3, 4}; - json jarray2 = {2, 3, 4, 5}; + json jarray = { 1, 2, 3, 4 }; + json jarray2 = { 2, 3, 4, 5 }; CHECK_THROWS_WITH_AS(json(jarray.begin(), jarray2.end()), "[json.exception.invalid_iterator.201] iterators are not compatible", json::invalid_iterator&); @@ -1422,8 +1413,8 @@ TEST_CASE("constructors") json::invalid_iterator&); } { - json const jarray = {1, 2, 3, 4}; - json const jarray2 = {2, 3, 4, 5}; + json const jarray = { 1, 2, 3, 4 }; + json const jarray2 = { 2, 3, 4, 5 }; CHECK_THROWS_WITH_AS(json(jarray.cbegin(), jarray2.cend()), "[json.exception.invalid_iterator.201] iterators are not compatible", json::invalid_iterator&); @@ -1527,12 +1518,12 @@ TEST_CASE("constructors") SECTION("binary") { { - json j = json::binary({1, 2, 3}); + json j = json::binary({ 1, 2, 3 }); json const j_new(j.begin(), j.end()); CHECK((j == j_new)); } { - json const j = json::binary({1, 2, 3}); + json const j = json::binary({ 1, 2, 3 }); json const j_new(j.cbegin(), j.cend()); CHECK((j == j_new)); } diff --git a/tests/src/unit-constructor2.cpp b/tests/src/unit-constructor2.cpp index 64d308e74..d116e8f5a 100644 --- a/tests/src/unit-constructor2.cpp +++ b/tests/src/unit-constructor2.cpp @@ -17,14 +17,14 @@ TEST_CASE("other constructors and destructor") { SECTION("object") { - json j{{"foo", 1}, {"bar", false}}; + json j{ { "foo", 1 }, { "bar", false } }; json k(j); // NOLINT(performance-unnecessary-copy-initialization) CHECK(j == k); } SECTION("array") { - json j{"foo", 1, 42.23, false}; + json j{ "foo", 1, 42.23, false }; json k(j); // NOLINT(performance-unnecessary-copy-initialization) CHECK(j == k); } @@ -73,7 +73,7 @@ TEST_CASE("other constructors and destructor") SECTION("binary") { - json j = json::binary({1, 2, 3}); + json j = json::binary({ 1, 2, 3 }); json k(j); // NOLINT(performance-unnecessary-copy-initialization) CHECK(j == k); } @@ -81,7 +81,7 @@ TEST_CASE("other constructors and destructor") SECTION("move constructor") { - json j{{"foo", "bar"}, {"baz", {1, 2, 3, 4}}, {"a", 42u}, {"b", 42.23}, {"c", nullptr}}; + json j{ { "foo", "bar" }, { "baz", { 1, 2, 3, 4 } }, { "a", 42u }, { "b", 42.23 }, { "c", nullptr } }; CHECK(j.type() == json::value_t::object); const json k(std::move(j)); CHECK(k.type() == json::value_t::object); @@ -92,7 +92,7 @@ TEST_CASE("other constructors and destructor") { SECTION("object") { - json j{{"foo", 1}, {"bar", false}}; + json j{ { "foo", 1 }, { "bar", false } }; json k; k = j; CHECK(j == k); @@ -100,7 +100,7 @@ TEST_CASE("other constructors and destructor") SECTION("array") { - json j{"foo", 1, 42.23, false}; + json j{ "foo", 1, 42.23, false }; json k; k = j; CHECK(j == k); @@ -156,7 +156,7 @@ TEST_CASE("other constructors and destructor") SECTION("binary") { - json j = json::binary({1, 2, 3}); + json j = json::binary({ 1, 2, 3 }); json k; k = j; CHECK(j == k); @@ -167,14 +167,14 @@ TEST_CASE("other constructors and destructor") { SECTION("object") { - auto* j = new json{{"foo", 1}, {"bar", false}}; // NOLINT(cppcoreguidelines-owning-memory) - delete j; // NOLINT(cppcoreguidelines-owning-memory) + auto* j = new json{ { "foo", 1 }, { "bar", false } }; // NOLINT(cppcoreguidelines-owning-memory) + delete j; // NOLINT(cppcoreguidelines-owning-memory) } SECTION("array") { - auto* j = new json{"foo", 1, 1u, false, 23.42}; // NOLINT(cppcoreguidelines-owning-memory) - delete j; // NOLINT(cppcoreguidelines-owning-memory) + auto* j = new json{ "foo", 1, 1u, false, 23.42 }; // NOLINT(cppcoreguidelines-owning-memory) + delete j; // NOLINT(cppcoreguidelines-owning-memory) } SECTION("string") diff --git a/tests/src/unit-convenience.cpp b/tests/src/unit-convenience.cpp index 4621e0111..e4a7be52c 100644 --- a/tests/src/unit-convenience.cpp +++ b/tests/src/unit-convenience.cpp @@ -173,8 +173,8 @@ TEST_CASE("convenience functions") using nlohmann::detail::concat; const char* expected = "Hello, world!"; - alt_string_iter const hello_iter{"Hello, "}; - alt_string_data const hello_data{"Hello, "}; + alt_string_iter const hello_iter{ "Hello, " }; + alt_string_data const hello_data{ "Hello, " }; std::string const world = "world"; SECTION("std::string") diff --git a/tests/src/unit-conversions.cpp b/tests/src/unit-conversions.cpp index 8c0fd7380..f895c3820 100644 --- a/tests/src/unit-conversions.cpp +++ b/tests/src/unit-conversions.cpp @@ -36,8 +36,8 @@ TEST_CASE("value conversion") { SECTION("get an object (explicit)") { - const json::object_t o_reference = - {{"object", json::object()}, {"array", {1, 2, 3, 4}}, {"number", 42}, {"boolean", false}, {"null", nullptr}, {"string", "Hello world"}}; + const json::object_t o_reference = { { "object", json::object() }, { "array", { 1, 2, 3, 4 } }, { "number", 42 }, + { "boolean", false }, { "null", nullptr }, { "string", "Hello world" } }; json j(o_reference); SECTION("json::object_t") @@ -99,41 +99,41 @@ TEST_CASE("value conversion") SECTION("get an object (explicit, get_to)") { - const json::object_t o_reference = - {{"object", json::object()}, {"array", {1, 2, 3, 4}}, {"number", 42}, {"boolean", false}, {"null", nullptr}, {"string", "Hello world"}}; + const json::object_t o_reference = { { "object", json::object() }, { "array", { 1, 2, 3, 4 } }, { "number", 42 }, + { "boolean", false }, { "null", nullptr }, { "string", "Hello world" } }; json j(o_reference); SECTION("json::object_t") { - json::object_t o = {{"previous", "value"}}; + json::object_t o = { { "previous", "value" } }; j.get_to(o); CHECK(json(o) == j); } SECTION("std::map") { - std::map o{{"previous", "value"}}; + std::map o{ { "previous", "value" } }; j.get_to(o); CHECK(json(o) == j); } SECTION("std::multimap") { - std::multimap o{{"previous", "value"}}; + std::multimap o{ { "previous", "value" } }; j.get_to(o); CHECK(json(o) == j); } SECTION("std::unordered_map") { - std::unordered_map o{{"previous", "value"}}; + std::unordered_map o{ { "previous", "value" } }; j.get_to(o); CHECK(json(o) == j); } SECTION("std::unordered_multimap") { - std::unordered_multimap o{{"previous", "value"}}; + std::unordered_multimap o{ { "previous", "value" } }; j.get_to(o); CHECK(json(o) == j); } @@ -142,8 +142,8 @@ TEST_CASE("value conversion") #if JSON_USE_IMPLICIT_CONVERSIONS SECTION("get an object (implicit)") { - const json::object_t o_reference = - {{"object", json::object()}, {"array", {1, 2, 3, 4}}, {"number", 42}, {"boolean", false}, {"null", nullptr}, {"string", "Hello world"}}; + const json::object_t o_reference = { { "object", json::object() }, { "array", { 1, 2, 3, 4 } }, { "number", 42 }, + { "boolean", false }, { "null", nullptr }, { "string", "Hello world" } }; json j(o_reference); SECTION("json::object_t") @@ -180,7 +180,7 @@ TEST_CASE("value conversion") SECTION("get an array (explicit)") { - const json::array_t a_reference{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + const json::array_t a_reference{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json j(a_reference); SECTION("json::array_t") @@ -218,7 +218,7 @@ TEST_CASE("value conversion") SECTION("reserve is called on containers that supports it") { // make sure all values are properly copied - const json j2({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}); + const json j2({ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }); auto v2 = j2.get>(); CHECK(v2.size() == 10); } @@ -228,7 +228,7 @@ TEST_CASE("value conversion") SECTION("built-in arrays") { const char str[] = "a string"; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) - const int nbs[] = {0, 1, 2}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + const int nbs[] = { 0, 1, 2 }; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) const json j2 = nbs; const json j3 = str; @@ -276,48 +276,48 @@ TEST_CASE("value conversion") SECTION("get an array (explicit, get_to)") { - const json::array_t a_reference{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + const json::array_t a_reference{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json j(a_reference); SECTION("json::array_t") { - json::array_t a{"previous", "value"}; + json::array_t a{ "previous", "value" }; j.get_to(a); CHECK(json(a) == j); } SECTION("std::valarray") { - std::valarray a{"previous", "value"}; + std::valarray a{ "previous", "value" }; j.get_to(a); CHECK(json(a) == j); } SECTION("std::list") { - std::list a{"previous", "value"}; + std::list a{ "previous", "value" }; j.get_to(a); CHECK(json(a) == j); } SECTION("std::forward_list") { - std::forward_list a{"previous", "value"}; + std::forward_list a{ "previous", "value" }; j.get_to(a); CHECK(json(a) == j); } SECTION("std::vector") { - std::vector a{"previous", "value"}; + std::vector a{ "previous", "value" }; j.get_to(a); CHECK(json(a) == j); } SECTION("built-in arrays") { - const int nbs[] = {0, 1, 2}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) - int nbs2[] = {0, 0, 0}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + const int nbs[] = { 0, 1, 2 }; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + int nbs2[] = { 0, 0, 0 }; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) const json j2 = nbs; j2.get_to(nbs2); @@ -326,7 +326,7 @@ TEST_CASE("value conversion") SECTION("std::deque") { - std::deque a{"previous", "value"}; + std::deque a{ "previous", "value" }; j.get_to(a); CHECK(json(a) == j); } @@ -335,7 +335,7 @@ TEST_CASE("value conversion") #if JSON_USE_IMPLICIT_CONVERSIONS SECTION("get an array (implicit)") { - const json::array_t a_reference{json(1), json(1u), json(2.2), json(false), json("string"), json()}; + const json::array_t a_reference{ json(1), json(1u), json(2.2), json(false), json("string"), json() }; json j(a_reference); SECTION("json::array_t") @@ -372,7 +372,7 @@ TEST_CASE("value conversion") SECTION("get a string (explicit)") { - const json::string_t s_reference{"Hello world"}; + const json::string_t s_reference{ "Hello world" }; json j(s_reference); SECTION("string_t") @@ -450,7 +450,7 @@ TEST_CASE("value conversion") SECTION("get a string (explicit, get_to)") { - const json::string_t s_reference{"Hello world"}; + const json::string_t s_reference{ "Hello world" }; json j(s_reference); SECTION("string_t") @@ -511,7 +511,7 @@ TEST_CASE("value conversion") #if JSON_USE_IMPLICIT_CONVERSIONS SECTION("get a string (implicit)") { - const json::string_t s_reference{"Hello world"}; + const json::string_t s_reference{ "Hello world" }; json j(s_reference); SECTION("string_t") @@ -538,7 +538,7 @@ TEST_CASE("value conversion") SECTION("get a boolean (explicit)") { - const json::boolean_t b_reference{true}; + const json::boolean_t b_reference{ true }; json j(b_reference); SECTION("boolean_t") @@ -595,7 +595,7 @@ TEST_CASE("value conversion") #if JSON_USE_IMPLICIT_CONVERSIONS SECTION("get a boolean (implicit)") { - const json::boolean_t b_reference{true}; + const json::boolean_t b_reference{ true }; json j(b_reference); SECTION("boolean_t") @@ -614,9 +614,9 @@ TEST_CASE("value conversion") SECTION("get an integer number (explicit)") { - const json::number_integer_t n_reference{42}; + const json::number_integer_t n_reference{ 42 }; json j(n_reference); - const json::number_unsigned_t n_unsigned_reference{42u}; + const json::number_unsigned_t n_unsigned_reference{ 42u }; json j_unsigned(n_unsigned_reference); SECTION("number_integer_t") @@ -850,9 +850,9 @@ TEST_CASE("value conversion") #if JSON_USE_IMPLICIT_CONVERSIONS SECTION("get an integer number (implicit)") { - json::number_integer_t const n_reference{42}; + json::number_integer_t const n_reference{ 42 }; json j(n_reference); - json::number_unsigned_t const n_unsigned_reference{42u}; + json::number_unsigned_t const n_unsigned_reference{ 42u }; json j_unsigned(n_unsigned_reference); SECTION("number_integer_t") @@ -1063,7 +1063,7 @@ TEST_CASE("value conversion") SECTION("get a floating-point number (explicit)") { - json::number_float_t const n_reference{42.23}; + json::number_float_t const n_reference{ 42.23 }; json const j(n_reference); SECTION("number_float_t") @@ -1111,7 +1111,7 @@ TEST_CASE("value conversion") #if JSON_USE_IMPLICIT_CONVERSIONS SECTION("get a floating-point number (implicit)") { - json::number_float_t const n_reference{42.23}; + json::number_float_t const n_reference{ 42.23 }; json const j(n_reference); SECTION("number_float_t") @@ -1136,7 +1136,7 @@ TEST_CASE("value conversion") SECTION("get a binary value (explicit)") { - json::binary_t const n_reference{{1, 2, 3}}; + json::binary_t const n_reference{ { 1, 2, 3 } }; json j(n_reference); SECTION("binary_t") @@ -1205,7 +1205,7 @@ TEST_CASE("value conversion") #if JSON_USE_IMPLICIT_CONVERSIONS SECTION("get a binary value (implicit)") { - json::binary_t const n_reference{{1, 2, 3}}; + json::binary_t const n_reference{ { 1, 2, 3 } }; json const j(n_reference); SECTION("binary_t") @@ -1237,11 +1237,11 @@ TEST_CASE("value conversion") { SECTION("object-like STL containers") { - json const j1 = {{"one", 1}, {"two", 2}, {"three", 3}}; - json const j2 = {{"one", 1u}, {"two", 2u}, {"three", 3u}}; - json const j3 = {{"one", 1.1}, {"two", 2.2}, {"three", 3.3}}; - json const j4 = {{"one", true}, {"two", false}, {"three", true}}; - json const j5 = {{"one", "eins"}, {"two", "zwei"}, {"three", "drei"}}; + json const j1 = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; + json const j2 = { { "one", 1u }, { "two", 2u }, { "three", 3u } }; + json const j3 = { { "one", 1.1 }, { "two", 2.2 }, { "three", 3.3 } }; + json const j4 = { { "one", true }, { "two", false }, { "three", true } }; + json const j5 = { { "one", "eins" }, { "two", "zwei" }, { "three", "drei" } }; SECTION("std::map") { @@ -1292,11 +1292,11 @@ TEST_CASE("value conversion") SECTION("array-like STL containers") { - json const j1 = {1, 2, 3, 4}; - json const j2 = {1u, 2u, 3u, 4u}; - json const j3 = {1.2, 2.3, 3.4, 4.5}; - json const j4 = {true, false, true}; - json const j5 = {"one", "two", "three"}; + json const j1 = { 1, 2, 3, 4 }; + json const j2 = { 1u, 2u, 3u, 4u }; + json const j3 = { 1.2, 2.3, 3.4, 4.5 }; + json const j4 = { true, false, true }; + json const j5 = { "one", "two", "three" }; SECTION("std::list") { @@ -1326,7 +1326,7 @@ TEST_CASE("value conversion") SECTION("std::array is larger than JSON") { - std::array arr6 = {{1, 2, 3, 4, 5, 6}}; + std::array arr6 = { { 1, 2, 3, 4, 5, 6 } }; CHECK_THROWS_WITH_AS(j1.get_to(arr6), "[json.exception.out_of_range.401] " "array index 4 is out of range", @@ -1335,7 +1335,7 @@ TEST_CASE("value conversion") SECTION("std::array is smaller than JSON") { - std::array arr2 = {{8, 9}}; + std::array arr2 = { { 8, 9 } }; j1.get_to(arr2); CHECK(arr2[0] == 1); CHECK(arr2[1] == 2); @@ -1389,13 +1389,13 @@ TEST_CASE("value conversion") SECTION("std::map (array of pairs)") { - std::map m{{0, 1}, {1, 2}, {2, 3}}; + std::map m{ { 0, 1 }, { 1, 2 }, { 2, 3 } }; json const j6 = m; auto m2 = j6.get>(); CHECK(m == m2); - json const j7 = {0, 1, 2, 3}; + json const j7 = { 0, 1, 2, 3 }; json const j8 = 2; CHECK_THROWS_WITH_AS((j7.get>()), "[json.exception.type_error.302] type must be array, " @@ -1408,7 +1408,7 @@ TEST_CASE("value conversion") SECTION("superfluous entries") { - json const j9 = {{0, 1, 2}, {1, 2, 3}, {2, 3, 4}}; + json const j9 = { { 0, 1, 2 }, { 1, 2, 3 }, { 2, 3, 4 } }; m2 = j9.get>(); CHECK(m == m2); } @@ -1416,13 +1416,13 @@ TEST_CASE("value conversion") SECTION("std::unordered_map (array of pairs)") { - std::unordered_map m{{0, 1}, {1, 2}, {2, 3}}; + std::unordered_map m{ { 0, 1 }, { 1, 2 }, { 2, 3 } }; json const j6 = m; auto m2 = j6.get>(); CHECK(m == m2); - json const j7 = {0, 1, 2, 3}; + json const j7 = { 0, 1, 2, 3 }; json const j8 = 2; CHECK_THROWS_WITH_AS((j7.get>()), "[json.exception.type_error.302] type must be array, " @@ -1435,7 +1435,7 @@ TEST_CASE("value conversion") SECTION("superfluous entries") { - json const j9{{0, 1, 2}, {1, 2, 3}, {2, 3, 4}}; + json const j9{ { 0, 1, 2 }, { 1, 2, 3 }, { 2, 3, 4 } }; m2 = j9.get>(); CHECK(m == m2); } @@ -1466,11 +1466,11 @@ enum class cards // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) - false positive NLOHMANN_JSON_SERIALIZE_ENUM(cards, - {{cards::kreuz, "kreuz"}, - {cards::pik, "pik"}, - {cards::pik, "puk"}, // second entry for cards::puk; will not be used - {cards::herz, "herz"}, - {cards::karo, "karo"}}) + { { cards::kreuz, "kreuz" }, + { cards::pik, "pik" }, + { cards::pik, "puk" }, // second entry for cards::puk; will not be used + { cards::herz, "herz" }, + { cards::karo, "karo" } }) enum TaskState { @@ -1483,10 +1483,10 @@ enum TaskState // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) - false positive NLOHMANN_JSON_SERIALIZE_ENUM(TaskState, { - {TS_INVALID, nullptr}, - {TS_STOPPED, "stopped"}, - {TS_RUNNING, "running"}, - {TS_COMPLETED, "completed"}, + { TS_INVALID, nullptr }, + { TS_STOPPED, "stopped" }, + { TS_RUNNING, "running" }, + { TS_COMPLETED, "completed" }, }) TEST_CASE("JSON to enum mapping") diff --git a/tests/src/unit-custom-base-class.cpp b/tests/src/unit-custom-base-class.cpp index f9a4f7af8..c0b8d9462 100644 --- a/tests/src/unit-custom-base-class.cpp +++ b/tests/src/unit-custom-base-class.cpp @@ -258,23 +258,23 @@ TEST_CASE("JSON Visit Node") json["array"].push_back(1); json["array"].push_back(json); - std::set expected{"/null - null - null", - "/int - number_integer - -1", - "/uint - number_unsigned - 1", - "/float - number_float - 1.0", - "/boolean - boolean - true", - "/string - string - \"string\"", - "/array/0 - number_integer - 0", - "/array/1 - number_integer - 1", + std::set expected{ "/null - null - null", + "/int - number_integer - -1", + "/uint - number_unsigned - 1", + "/float - number_float - 1.0", + "/boolean - boolean - true", + "/string - string - \"string\"", + "/array/0 - number_integer - 0", + "/array/1 - number_integer - 1", - "/array/2/null - null - null", - "/array/2/int - number_integer - -1", - "/array/2/uint - number_unsigned - 1", - "/array/2/float - number_float - 1.0", - "/array/2/boolean - boolean - true", - "/array/2/string - string - \"string\"", - "/array/2/array/0 - number_integer - 0", - "/array/2/array/1 - number_integer - 1"}; + "/array/2/null - null - null", + "/array/2/int - number_integer - -1", + "/array/2/uint - number_unsigned - 1", + "/array/2/float - number_float - 1.0", + "/array/2/boolean - boolean - true", + "/array/2/string - string - \"string\"", + "/array/2/array/0 - number_integer - 0", + "/array/2/array/1 - number_integer - 1" }; json.visit([&](const json_with_visitor_t::json_pointer& p, const json_with_visitor_t& j) { std::stringstream str; diff --git a/tests/src/unit-deserialization.cpp b/tests/src/unit-deserialization.cpp index 46280f597..aa8524ec1 100644 --- a/tests/src/unit-deserialization.cpp +++ b/tests/src/unit-deserialization.cpp @@ -231,22 +231,22 @@ TEST_CASE("deserialization") ss3 << R"(["foo",1,2,3,false,{"one":1}])"; json j = json::parse(ss1); CHECK(json::accept(ss2)); - CHECK(j == json({"foo", 1, 2, 3, false, {{"one", 1}}})); + CHECK(j == json({ "foo", 1, 2, 3, false, { { "one", 1 } } })); SaxEventLogger l; CHECK(json::sax_parse(ss3, &l)); CHECK(l.events.size() == 11); - CHECK(l.events == std::vector({"start_array()", - "string(foo)", - "number_unsigned(1)", - "number_unsigned(2)", - "number_unsigned(3)", - "boolean(false)", - "start_object()", - "key(one)", - "number_unsigned(1)", - "end_object()", - "end_array()"})); + CHECK(l.events == std::vector({ "start_array()", + "string(foo)", + "number_unsigned(1)", + "number_unsigned(2)", + "number_unsigned(3)", + "boolean(false)", + "start_object()", + "key(one)", + "number_unsigned(1)", + "end_object()", + "end_array()" })); } SECTION("string literal") @@ -254,22 +254,22 @@ TEST_CASE("deserialization") const auto* s = R"(["foo",1,2,3,false,{"one":1}])"; json j = json::parse(s); CHECK(json::accept(s)); - CHECK(j == json({"foo", 1, 2, 3, false, {{"one", 1}}})); + CHECK(j == json({ "foo", 1, 2, 3, false, { { "one", 1 } } })); SaxEventLogger l; CHECK(json::sax_parse(s, &l)); CHECK(l.events.size() == 11); - CHECK(l.events == std::vector({"start_array()", - "string(foo)", - "number_unsigned(1)", - "number_unsigned(2)", - "number_unsigned(3)", - "boolean(false)", - "start_object()", - "key(one)", - "number_unsigned(1)", - "end_object()", - "end_array()"})); + CHECK(l.events == std::vector({ "start_array()", + "string(foo)", + "number_unsigned(1)", + "number_unsigned(2)", + "number_unsigned(3)", + "boolean(false)", + "start_object()", + "key(one)", + "number_unsigned(1)", + "end_object()", + "end_array()" })); } SECTION("string_t") @@ -277,22 +277,22 @@ TEST_CASE("deserialization") json::string_t const s = R"(["foo",1,2,3,false,{"one":1}])"; json j = json::parse(s); CHECK(json::accept(s)); - CHECK(j == json({"foo", 1, 2, 3, false, {{"one", 1}}})); + CHECK(j == json({ "foo", 1, 2, 3, false, { { "one", 1 } } })); SaxEventLogger l; CHECK(json::sax_parse(s, &l)); CHECK(l.events.size() == 11); - CHECK(l.events == std::vector({"start_array()", - "string(foo)", - "number_unsigned(1)", - "number_unsigned(2)", - "number_unsigned(3)", - "boolean(false)", - "start_object()", - "key(one)", - "number_unsigned(1)", - "end_object()", - "end_array()"})); + CHECK(l.events == std::vector({ "start_array()", + "string(foo)", + "number_unsigned(1)", + "number_unsigned(2)", + "number_unsigned(3)", + "boolean(false)", + "start_object()", + "key(one)", + "number_unsigned(1)", + "end_object()", + "end_array()" })); } SECTION("operator<<") @@ -301,7 +301,7 @@ TEST_CASE("deserialization") ss << R"(["foo",1,2,3,false,{"one":1}])"; json j; j << ss; - CHECK(j == json({"foo", 1, 2, 3, false, {{"one", 1}}})); + CHECK(j == json({ "foo", 1, 2, 3, false, { { "one", 1 } } })); } SECTION("operator>>") @@ -310,12 +310,12 @@ TEST_CASE("deserialization") ss << R"(["foo",1,2,3,false,{"one":1}])"; json j; ss >> j; - CHECK(j == json({"foo", 1, 2, 3, false, {{"one", 1}}})); + CHECK(j == json({ "foo", 1, 2, 3, false, { { "one", 1 } } })); } SECTION("user-defined string literal") { - CHECK("[\"foo\",1,2,3,false,{\"one\":1}]"_json == json({"foo", 1, 2, 3, false, {{"one", 1}}})); + CHECK("[\"foo\",1,2,3,false,{\"one\":1}]"_json == json({ "foo", 1, 2, 3, false, { { "one", 1 } } })); } } @@ -346,17 +346,17 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(ss5, &l)); CHECK(l.events.size() == 11); - CHECK(l.events == std::vector({"start_array()", - "string(foo)", - "number_unsigned(1)", - "number_unsigned(2)", - "number_unsigned(3)", - "boolean(false)", - "start_object()", - "key(one)", - "number_unsigned(1)", - "end_object()", - "parse_error(29)"})); + CHECK(l.events == std::vector({ "start_array()", + "string(foo)", + "number_unsigned(1)", + "number_unsigned(2)", + "number_unsigned(3)", + "boolean(false)", + "start_object()", + "key(one)", + "number_unsigned(1)", + "end_object()", + "parse_error(29)" })); } SECTION("string") @@ -376,17 +376,17 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(s, &l)); CHECK(l.events.size() == 11); - CHECK(l.events == std::vector({"start_array()", - "string(foo)", - "number_unsigned(1)", - "number_unsigned(2)", - "number_unsigned(3)", - "boolean(false)", - "start_object()", - "key(one)", - "number_unsigned(1)", - "end_object()", - "parse_error(29)"})); + CHECK(l.events == std::vector({ "start_array()", + "string(foo)", + "number_unsigned(1)", + "number_unsigned(2)", + "number_unsigned(3)", + "boolean(false)", + "start_object()", + "key(one)", + "number_unsigned(1)", + "end_object()", + "parse_error(29)" })); } SECTION("operator<<") @@ -426,38 +426,38 @@ TEST_CASE("deserialization") { SECTION("from std::vector") { - std::vector const v = {'t', 'r', 'u', 'e'}; + std::vector const v = { 't', 'r', 'u', 'e' }; CHECK(json::parse(v) == json(true)); CHECK(json::accept(v)); SaxEventLogger l; CHECK(json::sax_parse(v, &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("from std::array") { - std::array const v{{'t', 'r', 'u', 'e'}}; + std::array const v{ { 't', 'r', 'u', 'e' } }; CHECK(json::parse(v) == json(true)); CHECK(json::accept(v)); SaxEventLogger l; CHECK(json::sax_parse(v, &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("from array") { - uint8_t v[] = {'t', 'r', 'u', 'e'}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + uint8_t v[] = { 't', 'r', 'u', 'e' }; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) CHECK(json::parse(v) == json(true)); CHECK(json::accept(v)); SaxEventLogger l; CHECK(json::sax_parse(v, &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("from chars") @@ -474,33 +474,33 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(json::sax_parse(v, &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); delete[] v; // NOLINT(cppcoreguidelines-owning-memory) } SECTION("from std::string") { - std::string const v = {'t', 'r', 'u', 'e'}; + std::string const v = { 't', 'r', 'u', 'e' }; CHECK(json::parse(v) == json(true)); CHECK(json::accept(v)); SaxEventLogger l; CHECK(json::sax_parse(v, &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("from std::initializer_list") { - std::initializer_list const v = {'t', 'r', 'u', 'e'}; + std::initializer_list const v = { 't', 'r', 'u', 'e' }; CHECK(json::parse(v) == json(true)); CHECK(json::accept(v)); SaxEventLogger l; CHECK(json::sax_parse(v, &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("empty container") @@ -513,7 +513,7 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(v, &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(1)"})); + CHECK(l.events == std::vector({ "parse_error(1)" })); } } @@ -521,74 +521,74 @@ TEST_CASE("deserialization") { SECTION("from std::vector") { - std::vector v = {'t', 'r', 'u', 'e'}; + std::vector v = { 't', 'r', 'u', 'e' }; CHECK(json::parse(std::begin(v), std::end(v)) == json(true)); CHECK(json::accept(std::begin(v), std::end(v))); SaxEventLogger l; CHECK(json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("from std::array") { - std::array v{{'t', 'r', 'u', 'e'}}; + std::array v{ { 't', 'r', 'u', 'e' } }; CHECK(json::parse(std::begin(v), std::end(v)) == json(true)); CHECK(json::accept(std::begin(v), std::end(v))); SaxEventLogger l; CHECK(json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("from array") { - uint8_t v[] = {'t', 'r', 'u', 'e'}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + uint8_t v[] = { 't', 'r', 'u', 'e' }; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) CHECK(json::parse(std::begin(v), std::end(v)) == json(true)); CHECK(json::accept(std::begin(v), std::end(v))); SaxEventLogger l; CHECK(json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("from std::string") { - std::string v = {'t', 'r', 'u', 'e'}; + std::string v = { 't', 'r', 'u', 'e' }; CHECK(json::parse(std::begin(v), std::end(v)) == json(true)); CHECK(json::accept(std::begin(v), std::end(v))); SaxEventLogger l; CHECK(json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("from std::initializer_list") { - std::initializer_list const v = {'t', 'r', 'u', 'e'}; + std::initializer_list const v = { 't', 'r', 'u', 'e' }; CHECK(json::parse(std::begin(v), std::end(v)) == json(true)); CHECK(json::accept(std::begin(v), std::end(v))); SaxEventLogger l; CHECK(json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("from std::valarray") { - std::valarray v = {'t', 'r', 'u', 'e'}; + std::valarray v = { 't', 'r', 'u', 'e' }; CHECK(json::parse(std::begin(v), std::end(v)) == json(true)); CHECK(json::accept(std::begin(v), std::end(v))); SaxEventLogger l; CHECK(json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } SECTION("with empty range") @@ -601,7 +601,7 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(1)"})); + CHECK(l.events == std::vector({ "parse_error(1)" })); } SECTION("iterator_input_adapter advances iterators correctly") @@ -631,7 +631,7 @@ TEST_CASE("deserialization") { SECTION("case 1") { - std::array v = {{'\"', 'a', 'a', 'a', 'a', 'a', 'a', '\\', 'u'}}; + std::array v = { { '\"', 'a', 'a', 'a', 'a', 'a', 'a', '\\', 'u' } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -643,12 +643,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(10)"})); + CHECK(l.events == std::vector({ "parse_error(10)" })); } SECTION("case 2") { - std::array v = {{'\"', 'a', 'a', 'a', 'a', 'a', 'a', '\\', 'u', '1'}}; + std::array v = { { '\"', 'a', 'a', 'a', 'a', 'a', 'a', '\\', 'u', '1' } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -660,12 +660,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(11)"})); + CHECK(l.events == std::vector({ "parse_error(11)" })); } SECTION("case 3") { - std::array v = {{'\"', 'a', 'a', 'a', 'a', 'a', 'a', '\\', 'u', '1', '1', '1', '1', '1', '1', '1', '1'}}; + std::array v = { { '\"', 'a', 'a', 'a', 'a', 'a', 'a', '\\', 'u', '1', '1', '1', '1', '1', '1', '1', '1' } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -677,12 +677,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(18)"})); + CHECK(l.events == std::vector({ "parse_error(18)" })); } SECTION("case 4") { - std::array v = {{'\"', 'a', 'a', 'a', 'a', 'a', 'a', 'u', '1', '1', '1', '1', '1', '1', '1', '1', '\\'}}; + std::array v = { { '\"', 'a', 'a', 'a', 'a', 'a', 'a', 'u', '1', '1', '1', '1', '1', '1', '1', '1', '\\' } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -694,12 +694,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(18)"})); + CHECK(l.events == std::vector({ "parse_error(18)" })); } SECTION("case 5") { - std::array v = {{'\"', 0x7F, 0xC1}}; + std::array v = { { '\"', 0x7F, 0xC1 } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -711,12 +711,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(3)"})); + CHECK(l.events == std::vector({ "parse_error(3)" })); } SECTION("case 6") { - std::array v = {{'\"', 0x7F, 0xDF, 0x7F}}; + std::array v = { { '\"', 0x7F, 0xDF, 0x7F } }; json _; CHECK_THROWS_WITH_AS( _ = json::parse(std::begin(v), std::end(v)), @@ -731,12 +731,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 7") { - std::array v = {{'\"', 0x7F, 0xDF, 0xC0}}; + std::array v = { { '\"', 0x7F, 0xDF, 0xC0 } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -748,12 +748,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 8") { - std::array v = {{'\"', 0x7F, 0xE0, 0x9F}}; + std::array v = { { '\"', 0x7F, 0xE0, 0x9F } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -765,12 +765,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 9") { - std::array v = {{'\"', 0x7F, 0xEF, 0xC0}}; + std::array v = { { '\"', 0x7F, 0xEF, 0xC0 } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -782,12 +782,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 10") { - std::array v = {{'\"', 0x7F, 0xED, 0x7F}}; + std::array v = { { '\"', 0x7F, 0xED, 0x7F } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -799,12 +799,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 11") { - std::array v = {{'\"', 0x7F, 0xF0, 0x8F}}; + std::array v = { { '\"', 0x7F, 0xF0, 0x8F } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -816,12 +816,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 12") { - std::array v = {{'\"', 0x7F, 0xF0, 0xC0}}; + std::array v = { { '\"', 0x7F, 0xF0, 0xC0 } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -833,12 +833,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 13") { - std::array v = {{'\"', 0x7F, 0xF3, 0x7F}}; + std::array v = { { '\"', 0x7F, 0xF3, 0x7F } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -850,12 +850,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 14") { - std::array v = {{'\"', 0x7F, 0xF3, 0xC0}}; + std::array v = { { '\"', 0x7F, 0xF3, 0xC0 } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -867,12 +867,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 15") { - std::array v = {{'\"', 0x7F, 0xF4, 0x7F}}; + std::array v = { { '\"', 0x7F, 0xF4, 0x7F } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -884,12 +884,12 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("case 16") { - std::array v = {{'{', '\"', '\"', ':', '1', '1'}}; + std::array v = { { '{', '\"', '\"', ':', '1', '1' } }; json _; CHECK_THROWS_AS(_ = json::parse(std::begin(v), std::end(v)), json::parse_error&); CHECK(!json::accept(std::begin(v), std::end(v))); @@ -901,7 +901,7 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(std::begin(v), std::end(v), &l)); CHECK(l.events.size() == 4); - CHECK(l.events == std::vector({"start_object()", "key()", "number_unsigned(11)", "parse_error(7)"})); + CHECK(l.events == std::vector({ "start_object()", "key()", "number_unsigned(11)", "parse_error(7)" })); } } } @@ -926,7 +926,7 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(!json::sax_parse(bom, &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"parse_error(4)"})); + CHECK(l.events == std::vector({ "parse_error(4)" })); } SECTION("BOM and content") @@ -939,9 +939,9 @@ TEST_CASE("deserialization") CHECK(json::sax_parse(std::istringstream(bom + "1"), &l1)); CHECK(json::sax_parse(bom + "1", &l2)); CHECK(l1.events.size() == 1); - CHECK(l1.events == std::vector({"number_unsigned(1)"})); + CHECK(l1.events == std::vector({ "number_unsigned(1)" })); CHECK(l2.events.size() == 1); - CHECK(l2.events == std::vector({"number_unsigned(1)"})); + CHECK(l2.events == std::vector({ "number_unsigned(1)" })); } SECTION("2 byte of BOM") @@ -962,9 +962,9 @@ TEST_CASE("deserialization") CHECK(!json::sax_parse(std::istringstream(bom.substr(0, 2)), &l1)); CHECK(!json::sax_parse(bom.substr(0, 2), &l2)); CHECK(l1.events.size() == 1); - CHECK(l1.events == std::vector({"parse_error(3)"})); + CHECK(l1.events == std::vector({ "parse_error(3)" })); CHECK(l2.events.size() == 1); - CHECK(l2.events == std::vector({"parse_error(3)"})); + CHECK(l2.events == std::vector({ "parse_error(3)" })); } SECTION("1 byte of BOM") @@ -985,9 +985,9 @@ TEST_CASE("deserialization") CHECK(!json::sax_parse(std::istringstream(bom.substr(0, 1)), &l1)); CHECK(!json::sax_parse(bom.substr(0, 1), &l2)); CHECK(l1.events.size() == 1); - CHECK(l1.events == std::vector({"parse_error(2)"})); + CHECK(l1.events == std::vector({ "parse_error(2)" })); CHECK(l2.events.size() == 1); - CHECK(l2.events == std::vector({"parse_error(2)"})); + CHECK(l2.events == std::vector({ "parse_error(2)" })); } SECTION("variations") @@ -1019,7 +1019,7 @@ TEST_CASE("deserialization") SaxEventLogger l; CHECK(json::sax_parse(s + "null", &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"null()"})); + CHECK(l.events == std::vector({ "null()" })); } else { @@ -1034,15 +1034,15 @@ TEST_CASE("deserialization") if (i0 != 0) { - CHECK(l.events == std::vector({"parse_error(1)"})); + CHECK(l.events == std::vector({ "parse_error(1)" })); } else if (i1 != 0) { - CHECK(l.events == std::vector({"parse_error(2)"})); + CHECK(l.events == std::vector({ "parse_error(2)" })); } else { - CHECK(l.events == std::vector({"parse_error(3)"})); + CHECK(l.events == std::vector({ "parse_error(3)" })); } } } @@ -1072,43 +1072,47 @@ TEST_CASE("deserialization") json::sax_parse(s, &default_logger); CHECK(default_logger.events.size() == 14); - CHECK(default_logger.events == std::vector({"start_array()", - "number_unsigned(1)", - "start_array()", - "string(string)", - "number_float(43.12)", - "end_array()", - "null()", - "start_object()", - "key(key1)", - "boolean(true)", - "key(key2)", - "boolean(false)", - "end_object()", - "end_array()"})); + CHECK(default_logger.events == std::vector({ "start_array()", + "number_unsigned(1)", + "start_array()", + "string(string)", + "number_float(43.12)", + "end_array()", + "null()", + "start_object()", + "key(key1)", + "boolean(true)", + "key(key2)", + "boolean(false)", + "end_object()", + "end_array()" })); json::sax_parse(s, &exit_after_start_object); CHECK(exit_after_start_object.events.size() == 8); - CHECK( - exit_after_start_object.events == - std::vector( - {"start_array()", "number_unsigned(1)", "start_array()", "string(string)", "number_float(43.12)", "end_array()", "null()", "start_object()"})); + CHECK(exit_after_start_object.events == std::vector({ "start_array()", + "number_unsigned(1)", + "start_array()", + "string(string)", + "number_float(43.12)", + "end_array()", + "null()", + "start_object()" })); json::sax_parse(s, &exit_after_key); CHECK(exit_after_key.events.size() == 9); - CHECK(exit_after_key.events == std::vector({"start_array()", - "number_unsigned(1)", - "start_array()", - "string(string)", - "number_float(43.12)", - "end_array()", - "null()", - "start_object()", - "key(key1)"})); + CHECK(exit_after_key.events == std::vector({ "start_array()", + "number_unsigned(1)", + "start_array()", + "string(string)", + "number_float(43.12)", + "end_array()", + "null()", + "start_object()", + "key(key1)" })); json::sax_parse(s, &exit_after_start_array); CHECK(exit_after_start_array.events.size() == 1); - CHECK(exit_after_start_array.events == std::vector({"start_array()"})); + CHECK(exit_after_start_array.events == std::vector({ "start_array()" })); } SECTION("JSON Lines") @@ -1169,21 +1173,22 @@ TEST_CASE_TEMPLATE("deserialization of different character types (ASCII)", std::int32_t, std::uint32_t) { - std::vector const v = {'t', 'r', 'u', 'e'}; + std::vector const v = { 't', 'r', 'u', 'e' }; CHECK(json::parse(v) == json(true)); CHECK(json::accept(v)); SaxEventLogger l; CHECK(json::sax_parse(v, &l)); CHECK(l.events.size() == 1); - CHECK(l.events == std::vector({"boolean(true)"})); + CHECK(l.events == std::vector({ "boolean(true)" })); } TEST_CASE_TEMPLATE("deserialization of different character types (UTF-8)", T, char, unsigned char, std::uint8_t) { // a star emoji - std::vector const v = - {'"', static_cast(0xe2u), static_cast(0xadu), static_cast(0x90u), static_cast(0xefu), static_cast(0xb8u), static_cast(0x8fu), '"'}; + std::vector const v = { + '"', static_cast(0xe2u), static_cast(0xadu), static_cast(0x90u), static_cast(0xefu), static_cast(0xb8u), static_cast(0x8fu), '"' + }; CHECK(json::parse(v).dump(-1, ' ', true) == "\"\\u2b50\\ufe0f\""); CHECK(json::accept(v)); @@ -1195,7 +1200,7 @@ TEST_CASE_TEMPLATE("deserialization of different character types (UTF-8)", T, ch TEST_CASE_TEMPLATE("deserialization of different character types (UTF-16)", T, char16_t, std::uint16_t) { // a star emoji - std::vector const v = {static_cast('"'), static_cast(0x2b50), static_cast(0xfe0f), static_cast('"')}; + std::vector const v = { static_cast('"'), static_cast(0x2b50), static_cast(0xfe0f), static_cast('"') }; CHECK(json::parse(v).dump(-1, ' ', true) == "\"\\u2b50\\ufe0f\""); CHECK(json::accept(v)); @@ -1207,7 +1212,7 @@ TEST_CASE_TEMPLATE("deserialization of different character types (UTF-16)", T, c TEST_CASE_TEMPLATE("deserialization of different character types (UTF-32)", T, char32_t, std::uint32_t) { // a star emoji - std::vector const v = {static_cast('"'), static_cast(0x2b50), static_cast(0xfe0f), static_cast('"')}; + std::vector const v = { static_cast('"'), static_cast(0x2b50), static_cast(0xfe0f), static_cast('"') }; CHECK(json::parse(v).dump(-1, ' ', true) == "\"\\u2b50\\ufe0f\""); CHECK(json::accept(v)); diff --git a/tests/src/unit-diagnostics.cpp b/tests/src/unit-diagnostics.cpp index 8c79a54b4..97445bc39 100644 --- a/tests/src/unit-diagnostics.cpp +++ b/tests/src/unit-diagnostics.cpp @@ -90,8 +90,8 @@ TEST_CASE("Better diagnostics") SECTION("Wrong type in update()") { - json j = {{"foo", "bar"}}; - json k = {{"bla", 1}}; + json j = { { "foo", "bar" } }; + json k = { { "bla", 1 } }; CHECK_THROWS_WITH_AS(j.update(k["bla"].begin(), k["bla"].end()), "[json.exception.type_error.312] (/bla) cannot use update() with number", @@ -104,14 +104,14 @@ TEST_CASE("Regression tests for extended diagnostics") { SECTION("Regression test for https://github.com/nlohmann/json/pull/2562#pullrequestreview-574858448") { - CHECK_THROWS_WITH_AS(json({"0", "0"})[1].get(), "[json.exception.type_error.302] (/1) type must be number, but is string", json::type_error); - CHECK_THROWS_WITH_AS(json({"0", "1"})[1].get(), "[json.exception.type_error.302] (/1) type must be number, but is string", json::type_error); + CHECK_THROWS_WITH_AS(json({ "0", "0" })[1].get(), "[json.exception.type_error.302] (/1) type must be number, but is string", json::type_error); + CHECK_THROWS_WITH_AS(json({ "0", "1" })[1].get(), "[json.exception.type_error.302] (/1) type must be number, but is string", json::type_error); } SECTION("Regression test for https://github.com/nlohmann/json/pull/2562/files/380a613f2b5d32425021129cd1f371ddcfd54ddf#r563259793") { json j; - j["/foo"] = {1, 2, 3}; + j["/foo"] = { 1, 2, 3 }; CHECK_THROWS_WITH_AS(j.unflatten(), "[json.exception.type_error.315] (/~1foo) values in object must be primitive", json::type_error); } @@ -173,7 +173,7 @@ TEST_CASE("Regression tests for extended diagnostics") // iterator insert(const_iterator pos, const_iterator first, const_iterator last) { json j_arr = json::array(); - json j_objects = {json::object(), json::object()}; + json j_objects = { json::object(), json::object() }; j_arr.insert(j_arr.begin(), j_objects.begin(), j_objects.end()); json j_obj = json::object(); j_obj["key"] = j_arr; diff --git a/tests/src/unit-element_access1.cpp b/tests/src/unit-element_access1.cpp index 0534c2fc4..c9fd52f5a 100644 --- a/tests/src/unit-element_access1.cpp +++ b/tests/src/unit-element_access1.cpp @@ -16,7 +16,7 @@ TEST_CASE("element access 1") { SECTION("array") { - json j = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json j = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; const json j_const = j; SECTION("access specified element with bounds checking") @@ -30,7 +30,7 @@ TEST_CASE("element access 1") CHECK(j.at(4) == json("string")); CHECK(j.at(5) == json(42.23)); CHECK(j.at(6) == json::object()); - CHECK(j.at(7) == json({1, 2, 3})); + CHECK(j.at(7) == json({ 1, 2, 3 })); CHECK(j_const.at(0) == json(1)); CHECK(j_const.at(1) == json(1u)); @@ -39,7 +39,7 @@ TEST_CASE("element access 1") CHECK(j_const.at(4) == json("string")); CHECK(j_const.at(5) == json(42.23)); CHECK(j_const.at(6) == json::object()); - CHECK(j_const.at(7) == json({1, 2, 3})); + CHECK(j_const.at(7) == json({ 1, 2, 3 })); } SECTION("access outside bounds") @@ -119,8 +119,8 @@ TEST_CASE("element access 1") { CHECK(j.front() == json(1)); CHECK(j_const.front() == json(1)); - CHECK(j.back() == json({1, 2, 3})); - CHECK(j_const.back() == json({1, 2, 3})); + CHECK(j.back() == json({ 1, 2, 3 })); + CHECK(j_const.back() == json({ 1, 2, 3 })); } SECTION("access specified element") @@ -134,7 +134,7 @@ TEST_CASE("element access 1") CHECK(j[4] == json("string")); CHECK(j[5] == json(42.23)); CHECK(j[6] == json::object()); - CHECK(j[7] == json({1, 2, 3})); + CHECK(j[7] == json({ 1, 2, 3 })); CHECK(j_const[0] == json(1)); CHECK(j_const[1] == json(1u)); @@ -143,7 +143,7 @@ TEST_CASE("element access 1") CHECK(j_const[4] == json("string")); CHECK(j_const[5] == json(42.23)); CHECK(j_const[6] == json::object()); - CHECK(j_const[7] == json({1, 2, 3})); + CHECK(j_const[7] == json({ 1, 2, 3 })); } SECTION("access on non-array type") @@ -164,7 +164,7 @@ TEST_CASE("element access 1") { json j_nonarray; j_nonarray[3] = 42; - CHECK(j_nonarray == json({nullptr, nullptr, nullptr, 42})); + CHECK(j_nonarray == json({ nullptr, nullptr, nullptr, 42 })); } } @@ -247,47 +247,47 @@ TEST_CASE("element access 1") SECTION("remove element by index") { { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; jarray.erase(0); - CHECK(jarray == json({1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } })); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; jarray.erase(1); - CHECK(jarray == json({1, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } })); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; jarray.erase(2); - CHECK(jarray == json({1, 1u, nullptr, "string", 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } })); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; jarray.erase(3); - CHECK(jarray == json({1, 1u, true, "string", 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, "string", 42.23, json::object(), { 1, 2, 3 } })); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; jarray.erase(4); - CHECK(jarray == json({1, 1u, true, nullptr, 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, nullptr, 42.23, json::object(), { 1, 2, 3 } })); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; jarray.erase(5); - CHECK(jarray == json({1, 1u, true, nullptr, "string", json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, nullptr, "string", json::object(), { 1, 2, 3 } })); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; jarray.erase(6); - CHECK(jarray == json({1, 1u, true, nullptr, "string", 42.23, {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, nullptr, "string", 42.23, { 1, 2, 3 } })); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; jarray.erase(7); - CHECK(jarray == json({1, 1u, true, nullptr, "string", 42.23, json::object()})); + CHECK(jarray == json({ 1, 1u, true, nullptr, "string", 42.23, json::object() })); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; CHECK_THROWS_WITH_AS(jarray.erase(8), "[json.exception.out_of_range.401] array index 8 is out of range", json::out_of_range&); } } @@ -297,15 +297,15 @@ TEST_CASE("element access 1") SECTION("erase(begin())") { { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::iterator const it2 = jarray.erase(jarray.begin()); - CHECK(jarray == json({1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } })); CHECK(*it2 == json(1u)); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::const_iterator const it2 = jarray.erase(jarray.cbegin()); - CHECK(jarray == json({1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } })); CHECK(*it2 == json(1u)); } } @@ -313,13 +313,13 @@ TEST_CASE("element access 1") SECTION("erase(begin(), end())") { { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::iterator it2 = jarray.erase(jarray.begin(), jarray.end()); CHECK(jarray == json::array()); CHECK(it2 == jarray.end()); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::const_iterator it2 = jarray.erase(jarray.cbegin(), jarray.cend()); CHECK(jarray == json::array()); CHECK(it2 == jarray.cend()); @@ -329,15 +329,15 @@ TEST_CASE("element access 1") SECTION("erase(begin(), begin())") { { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::iterator const it2 = jarray.erase(jarray.begin(), jarray.begin()); - CHECK(jarray == json({1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } })); CHECK(*it2 == json(1)); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::const_iterator const it2 = jarray.erase(jarray.cbegin(), jarray.cbegin()); - CHECK(jarray == json({1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } })); CHECK(*it2 == json(1)); } } @@ -345,17 +345,17 @@ TEST_CASE("element access 1") SECTION("erase at offset") { { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::iterator const it = jarray.begin() + 4; json::iterator const it2 = jarray.erase(it); - CHECK(jarray == json({1, 1u, true, nullptr, 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, nullptr, 42.23, json::object(), { 1, 2, 3 } })); CHECK(*it2 == json(42.23)); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::const_iterator const it = jarray.cbegin() + 4; json::const_iterator const it2 = jarray.erase(it); - CHECK(jarray == json({1, 1u, true, nullptr, 42.23, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, nullptr, 42.23, json::object(), { 1, 2, 3 } })); CHECK(*it2 == json(42.23)); } } @@ -363,15 +363,15 @@ TEST_CASE("element access 1") SECTION("erase subrange") { { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::iterator const it2 = jarray.erase(jarray.begin() + 3, jarray.begin() + 6); - CHECK(jarray == json({1, 1u, true, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, json::object(), { 1, 2, 3 } })); CHECK(*it2 == json::object()); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; json::const_iterator const it2 = jarray.erase(jarray.cbegin() + 3, jarray.cbegin() + 6); - CHECK(jarray == json({1, 1u, true, json::object(), {1, 2, 3}})); + CHECK(jarray == json({ 1, 1u, true, json::object(), { 1, 2, 3 } })); CHECK(*it2 == json::object()); } } @@ -379,8 +379,8 @@ TEST_CASE("element access 1") SECTION("different arrays") { { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; - json jarray2 = {"foo", "bar"}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; + json jarray2 = { "foo", "bar" }; CHECK_THROWS_WITH_AS(jarray.erase(jarray2.begin()), "[json.exception.invalid_iterator.202] iterator does not fit current value", @@ -396,8 +396,8 @@ TEST_CASE("element access 1") json::invalid_iterator&); } { - json jarray = {1, 1u, true, nullptr, "string", 42.23, json::object(), {1, 2, 3}}; - json const jarray2 = {"foo", "bar"}; + json jarray = { 1, 1u, true, nullptr, "string", 42.23, json::object(), { 1, 2, 3 } }; + json const jarray2 = { "foo", "bar" }; CHECK_THROWS_WITH_AS(jarray.erase(jarray2.cbegin()), "[json.exception.invalid_iterator.202] iterator does not fit current value", @@ -648,13 +648,13 @@ TEST_CASE("element access 1") SECTION("binary") { { - json j = json::binary({1, 2, 3}); + json j = json::binary({ 1, 2, 3 }); json::iterator it = j.erase(j.begin()); CHECK(j.type() == json::value_t::null); CHECK(it == j.end()); } { - json j = json::binary({1, 2, 3}); + json j = json::binary({ 1, 2, 3 }); json::const_iterator it = j.erase(j.cbegin()); CHECK(j.type() == json::value_t::null); CHECK(it == j.end()); @@ -822,13 +822,13 @@ TEST_CASE("element access 1") SECTION("binary") { { - json j = json::binary({1, 2, 3}); + json j = json::binary({ 1, 2, 3 }); json::iterator it = j.erase(j.begin(), j.end()); CHECK(j.type() == json::value_t::null); CHECK(it == j.end()); } { - json j = json::binary({1, 2, 3}); + json j = json::binary({ 1, 2, 3 }); json::const_iterator it = j.erase(j.cbegin(), j.cend()); CHECK(j.type() == json::value_t::null); CHECK(it == j.end()); diff --git a/tests/src/unit-element_access2.cpp b/tests/src/unit-element_access2.cpp index 9bdbd7fe9..77ca44a2f 100644 --- a/tests/src/unit-element_access2.cpp +++ b/tests/src/unit-element_access2.cpp @@ -21,14 +21,8 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j { SECTION("object") { - Json j = {{"integer", 1}, - {"unsigned", 1u}, - {"floating", 42.23}, - {"null", nullptr}, - {"string", "hello world"}, - {"boolean", true}, - {"object", Json::object()}, - {"array", {1, 2, 3}}}; + Json j = { { "integer", 1 }, { "unsigned", 1u }, { "floating", 42.23 }, { "null", nullptr }, { "string", "hello world" }, + { "boolean", true }, { "object", Json::object() }, { "array", { 1, 2, 3 } } }; const Json j_const = j; SECTION("access specified element with bounds checking") @@ -42,7 +36,7 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j.at("string") == Json("hello world")); CHECK(j.at("floating") == Json(42.23)); CHECK(j.at("object") == Json::object()); - CHECK(j.at("array") == Json({1, 2, 3})); + CHECK(j.at("array") == Json({ 1, 2, 3 })); CHECK(j_const.at("integer") == Json(1)); CHECK(j_const.at("unsigned") == Json(1u)); @@ -51,7 +45,7 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j_const.at("string") == Json("hello world")); CHECK(j_const.at("floating") == Json(42.23)); CHECK(j_const.at("object") == Json::object()); - CHECK(j_const.at("array") == Json({1, 2, 3})); + CHECK(j_const.at("array") == Json({ 1, 2, 3 })); #ifdef JSON_HAS_CPP_17 CHECK(j.at(std::string_view("integer")) == Json(1)); @@ -61,7 +55,7 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j.at(std::string_view("string")) == Json("hello world")); CHECK(j.at(std::string_view("floating")) == Json(42.23)); CHECK(j.at(std::string_view("object")) == Json::object()); - CHECK(j.at(std::string_view("array")) == Json({1, 2, 3})); + CHECK(j.at(std::string_view("array")) == Json({ 1, 2, 3 })); CHECK(j_const.at(std::string_view("integer")) == Json(1)); CHECK(j_const.at(std::string_view("unsigned")) == Json(1u)); @@ -70,7 +64,7 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j_const.at(std::string_view("string")) == Json("hello world")); CHECK(j_const.at(std::string_view("floating")) == Json(42.23)); CHECK(j_const.at(std::string_view("object")) == Json::object()); - CHECK(j_const.at(std::string_view("array")) == Json({1, 2, 3})); + CHECK(j_const.at(std::string_view("array")) == Json({ 1, 2, 3 })); #endif } @@ -236,8 +230,8 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j.value("string", std::string("bar")) == "hello world"); CHECK(j.value("floating", 12.34) == Approx(42.23)); CHECK(j.value("floating", 12) == 42); - CHECK(j.value("object", Json({{"foo", "bar"}})) == Json::object()); - CHECK(j.value("array", Json({10, 100})) == Json({1, 2, 3})); + CHECK(j.value("object", Json({ { "foo", "bar" } })) == Json::object()); + CHECK(j.value("array", Json({ 10, 100 })) == Json({ 1, 2, 3 })); CHECK(j_const.value("integer", 2) == 1); CHECK(j_const.value("integer", 1.0) == Approx(1)); @@ -248,8 +242,8 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j_const.value("string", std::string("bar")) == "hello world"); CHECK(j_const.value("floating", 12.34) == Approx(42.23)); CHECK(j_const.value("floating", 12) == 42); - CHECK(j_const.value("object", Json({{"foo", "bar"}})) == Json::object()); - CHECK(j_const.value("array", Json({10, 100})) == Json({1, 2, 3})); + CHECK(j_const.value("object", Json({ { "foo", "bar" } })) == Json::object()); + CHECK(j_const.value("array", Json({ 10, 100 })) == Json({ 1, 2, 3 })); #ifdef JSON_HAS_CPP_17 CHECK(j.value(std::string_view("integer"), 2) == 1); @@ -262,8 +256,8 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j.value(std::string_view("string"), std::string("bar")) == "hello world"); CHECK(j.value(std::string_view("floating"), 12.34) == Approx(42.23)); CHECK(j.value(std::string_view("floating"), 12) == 42); - CHECK(j.value(std::string_view("object"), Json({{"foo", "bar"}})) == Json::object()); - CHECK(j.value(std::string_view("array"), Json({10, 100})) == Json({1, 2, 3})); + CHECK(j.value(std::string_view("object"), Json({ { "foo", "bar" } })) == Json::object()); + CHECK(j.value(std::string_view("array"), Json({ 10, 100 })) == Json({ 1, 2, 3 })); CHECK(j_const.value(std::string_view("integer"), 2) == 1); CHECK(j_const.value(std::string_view("integer"), 1.0) == Approx(1)); @@ -274,8 +268,8 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j_const.value(std::string_view("string"), std::string("bar")) == "hello world"); CHECK(j_const.value(std::string_view("floating"), 12.34) == Approx(42.23)); CHECK(j_const.value(std::string_view("floating"), 12) == 42); - CHECK(j_const.value(std::string_view("object"), Json({{"foo", "bar"}})) == Json::object()); - CHECK(j_const.value(std::string_view("array"), Json({10, 100})) == Json({1, 2, 3})); + CHECK(j_const.value(std::string_view("object"), Json({ { "foo", "bar" } })) == Json::object()); + CHECK(j_const.value(std::string_view("array"), Json({ 10, 100 })) == Json({ 1, 2, 3 })); #endif } @@ -286,16 +280,16 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j.value("_", false) == false); CHECK(j.value("_", "bar") == "bar"); CHECK(j.value("_", 12.34) == Approx(12.34)); - CHECK(j.value("_", Json({{"foo", "bar"}})) == Json({{"foo", "bar"}})); - CHECK(j.value("_", Json({10, 100})) == Json({10, 100})); + CHECK(j.value("_", Json({ { "foo", "bar" } })) == Json({ { "foo", "bar" } })); + CHECK(j.value("_", Json({ 10, 100 })) == Json({ 10, 100 })); CHECK(j_const.value("_", 2) == 2); CHECK(j_const.value("_", 2u) == 2u); CHECK(j_const.value("_", false) == false); CHECK(j_const.value("_", "bar") == "bar"); CHECK(j_const.value("_", 12.34) == Approx(12.34)); - CHECK(j_const.value("_", Json({{"foo", "bar"}})) == Json({{"foo", "bar"}})); - CHECK(j_const.value("_", Json({10, 100})) == Json({10, 100})); + CHECK(j_const.value("_", Json({ { "foo", "bar" } })) == Json({ { "foo", "bar" } })); + CHECK(j_const.value("_", Json({ 10, 100 })) == Json({ 10, 100 })); #ifdef JSON_HAS_CPP_17 CHECK(j.value(std::string_view("_"), 2) == 2); @@ -303,16 +297,16 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j.value(std::string_view("_"), false) == false); CHECK(j.value(std::string_view("_"), "bar") == "bar"); CHECK(j.value(std::string_view("_"), 12.34) == Approx(12.34)); - CHECK(j.value(std::string_view("_"), Json({{"foo", "bar"}})) == Json({{"foo", "bar"}})); - CHECK(j.value(std::string_view("_"), Json({10, 100})) == Json({10, 100})); + CHECK(j.value(std::string_view("_"), Json({ { "foo", "bar" } })) == Json({ { "foo", "bar" } })); + CHECK(j.value(std::string_view("_"), Json({ 10, 100 })) == Json({ 10, 100 })); CHECK(j_const.value(std::string_view("_"), 2) == 2); CHECK(j_const.value(std::string_view("_"), 2u) == 2u); CHECK(j_const.value(std::string_view("_"), false) == false); CHECK(j_const.value(std::string_view("_"), "bar") == "bar"); CHECK(j_const.value(std::string_view("_"), 12.34) == Approx(12.34)); - CHECK(j_const.value(std::string_view("_"), Json({{"foo", "bar"}})) == Json({{"foo", "bar"}})); - CHECK(j_const.value(std::string_view("_"), Json({10, 100})) == Json({10, 100})); + CHECK(j_const.value(std::string_view("_"), Json({ { "foo", "bar" } })) == Json({ { "foo", "bar" } })); + CHECK(j_const.value(std::string_view("_"), Json({ 10, 100 })) == Json({ 10, 100 })); #endif } @@ -481,8 +475,8 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j.value("/string"_json_pointer, std::string("bar")) == "hello world"); CHECK(j.value("/floating"_json_pointer, 12.34) == Approx(42.23)); CHECK(j.value("/floating"_json_pointer, 12) == 42); - CHECK(j.value("/object"_json_pointer, Json({{"foo", "bar"}})) == Json::object()); - CHECK(j.value("/array"_json_pointer, Json({10, 100})) == Json({1, 2, 3})); + CHECK(j.value("/object"_json_pointer, Json({ { "foo", "bar" } })) == Json::object()); + CHECK(j.value("/array"_json_pointer, Json({ 10, 100 })) == Json({ 1, 2, 3 })); CHECK(j_const.value("/integer"_json_pointer, 2) == 1); CHECK(j_const.value("/integer"_json_pointer, 1.0) == Approx(1)); @@ -493,8 +487,8 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j CHECK(j_const.value("/string"_json_pointer, std::string("bar")) == "hello world"); CHECK(j_const.value("/floating"_json_pointer, 12.34) == Approx(42.23)); CHECK(j_const.value("/floating"_json_pointer, 12) == 42); - CHECK(j_const.value("/object"_json_pointer, Json({{"foo", "bar"}})) == Json::object()); - CHECK(j_const.value("/array"_json_pointer, Json({10, 100})) == Json({1, 2, 3})); + CHECK(j_const.value("/object"_json_pointer, Json({ { "foo", "bar" } })) == Json::object()); + CHECK(j_const.value("/array"_json_pointer, Json({ 10, 100 })) == Json({ 1, 2, 3 })); } SECTION("access on non-object type") @@ -586,7 +580,7 @@ TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_j } } - SECTION("non-const operator[]"){{Json j_null; + SECTION("non-const operator[]"){ { Json j_null; CHECK(j_null.is_null()); j_null["key"] = 1; CHECK(j_null.is_object()); @@ -616,14 +610,14 @@ SECTION("front and back") CHECK(j.front() == Json(1)); CHECK(j_const.front() == Json(1)); // "array" is last key - CHECK(j.back() == Json({1, 2, 3})); - CHECK(j_const.back() == Json({1, 2, 3})); + CHECK(j.back() == Json({ 1, 2, 3 })); + CHECK(j_const.back() == Json({ 1, 2, 3 })); } else { // "array" is the smallest key - CHECK(j.front() == Json({1, 2, 3})); - CHECK(j_const.front() == Json({1, 2, 3})); + CHECK(j.front() == Json({ 1, 2, 3 })); + CHECK(j_const.front() == Json({ 1, 2, 3 })); // "unsigned" is the largest key CHECK(j.back() == Json(1u)); CHECK(j_const.back() == Json(1u)); @@ -655,7 +649,7 @@ SECTION("access specified element") CHECK(j["object"] == Json::object()); CHECK(j[typename Json::object_t::key_type("object")] == j["object"]); - CHECK(j["array"] == Json({1, 2, 3})); + CHECK(j["array"] == Json({ 1, 2, 3 })); CHECK(j[typename Json::object_t::key_type("array")] == j["array"]); CHECK(j_const["integer"] == Json(1)); @@ -676,7 +670,7 @@ SECTION("access specified element") CHECK(j_const["object"] == Json::object()); CHECK(j_const[typename Json::object_t::key_type("object")] == j["object"]); - CHECK(j_const["array"] == Json({1, 2, 3})); + CHECK(j_const["array"] == Json({ 1, 2, 3 })); CHECK(j_const[typename Json::object_t::key_type("array")] == j["array"]); } @@ -704,7 +698,7 @@ SECTION("access specified element") CHECK(j["object"] == Json::object()); CHECK(j[std::string_view("object")] == j["object"]); - CHECK(j["array"] == Json({1, 2, 3})); + CHECK(j["array"] == Json({ 1, 2, 3 })); CHECK(j[std::string_view("array")] == j["array"]); CHECK(j_const["integer"] == Json(1)); @@ -725,7 +719,7 @@ SECTION("access specified element") CHECK(j_const["object"] == Json::object()); CHECK(j_const[std::string_view("object")] == j["object"]); - CHECK(j_const["array"] == Json({1, 2, 3})); + CHECK(j_const["array"] == Json({ 1, 2, 3 })); CHECK(j_const[std::string_view("array")] == j["array"]); } #endif @@ -1014,15 +1008,15 @@ SECTION("remove specified element") SECTION("erase(begin())") { { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; typename Json::iterator const it2 = jobject.erase(jobject.begin()); - CHECK(jobject == Json({{"b", 1}, {"c", 17u}})); + CHECK(jobject == Json({ { "b", 1 }, { "c", 17u } })); CHECK(*it2 == Json(1)); } { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; typename Json::const_iterator const it2 = jobject.erase(jobject.cbegin()); - CHECK(jobject == Json({{"b", 1}, {"c", 17u}})); + CHECK(jobject == Json({ { "b", 1 }, { "c", 17u } })); CHECK(*it2 == Json(1)); } } @@ -1030,13 +1024,13 @@ SECTION("remove specified element") SECTION("erase(begin(), end())") { { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; typename Json::iterator it2 = jobject.erase(jobject.begin(), jobject.end()); CHECK(jobject == Json::object()); CHECK(it2 == jobject.end()); } { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; typename Json::const_iterator it2 = jobject.erase(jobject.cbegin(), jobject.cend()); CHECK(jobject == Json::object()); CHECK(it2 == jobject.cend()); @@ -1046,15 +1040,15 @@ SECTION("remove specified element") SECTION("erase(begin(), begin())") { { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; typename Json::iterator const it2 = jobject.erase(jobject.begin(), jobject.begin()); - CHECK(jobject == Json({{"a", "a"}, {"b", 1}, {"c", 17u}})); + CHECK(jobject == Json({ { "a", "a" }, { "b", 1 }, { "c", 17u } })); CHECK(*it2 == Json("a")); } { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; typename Json::const_iterator const it2 = jobject.erase(jobject.cbegin(), jobject.cbegin()); - CHECK(jobject == Json({{"a", "a"}, {"b", 1}, {"c", 17u}})); + CHECK(jobject == Json({ { "a", "a" }, { "b", 1 }, { "c", 17u } })); CHECK(*it2 == Json("a")); } } @@ -1062,17 +1056,17 @@ SECTION("remove specified element") SECTION("erase at offset") { { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; typename Json::iterator const it = jobject.find("b"); typename Json::iterator const it2 = jobject.erase(it); - CHECK(jobject == Json({{"a", "a"}, {"c", 17u}})); + CHECK(jobject == Json({ { "a", "a" }, { "c", 17u } })); CHECK(*it2 == Json(17)); } { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; typename Json::const_iterator const it = jobject.find("b"); typename Json::const_iterator const it2 = jobject.erase(it); - CHECK(jobject == Json({{"a", "a"}, {"c", 17u}})); + CHECK(jobject == Json({ { "a", "a" }, { "c", 17u } })); CHECK(*it2 == Json(17)); } } @@ -1080,15 +1074,15 @@ SECTION("remove specified element") SECTION("erase subrange") { { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}, {"d", false}, {"e", true}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u }, { "d", false }, { "e", true } }; typename Json::iterator const it2 = jobject.erase(jobject.find("b"), jobject.find("e")); - CHECK(jobject == Json({{"a", "a"}, {"e", true}})); + CHECK(jobject == Json({ { "a", "a" }, { "e", true } })); CHECK(*it2 == Json(true)); } { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}, {"d", false}, {"e", true}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u }, { "d", false }, { "e", true } }; typename Json::const_iterator const it2 = jobject.erase(jobject.find("b"), jobject.find("e")); - CHECK(jobject == Json({{"a", "a"}, {"e", true}})); + CHECK(jobject == Json({ { "a", "a" }, { "e", true } })); CHECK(*it2 == Json(true)); } } @@ -1096,8 +1090,8 @@ SECTION("remove specified element") SECTION("different objects") { { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}, {"d", false}, {"e", true}}; - Json jobject2 = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u }, { "d", false }, { "e", true } }; + Json jobject2 = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; CHECK_THROWS_WITH_AS(jobject.erase(jobject2.begin()), "[json.exception.invalid_iterator.202] iterator does not fit current value", typename Json::invalid_iterator&); @@ -1112,8 +1106,8 @@ SECTION("remove specified element") typename Json::invalid_iterator&); } { - Json jobject = {{"a", "a"}, {"b", 1}, {"c", 17u}, {"d", false}, {"e", true}}; - Json jobject2 = {{"a", "a"}, {"b", 1}, {"c", 17u}}; + Json jobject = { { "a", "a" }, { "b", 1 }, { "c", 17u }, { "d", false }, { "e", true } }; + Json jobject2 = { { "a", "a" }, { "b", 1 }, { "c", 17u } }; CHECK_THROWS_WITH_AS(jobject.erase(jobject2.cbegin()), "[json.exception.invalid_iterator.202] iterator does not fit current value", typename Json::invalid_iterator&); @@ -1210,7 +1204,7 @@ SECTION("find an element in an object") { SECTION("existing element") { - for (const auto* key : {"integer", "unsigned", "floating", "null", "string", "boolean", "object", "array"}) + for (const auto* key : { "integer", "unsigned", "floating", "null", "string", "boolean", "object", "array" }) { CHECK(j.find(key) != j.end()); CHECK(*j.find(key) == j.at(key)); @@ -1218,7 +1212,7 @@ SECTION("find an element in an object") CHECK(*j_const.find(key) == j_const.at(key)); } #ifdef JSON_HAS_CPP_17 - for (const std::string_view key : {"integer", "unsigned", "floating", "null", "string", "boolean", "object", "array"}) + for (const std::string_view key : { "integer", "unsigned", "floating", "null", "string", "boolean", "object", "array" }) { CHECK(j.find(key) != j.end()); CHECK(*j.find(key) == j.at(key)); @@ -1359,13 +1353,13 @@ SECTION("count keys in an object") { SECTION("existing element") { - for (const auto* key : {"integer", "unsigned", "floating", "null", "string", "boolean", "object", "array"}) + for (const auto* key : { "integer", "unsigned", "floating", "null", "string", "boolean", "object", "array" }) { CHECK(j.count(key) == 1); CHECK(j_const.count(key) == 1); } #ifdef JSON_HAS_CPP_17 - for (const std::string_view key : {"integer", "unsigned", "floating", "null", "string", "boolean", "object", "array"}) + for (const std::string_view key : { "integer", "unsigned", "floating", "null", "string", "boolean", "object", "array" }) { CHECK(j.count(key) == 1); CHECK(j_const.count(key) == 1); @@ -1504,14 +1498,14 @@ SECTION("check existence of key in an object") { SECTION("existing element") { - for (const auto* key : {"integer", "unsigned", "floating", "null", "string", "boolean", "object", "array"}) + for (const auto* key : { "integer", "unsigned", "floating", "null", "string", "boolean", "object", "array" }) { CHECK(j.contains(key) == true); CHECK(j_const.contains(key) == true); } #ifdef JSON_HAS_CPP_17 - for (const std::string_view key : {"integer", "unsigned", "floating", "null", "string", "boolean", "object", "array"}) + for (const std::string_view key : { "integer", "unsigned", "floating", "null", "string", "boolean", "object", "array" }) { CHECK(j.contains(key) == true); CHECK(j_const.contains(key) == true); @@ -1651,22 +1645,10 @@ TEST_CASE_TEMPLATE("element access 2 (throwing tests)", Json, nlohmann::json, nl { SECTION("object") { - Json j = {{"integer", 1}, - {"unsigned", 1u}, - {"floating", 42.23}, - {"null", nullptr}, - {"string", "hello world"}, - {"boolean", true}, - {"object", Json::object()}, - {"array", {1, 2, 3}}}; - const Json j_const = {{"integer", 1}, - {"unsigned", 1u}, - {"floating", 42.23}, - {"null", nullptr}, - {"string", "hello world"}, - {"boolean", true}, - {"object", Json::object()}, - {"array", {1, 2, 3}}}; + Json j = { { "integer", 1 }, { "unsigned", 1u }, { "floating", 42.23 }, { "null", nullptr }, { "string", "hello world" }, + { "boolean", true }, { "object", Json::object() }, { "array", { 1, 2, 3 } } }; + const Json j_const = { { "integer", 1 }, { "unsigned", 1u }, { "floating", 42.23 }, { "null", nullptr }, { "string", "hello world" }, + { "boolean", true }, { "object", Json::object() }, { "array", { 1, 2, 3 } } }; SECTION("access specified element with default value") { @@ -1679,16 +1661,16 @@ TEST_CASE_TEMPLATE("element access 2 (throwing tests)", Json, nlohmann::json, nl CHECK(j.value("/not/existing"_json_pointer, false) == false); CHECK(j.value("/not/existing"_json_pointer, "bar") == "bar"); CHECK(j.value("/not/existing"_json_pointer, 12.34) == Approx(12.34)); - CHECK(j.value("/not/existing"_json_pointer, Json({{"foo", "bar"}})) == Json({{"foo", "bar"}})); - CHECK(j.value("/not/existing"_json_pointer, Json({10, 100})) == Json({10, 100})); + CHECK(j.value("/not/existing"_json_pointer, Json({ { "foo", "bar" } })) == Json({ { "foo", "bar" } })); + CHECK(j.value("/not/existing"_json_pointer, Json({ 10, 100 })) == Json({ 10, 100 })); CHECK(j_const.value("/not/existing"_json_pointer, 2) == 2); CHECK(j_const.value("/not/existing"_json_pointer, 2u) == 2u); CHECK(j_const.value("/not/existing"_json_pointer, false) == false); CHECK(j_const.value("/not/existing"_json_pointer, "bar") == "bar"); CHECK(j_const.value("/not/existing"_json_pointer, 12.34) == Approx(12.34)); - CHECK(j_const.value("/not/existing"_json_pointer, Json({{"foo", "bar"}})) == Json({{"foo", "bar"}})); - CHECK(j_const.value("/not/existing"_json_pointer, Json({10, 100})) == Json({10, 100})); + CHECK(j_const.value("/not/existing"_json_pointer, Json({ { "foo", "bar" } })) == Json({ { "foo", "bar" } })); + CHECK(j_const.value("/not/existing"_json_pointer, Json({ 10, 100 })) == Json({ 10, 100 })); } } } @@ -1705,7 +1687,7 @@ TEST_CASE_TEMPLATE("element access 2 (additional value() tests)", Json, nlohmann // test assumes string_t and object_t::key_type are the same REQUIRE(std::is_same::value); - Json j{{"foo", "bar"}, {"baz", 42}}; + Json j{ { "foo", "bar" }, { "baz", 42 } }; const char* cpstr = "default"; const char castr[] = "default"; // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays) @@ -1714,7 +1696,7 @@ TEST_CASE_TEMPLATE("element access 2 (additional value() tests)", Json, nlohmann number_integer_t integer = 69; std::size_t size = 69; - SECTION("deduced ValueType"){SECTION("literal key"){CHECK(j.value("foo", "default") == "bar"); + SECTION("deduced ValueType"){ SECTION("literal key"){ CHECK(j.value("foo", "default") == "bar"); CHECK(j.value("foo", cpstr) == "bar"); CHECK(j.value("foo", castr) == "bar"); CHECK(j.value("foo", str) == "bar"); diff --git a/tests/src/unit-hash.cpp b/tests/src/unit-hash.cpp index 65d86bf0f..411b25f67 100644 --- a/tests/src/unit-hash.cpp +++ b/tests/src/unit-hash.cpp @@ -43,19 +43,19 @@ TEST_CASE("hash") // array hashes.insert(std::hash{}(json::array())); - hashes.insert(std::hash{}(json::array({1, 2, 3}))); + hashes.insert(std::hash{}(json::array({ 1, 2, 3 }))); // object hashes.insert(std::hash{}(json::object())); - hashes.insert(std::hash{}(json::object({{"foo", "bar"}}))); + hashes.insert(std::hash{}(json::object({ { "foo", "bar" } }))); // binary hashes.insert(std::hash{}(json::binary({}))); hashes.insert(std::hash{}(json::binary({}, 0))); hashes.insert(std::hash{}(json::binary({}, 42))); - hashes.insert(std::hash{}(json::binary({1, 2, 3}))); - hashes.insert(std::hash{}(json::binary({1, 2, 3}, 0))); - hashes.insert(std::hash{}(json::binary({1, 2, 3}, 42))); + hashes.insert(std::hash{}(json::binary({ 1, 2, 3 }))); + hashes.insert(std::hash{}(json::binary({ 1, 2, 3 }, 0))); + hashes.insert(std::hash{}(json::binary({ 1, 2, 3 }, 42))); // discarded hashes.insert(std::hash{}(json(json::value_t::discarded))); @@ -92,19 +92,19 @@ TEST_CASE("hash") // array hashes.insert(std::hash{}(ordered_json::array())); - hashes.insert(std::hash{}(ordered_json::array({1, 2, 3}))); + hashes.insert(std::hash{}(ordered_json::array({ 1, 2, 3 }))); // object hashes.insert(std::hash{}(ordered_json::object())); - hashes.insert(std::hash{}(ordered_json::object({{"foo", "bar"}}))); + hashes.insert(std::hash{}(ordered_json::object({ { "foo", "bar" } }))); // binary hashes.insert(std::hash{}(ordered_json::binary({}))); hashes.insert(std::hash{}(ordered_json::binary({}, 0))); hashes.insert(std::hash{}(ordered_json::binary({}, 42))); - hashes.insert(std::hash{}(ordered_json::binary({1, 2, 3}))); - hashes.insert(std::hash{}(ordered_json::binary({1, 2, 3}, 0))); - hashes.insert(std::hash{}(ordered_json::binary({1, 2, 3}, 42))); + hashes.insert(std::hash{}(ordered_json::binary({ 1, 2, 3 }))); + hashes.insert(std::hash{}(ordered_json::binary({ 1, 2, 3 }, 0))); + hashes.insert(std::hash{}(ordered_json::binary({ 1, 2, 3 }, 42))); // discarded hashes.insert(std::hash{}(ordered_json(ordered_json::value_t::discarded))); diff --git a/tests/src/unit-inspection.cpp b/tests/src/unit-inspection.cpp index f3403f228..5701f9b09 100644 --- a/tests/src/unit-inspection.cpp +++ b/tests/src/unit-inspection.cpp @@ -21,7 +21,7 @@ TEST_CASE("object inspection") { SECTION("object") { - json const j{{"foo", 1}, {"bar", false}}; + json const j{ { "foo", 1 }, { "bar", false } }; CHECK(!j.is_null()); CHECK(!j.is_boolean()); CHECK(!j.is_number()); @@ -39,7 +39,7 @@ TEST_CASE("object inspection") SECTION("array") { - json const j{"foo", 1, 1u, 42.23, false}; + json const j{ "foo", 1, 1u, 42.23, false }; CHECK(!j.is_null()); CHECK(!j.is_boolean()); CHECK(!j.is_number()); @@ -202,7 +202,8 @@ TEST_CASE("object inspection") SECTION("serialization") { - json const j{{"object", json::object()}, {"array", {1, 2, 3, 4}}, {"number", 42}, {"boolean", false}, {"null", nullptr}, {"string", "Hello world"}}; + json const j{ { "object", json::object() }, { "array", { 1, 2, 3, 4 } }, { "number", 42 }, + { "boolean", false }, { "null", nullptr }, { "string", "Hello world" } }; SECTION("no indent / indent=-1") { @@ -242,7 +243,7 @@ TEST_CASE("object inspection") // inside the dump() function CHECK(j.dump(1024).size() == 15472); - const auto binary = json::binary({1, 2, 3}, 128); + const auto binary = json::binary({ 1, 2, 3 }, 128); CHECK(binary.dump(1024).size() == 2086); } @@ -328,7 +329,7 @@ TEST_CASE("object inspection") SECTION("round trips") { - for (const auto& s : {"3.141592653589793", "1000000000000000010E5"}) + for (const auto& s : { "3.141592653589793", "1000000000000000010E5" }) { json const j1 = json::parse(s); std::string s1 = j1.dump(); @@ -348,13 +349,13 @@ TEST_CASE("object inspection") SECTION("object") { - json const j = {{"foo", "bar"}}; + json const j = { { "foo", "bar" } }; CHECK(j.type() == json::value_t::object); } SECTION("array") { - json const j = {1, 2, 3, 4}; + json const j = { 1, 2, 3, 4 }; CHECK(j.type() == json::value_t::array); } @@ -400,14 +401,14 @@ TEST_CASE("object inspection") SECTION("object") { - json const j = {{"foo", "bar"}}; + json const j = { { "foo", "bar" } }; json::value_t t = j; CHECK(t == j.type()); } SECTION("array") { - json const j = {1, 2, 3, 4}; + json const j = { 1, 2, 3, 4 }; json::value_t t = j; CHECK(t == j.type()); } diff --git a/tests/src/unit-items.cpp b/tests/src/unit-items.cpp index f913e93a7..86a3a7ead 100644 --- a/tests/src/unit-items.cpp +++ b/tests/src/unit-items.cpp @@ -25,7 +25,7 @@ TEST_CASE("iterator_wrapper") { SECTION("value") { - json j = {{"A", 1}, {"B", 2}}; + json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (auto i : json::iterator_wrapper(j)) // NOLINT(performance-for-range-copy) @@ -58,7 +58,7 @@ TEST_CASE("iterator_wrapper") SECTION("reference") { - json j = {{"A", 1}, {"B", 2}}; + json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (auto& i : json::iterator_wrapper(j)) // NOLINT(readability-qualified-auto) @@ -97,12 +97,12 @@ TEST_CASE("iterator_wrapper") CHECK(counter == 3); // check if values where changed - CHECK(j == json({{"A", 11}, {"B", 22}})); + CHECK(j == json({ { "A", 11 }, { "B", 22 } })); } SECTION("const value") { - json j = {{"A", 1}, {"B", 2}}; + json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (const auto i : json::iterator_wrapper(j)) // NOLINT(performance-for-range-copy) @@ -135,7 +135,7 @@ TEST_CASE("iterator_wrapper") SECTION("const reference") { - json j = {{"A", 1}, {"B", 2}}; + json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (const auto& i : json::iterator_wrapper(j)) @@ -171,7 +171,7 @@ TEST_CASE("iterator_wrapper") { SECTION("value") { - const json j = {{"A", 1}, {"B", 2}}; + const json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (auto i : json::iterator_wrapper(j)) // NOLINT(performance-for-range-copy) @@ -204,7 +204,7 @@ TEST_CASE("iterator_wrapper") SECTION("reference") { - const json j = {{"A", 1}, {"B", 2}}; + const json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (auto& i : json::iterator_wrapper(j)) // NOLINT(readability-qualified-auto) @@ -237,7 +237,7 @@ TEST_CASE("iterator_wrapper") SECTION("const value") { - const json j = {{"A", 1}, {"B", 2}}; + const json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (const auto i : json::iterator_wrapper(j)) // NOLINT(performance-for-range-copy) @@ -270,7 +270,7 @@ TEST_CASE("iterator_wrapper") SECTION("const reference") { - const json j = {{"A", 1}, {"B", 2}}; + const json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (const auto& i : json::iterator_wrapper(j)) @@ -306,7 +306,7 @@ TEST_CASE("iterator_wrapper") { SECTION("value") { - json j = {"A", "B"}; + json j = { "A", "B" }; int counter = 1; for (auto i : json::iterator_wrapper(j)) // NOLINT(performance-for-range-copy) @@ -339,7 +339,7 @@ TEST_CASE("iterator_wrapper") SECTION("reference") { - json j = {"A", "B"}; + json j = { "A", "B" }; int counter = 1; for (auto& i : json::iterator_wrapper(j)) // NOLINT(readability-qualified-auto) @@ -378,12 +378,12 @@ TEST_CASE("iterator_wrapper") CHECK(counter == 3); // check if values where changed - CHECK(j == json({"AA", "BB"})); + CHECK(j == json({ "AA", "BB" })); } SECTION("const value") { - json j = {"A", "B"}; + json j = { "A", "B" }; int counter = 1; for (const auto i : json::iterator_wrapper(j)) // NOLINT(performance-for-range-copy) @@ -416,7 +416,7 @@ TEST_CASE("iterator_wrapper") SECTION("const reference") { - json j = {"A", "B"}; + json j = { "A", "B" }; int counter = 1; for (const auto& i : json::iterator_wrapper(j)) @@ -452,7 +452,7 @@ TEST_CASE("iterator_wrapper") { SECTION("value") { - const json j = {"A", "B"}; + const json j = { "A", "B" }; int counter = 1; for (auto i : json::iterator_wrapper(j)) // NOLINT(performance-for-range-copy) @@ -485,7 +485,7 @@ TEST_CASE("iterator_wrapper") SECTION("reference") { - const json j = {"A", "B"}; + const json j = { "A", "B" }; int counter = 1; for (auto& i : json::iterator_wrapper(j)) // NOLINT(readability-qualified-auto) @@ -518,7 +518,7 @@ TEST_CASE("iterator_wrapper") SECTION("const value") { - const json j = {"A", "B"}; + const json j = { "A", "B" }; int counter = 1; for (const auto i : json::iterator_wrapper(j)) // NOLINT(performance-for-range-copy) @@ -551,7 +551,7 @@ TEST_CASE("iterator_wrapper") SECTION("const reference") { - const json j = {"A", "B"}; + const json j = { "A", "B" }; int counter = 1; for (const auto& i : json::iterator_wrapper(j)) @@ -718,7 +718,7 @@ TEST_CASE("iterator_wrapper") TEST_CASE("items()") { - SECTION("object"){SECTION("value"){json j = {{"A", 1}, {"B", 2}}; + SECTION("object"){ SECTION("value"){ json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (auto i : j.items()) // NOLINT(performance-for-range-copy) @@ -751,7 +751,7 @@ TEST_CASE("items()") SECTION("reference") { - json j = {{"A", 1}, {"B", 2}}; + json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (auto& i : j.items()) // NOLINT(readability-qualified-auto) @@ -790,12 +790,12 @@ SECTION("reference") CHECK(counter == 3); // check if values where changed - CHECK(j == json({{"A", 11}, {"B", 22}})); + CHECK(j == json({ { "A", 11 }, { "B", 22 } })); } SECTION("const value") { - json j = {{"A", 1}, {"B", 2}}; + json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (const auto i : j.items()) // NOLINT(performance-for-range-copy) @@ -828,7 +828,7 @@ SECTION("const value") SECTION("const reference") { - json j = {{"A", 1}, {"B", 2}}; + json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (const auto& i : j.items()) @@ -862,7 +862,7 @@ SECTION("const reference") #ifdef JSON_HAS_CPP_17 SECTION("structured bindings") { - json j = {{"A", 1}, {"B", 2}}; + json j = { { "A", 1 }, { "B", 2 } }; std::map m; @@ -880,7 +880,7 @@ SECTION("const object") { SECTION("value") { - const json j = {{"A", 1}, {"B", 2}}; + const json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (auto i : j.items()) // NOLINT(performance-for-range-copy) @@ -913,7 +913,7 @@ SECTION("const object") SECTION("reference") { - const json j = {{"A", 1}, {"B", 2}}; + const json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (auto& i : j.items()) // NOLINT(readability-qualified-auto) @@ -946,7 +946,7 @@ SECTION("const object") SECTION("const value") { - const json j = {{"A", 1}, {"B", 2}}; + const json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (const auto i : j.items()) // NOLINT(performance-for-range-copy) @@ -979,7 +979,7 @@ SECTION("const object") SECTION("const reference") { - const json j = {{"A", 1}, {"B", 2}}; + const json j = { { "A", 1 }, { "B", 2 } }; int counter = 1; for (const auto& i : j.items()) @@ -1015,7 +1015,7 @@ SECTION("array") { SECTION("value") { - json j = {"A", "B"}; + json j = { "A", "B" }; int counter = 1; for (auto i : j.items()) // NOLINT(performance-for-range-copy) @@ -1048,7 +1048,7 @@ SECTION("array") SECTION("reference") { - json j = {"A", "B"}; + json j = { "A", "B" }; int counter = 1; for (auto& i : j.items()) // NOLINT(readability-qualified-auto) @@ -1087,12 +1087,12 @@ SECTION("array") CHECK(counter == 3); // check if values where changed - CHECK(j == json({"AA", "BB"})); + CHECK(j == json({ "AA", "BB" })); } SECTION("const value") { - json j = {"A", "B"}; + json j = { "A", "B" }; int counter = 1; for (const auto i : j.items()) // NOLINT(performance-for-range-copy) @@ -1125,7 +1125,7 @@ SECTION("array") SECTION("const reference") { - json j = {"A", "B"}; + json j = { "A", "B" }; int counter = 1; for (const auto& i : j.items()) @@ -1161,7 +1161,7 @@ SECTION("const array") { SECTION("value") { - const json j = {"A", "B"}; + const json j = { "A", "B" }; int counter = 1; for (auto i : j.items()) // NOLINT(performance-for-range-copy) @@ -1194,7 +1194,7 @@ SECTION("const array") SECTION("reference") { - const json j = {"A", "B"}; + const json j = { "A", "B" }; int counter = 1; for (auto& i : j.items()) // NOLINT(readability-qualified-auto) @@ -1227,7 +1227,7 @@ SECTION("const array") SECTION("const value") { - const json j = {"A", "B"}; + const json j = { "A", "B" }; int counter = 1; for (const auto i : j.items()) // NOLINT(performance-for-range-copy) @@ -1260,7 +1260,7 @@ SECTION("const array") SECTION("const reference") { - const json j = {"A", "B"}; + const json j = { "A", "B" }; int counter = 1; for (const auto& i : j.items()) diff --git a/tests/src/unit-iterators1.cpp b/tests/src/unit-iterators1.cpp index 24669a625..41cd6e8f7 100644 --- a/tests/src/unit-iterators1.cpp +++ b/tests/src/unit-iterators1.cpp @@ -531,7 +531,7 @@ TEST_CASE("iterators 1") SECTION("array") { - json j = {1, 2, 3}; + json j = { 1, 2, 3 }; json j_const(j); SECTION("json + begin/end") @@ -715,7 +715,7 @@ TEST_CASE("iterators 1") SECTION("object") { - json j = {{"A", 1}, {"B", 2}, {"C", 3}}; + json j = { { "A", 1 }, { "B", 2 }, { "C", 3 } }; json j_const(j); SECTION("json + begin/end") @@ -1580,7 +1580,7 @@ TEST_CASE("iterators 1") } SECTION("array") { - json j = {1, 2, 3}; + json j = { 1, 2, 3 }; json::const_iterator it = j.begin(); CHECK(it == j.cbegin()); it = j.begin(); @@ -1588,7 +1588,7 @@ TEST_CASE("iterators 1") } SECTION("object") { - json j = {{"A", 1}, {"B", 2}, {"C", 3}}; + json j = { { "A", 1 }, { "B", 2 }, { "C", 3 } }; json::const_iterator it = j.begin(); CHECK(it == j.cbegin()); it = j.begin(); diff --git a/tests/src/unit-iterators2.cpp b/tests/src/unit-iterators2.cpp index 0c8c0e09c..8e6262701 100644 --- a/tests/src/unit-iterators2.cpp +++ b/tests/src/unit-iterators2.cpp @@ -27,7 +27,7 @@ TEST_CASE("iterators 2") { SECTION("iterator comparisons") { - json j_values = {nullptr, true, 42, 42u, 23.23, {{"one", 1}, {"two", 2}}, {1, 2, 3, 4, 5}, "Hello, world"}; + json j_values = { nullptr, true, 42, 42u, 23.23, { { "one", 1 }, { "two", 2 } }, { 1, 2, 3, 4, 5 }, "Hello, world" }; for (json& j : j_values) { @@ -347,8 +347,8 @@ TEST_CASE("iterators 2") SECTION("iterator arithmetic") { - json j_object = {{"one", 1}, {"two", 2}, {"three", 3}}; - json j_array = {1, 2, 3, 4, 5, 6}; + json j_object = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; + json j_array = { 1, 2, 3, 4, 5, 6 }; json j_null = nullptr; json j_value = 42; @@ -555,7 +555,7 @@ TEST_CASE("iterators 2") SECTION("reverse iterator comparisons") { - json j_values = {nullptr, true, 42, 42u, 23.23, {{"one", 1}, {"two", 2}}, {1, 2, 3, 4, 5}, "Hello, world"}; + json j_values = { nullptr, true, 42, 42u, 23.23, { { "one", 1 }, { "two", 2 } }, { 1, 2, 3, 4, 5 }, "Hello, world" }; for (json& j : j_values) { @@ -875,8 +875,8 @@ TEST_CASE("iterators 2") SECTION("reverse iterator arithmetic") { - json j_object = {{"one", 1}, {"two", 2}, {"three", 3}}; - json j_array = {1, 2, 3, 4, 5, 6}; + json j_object = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; + json j_array = { 1, 2, 3, 4, 5, 6 }; json j_null = nullptr; json j_value = 42; @@ -1107,7 +1107,7 @@ TEST_CASE("iterators 2") { SECTION("copy") { - json j{"foo", "bar"}; + json j{ "foo", "bar" }; auto j_copied = json::array(); std::ranges::copy(j, std::back_inserter(j_copied)); @@ -1117,7 +1117,7 @@ TEST_CASE("iterators 2") SECTION("find_if") { - json j{1, 3, 2, 4}; + json j{ 1, 3, 2, 4 }; auto j_even = json::array(); #if JSON_USE_IMPLICIT_CONVERSIONS @@ -1144,8 +1144,8 @@ TEST_CASE("iterators 2") { SECTION("reverse") { - json j{1, 2, 3, 4, 5}; - json j_expected{5, 4, 3, 2, 1}; + json j{ 1, 2, 3, 4, 5 }; + json j_expected{ 5, 4, 3, 2, 1 }; auto reversed = j | std::views::reverse; CHECK(std::ranges::equal(reversed, j_expected)); @@ -1154,11 +1154,11 @@ TEST_CASE("iterators 2") SECTION("transform") { json j{ - {"a_key", "a_value"}, - {"b_key", "b_value"}, - {"c_key", "c_value"}, + { "a_key", "a_value" }, + { "b_key", "b_value" }, + { "c_key", "c_value" }, }; - json j_expected{"a_key", "b_key", "c_key"}; + json j_expected{ "a_key", "b_key", "c_key" }; auto transformed = j.items() | std::views::transform([](const auto& item) { return item.key(); diff --git a/tests/src/unit-json_patch.cpp b/tests/src/unit-json_patch.cpp index 68655e4d1..300475694 100644 --- a/tests/src/unit-json_patch.cpp +++ b/tests/src/unit-json_patch.cpp @@ -77,9 +77,9 @@ TEST_CASE("JSON patch") { // If removing an element from an array, any elements above the // specified index are shifted one position to the left. - json const doc = {1, 2, 3, 4}; - json const patch = {{{"op", "remove"}, {"path", "/1"}}}; - CHECK(doc.patch(patch) == json({1, 3, 4})); + json const doc = { 1, 2, 3, 4 }; + json const patch = { { { "op", "remove" }, { "path", "/1" } } }; + CHECK(doc.patch(patch) == json({ 1, 3, 4 })); } SECTION("A.1. Adding an Object Member") @@ -529,7 +529,7 @@ TEST_CASE("JSON patch") )"_json; // The resulting JSON document: - json expected = {1, 2, 3}; + json expected = { 1, 2, 3 }; // check if patched value is as expected CHECK(doc.patch(patch) == expected); @@ -545,7 +545,7 @@ TEST_CASE("JSON patch") // exactly the number of elements in the array which is legal. // An example target JSON document: - json const doc = {0, 1, 2}; + json const doc = { 0, 1, 2 }; // A JSON Patch document: json const patch = R"( @@ -555,7 +555,7 @@ TEST_CASE("JSON patch") )"_json; // The resulting JSON document: - json expected = {0, 1, 2, 3}; + json expected = { 0, 1, 2, 3 }; // check if patched value is as expected CHECK(doc.patch(patch) == expected); @@ -611,7 +611,7 @@ TEST_CASE("JSON patch") SECTION("replace") { json const j = "string"; - json const patch = {{{"op", "replace"}, {"path", ""}, {"value", 1}}}; + json const patch = { { { "op", "replace" }, { "path", "" }, { "value", 1 } } }; CHECK(j.patch(patch) == json(1)); } @@ -640,13 +640,13 @@ TEST_CASE("JSON patch") } { // a JSON value - json j = {"good", "bad", "ugly"}; + json j = { "good", "bad", "ugly" }; // a JSON pointer auto ptr = json::json_pointer("/2"); // use to access elements - j[ptr] = {{"it", "cattivo"}}; + j[ptr] = { { "it", "cattivo" } }; CHECK(j == R"(["good","bad",{"it":"cattivo"}])"_json); // use user-defined string literal @@ -666,7 +666,7 @@ TEST_CASE("JSON patch") SECTION("not an array") { json const j; - json const patch = {{"op", "add"}, {"path", ""}, {"value", 1}}; + json const patch = { { "op", "add" }, { "path", "" }, { "value", 1 } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.104] parse error: JSON patch must be an array of objects", json::parse_error&); @@ -675,7 +675,7 @@ TEST_CASE("JSON patch") SECTION("not an array of objects") { json const j; - json const patch = {"op", "add", "path", "", "value", 1}; + json const patch = { "op", "add", "path", "", "value", 1 }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.104] parse error: (/0) JSON patch must be an array of objects", @@ -690,7 +690,7 @@ TEST_CASE("JSON patch") SECTION("missing 'op'") { json const j; - json const patch = {{{"foo", "bar"}}}; + json const patch = { { { "foo", "bar" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation must have member 'op'", json::parse_error&); #else @@ -701,7 +701,7 @@ TEST_CASE("JSON patch") SECTION("non-string 'op'") { json const j; - json const patch = {{{"op", 1}}}; + json const patch = { { { "op", 1 } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation must have string member 'op'", @@ -716,7 +716,7 @@ TEST_CASE("JSON patch") SECTION("invalid operation") { json const j; - json const patch = {{{"op", "foo"}, {"path", ""}}}; + json const patch = { { { "op", "foo" }, { "path", "" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation value 'foo' is invalid", json::parse_error&); #else @@ -730,7 +730,7 @@ TEST_CASE("JSON patch") SECTION("missing 'path'") { json const j; - json const patch = {{{"op", "add"}}}; + json const patch = { { { "op", "add" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'add' must have member 'path'", @@ -745,7 +745,7 @@ TEST_CASE("JSON patch") SECTION("non-string 'path'") { json const j; - json const patch = {{{"op", "add"}, {"path", 1}}}; + json const patch = { { { "op", "add" }, { "path", 1 } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'add' must have string member 'path'", @@ -760,7 +760,7 @@ TEST_CASE("JSON patch") SECTION("missing 'value'") { json const j; - json const patch = {{{"op", "add"}, {"path", ""}}}; + json const patch = { { { "op", "add" }, { "path", "" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'add' must have member 'value'", @@ -774,8 +774,8 @@ TEST_CASE("JSON patch") SECTION("invalid array index") { - json const j = {1, 2}; - json const patch = {{{"op", "add"}, {"path", "/4"}, {"value", 4}}}; + json const j = { 1, 2 }; + json const patch = { { { "op", "add" }, { "path", "/4" }, { "value", 4 } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.401] array index 4 is out of range", json::out_of_range&); } } @@ -785,7 +785,7 @@ TEST_CASE("JSON patch") SECTION("missing 'path'") { json const j; - json const patch = {{{"op", "remove"}}}; + json const patch = { { { "op", "remove" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'remove' must have member 'path'", @@ -800,7 +800,7 @@ TEST_CASE("JSON patch") SECTION("non-string 'path'") { json const j; - json const patch = {{{"op", "remove"}, {"path", 1}}}; + json const patch = { { { "op", "remove" }, { "path", 1 } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'remove' must have string member 'path'", @@ -814,22 +814,22 @@ TEST_CASE("JSON patch") SECTION("nonexisting target location (array)") { - json const j = {1, 2, 3}; - json const patch = {{{"op", "remove"}, {"path", "/17"}}}; + json const j = { 1, 2, 3 }; + json const patch = { { { "op", "remove" }, { "path", "/17" } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.401] array index 17 is out of range", json::out_of_range&); } SECTION("nonexisting target location (object)") { - json const j = {{"foo", 1}, {"bar", 2}}; - json const patch = {{{"op", "remove"}, {"path", "/baz"}}}; + json const j = { { "foo", 1 }, { "bar", 2 } }; + json const patch = { { { "op", "remove" }, { "path", "/baz" } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.403] key 'baz' not found", json::out_of_range&); } SECTION("root element as target location") { json const j = "string"; - json const patch = {{{"op", "remove"}, {"path", ""}}}; + json const patch = { { { "op", "remove" }, { "path", "" } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.405] JSON pointer has no parent", json::out_of_range&); } } @@ -839,7 +839,7 @@ TEST_CASE("JSON patch") SECTION("missing 'path'") { json const j; - json const patch = {{{"op", "replace"}}}; + json const patch = { { { "op", "replace" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'replace' must have member 'path'", @@ -854,7 +854,7 @@ TEST_CASE("JSON patch") SECTION("non-string 'path'") { json const j; - json const patch = {{{"op", "replace"}, {"path", 1}}}; + json const patch = { { { "op", "replace" }, { "path", 1 } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'replace' must have string member 'path'", @@ -869,7 +869,7 @@ TEST_CASE("JSON patch") SECTION("missing 'value'") { json const j; - json const patch = {{{"op", "replace"}, {"path", ""}}}; + json const patch = { { { "op", "replace" }, { "path", "" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'replace' must have member 'value'", @@ -883,15 +883,15 @@ TEST_CASE("JSON patch") SECTION("nonexisting target location (array)") { - json const j = {1, 2, 3}; - json const patch = {{{"op", "replace"}, {"path", "/17"}, {"value", 19}}}; + json const j = { 1, 2, 3 }; + json const patch = { { { "op", "replace" }, { "path", "/17" }, { "value", 19 } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.401] array index 17 is out of range", json::out_of_range&); } SECTION("nonexisting target location (object)") { - json const j = {{"foo", 1}, {"bar", 2}}; - json const patch = {{{"op", "replace"}, {"path", "/baz"}, {"value", 3}}}; + json const j = { { "foo", 1 }, { "bar", 2 } }; + json const patch = { { { "op", "replace" }, { "path", "/baz" }, { "value", 3 } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.403] key 'baz' not found", json::out_of_range&); } } @@ -901,7 +901,7 @@ TEST_CASE("JSON patch") SECTION("missing 'path'") { json const j; - json const patch = {{{"op", "move"}}}; + json const patch = { { { "op", "move" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'move' must have member 'path'", @@ -916,7 +916,7 @@ TEST_CASE("JSON patch") SECTION("non-string 'path'") { json const j; - json const patch = {{{"op", "move"}, {"path", 1}}}; + json const patch = { { { "op", "move" }, { "path", 1 } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'move' must have string member 'path'", @@ -931,7 +931,7 @@ TEST_CASE("JSON patch") SECTION("missing 'from'") { json const j; - json const patch = {{{"op", "move"}, {"path", ""}}}; + json const patch = { { { "op", "move" }, { "path", "" } } }; CHECK_THROWS_AS(j.patch(patch), json::parse_error&); #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), @@ -947,7 +947,7 @@ TEST_CASE("JSON patch") SECTION("non-string 'from'") { json const j; - json const patch = {{{"op", "move"}, {"path", ""}, {"from", 1}}}; + json const patch = { { { "op", "move" }, { "path", "" }, { "from", 1 } } }; CHECK_THROWS_AS(j.patch(patch), json::parse_error&); #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), @@ -962,15 +962,15 @@ TEST_CASE("JSON patch") SECTION("nonexisting from location (array)") { - json const j = {1, 2, 3}; - json const patch = {{{"op", "move"}, {"path", "/0"}, {"from", "/5"}}}; + json const j = { 1, 2, 3 }; + json const patch = { { { "op", "move" }, { "path", "/0" }, { "from", "/5" } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.401] array index 5 is out of range", json::out_of_range&); } SECTION("nonexisting from location (object)") { - json const j = {{"foo", 1}, {"bar", 2}}; - json const patch = {{{"op", "move"}, {"path", "/baz"}, {"from", "/baz"}}}; + json const j = { { "foo", 1 }, { "bar", 2 } }; + json const patch = { { { "op", "move" }, { "path", "/baz" }, { "from", "/baz" } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.403] key 'baz' not found", json::out_of_range&); } } @@ -980,7 +980,7 @@ TEST_CASE("JSON patch") SECTION("missing 'path'") { json const j; - json const patch = {{{"op", "copy"}}}; + json const patch = { { { "op", "copy" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'copy' must have member 'path'", @@ -995,7 +995,7 @@ TEST_CASE("JSON patch") SECTION("non-string 'path'") { json const j; - json const patch = {{{"op", "copy"}, {"path", 1}}}; + json const patch = { { { "op", "copy" }, { "path", 1 } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'copy' must have string member 'path'", @@ -1010,7 +1010,7 @@ TEST_CASE("JSON patch") SECTION("missing 'from'") { json const j; - json const patch = {{{"op", "copy"}, {"path", ""}}}; + json const patch = { { { "op", "copy" }, { "path", "" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'copy' must have member 'from'", @@ -1025,7 +1025,7 @@ TEST_CASE("JSON patch") SECTION("non-string 'from'") { json const j; - json const patch = {{{"op", "copy"}, {"path", ""}, {"from", 1}}}; + json const patch = { { { "op", "copy" }, { "path", "" }, { "from", 1 } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'copy' must have string member 'from'", @@ -1039,15 +1039,15 @@ TEST_CASE("JSON patch") SECTION("nonexisting from location (array)") { - json const j = {1, 2, 3}; - json const patch = {{{"op", "copy"}, {"path", "/0"}, {"from", "/5"}}}; + json const j = { 1, 2, 3 }; + json const patch = { { { "op", "copy" }, { "path", "/0" }, { "from", "/5" } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.401] array index 5 is out of range", json::out_of_range&); } SECTION("nonexisting from location (object)") { - json const j = {{"foo", 1}, {"bar", 2}}; - json const patch = {{{"op", "copy"}, {"path", "/fob"}, {"from", "/baz"}}}; + json const j = { { "foo", 1 }, { "bar", 2 } }; + json const patch = { { { "op", "copy" }, { "path", "/fob" }, { "from", "/baz" } } }; CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.out_of_range.403] key 'baz' not found", json::out_of_range&); } } @@ -1057,7 +1057,7 @@ TEST_CASE("JSON patch") SECTION("missing 'path'") { json const j; - json const patch = {{{"op", "test"}}}; + json const patch = { { { "op", "test" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'test' must have member 'path'", @@ -1072,7 +1072,7 @@ TEST_CASE("JSON patch") SECTION("non-string 'path'") { json const j; - json const patch = {{{"op", "test"}, {"path", 1}}}; + json const patch = { { { "op", "test" }, { "path", 1 } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'test' must have string member 'path'", @@ -1087,7 +1087,7 @@ TEST_CASE("JSON patch") SECTION("missing 'value'") { json const j; - json const patch = {{{"op", "test"}, {"path", ""}}}; + json const patch = { { { "op", "test" }, { "path", "" } } }; #if JSON_DIAGNOSTICS CHECK_THROWS_WITH_AS(j.patch(patch), "[json.exception.parse_error.105] parse error: (/0) operation 'test' must have member 'value'", @@ -1347,7 +1347,7 @@ TEST_CASE("JSON patch") SECTION("Tests from github.com/json-patch/json-patch-tests") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/json-patch-tests/spec_tests.json", TEST_DATA_DIRECTORY "/json-patch-tests/tests.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/json-patch-tests/spec_tests.json", TEST_DATA_DIRECTORY "/json-patch-tests/tests.json" }) { CAPTURE(filename) std::ifstream f(filename); diff --git a/tests/src/unit-json_pointer.cpp b/tests/src/unit-json_pointer.cpp index 653846b0f..4d4be14ae 100644 --- a/tests/src/unit-json_pointer.cpp +++ b/tests/src/unit-json_pointer.cpp @@ -40,7 +40,7 @@ TEST_CASE("JSON pointers") SECTION("array index error") { - json v = {1, 2, 3, 4}; + json v = { 1, 2, 3, 4 }; json::json_pointer const ptr("/10e"); CHECK_THROWS_WITH_AS(v[ptr], "[json.exception.out_of_range.404] unresolved reference token '10e'", json::out_of_range&); } @@ -131,15 +131,15 @@ TEST_CASE("JSON pointers") CHECK(!j.contains(json::json_pointer("/a/c/1"))); CHECK_NOTHROW(j[json::json_pointer("/a/c/1")] = 42); - CHECK(j["a"]["c"] == json({nullptr, 42})); + CHECK(j["a"]["c"] == json({ nullptr, 42 })); CHECK(j.contains(json::json_pointer("/a/c/1"))); CHECK(!j.contains(json::json_pointer("/a/d/-"))); CHECK_NOTHROW(j[json::json_pointer("/a/d/-")] = 42); CHECK(!j.contains(json::json_pointer("/a/d/-"))); - CHECK(j["a"]["d"] == json::array({42})); + CHECK(j["a"]["d"] == json::array({ 42 })); // "/a/b" works for JSON {"a": {"b": 42}} - CHECK(json({{"a", {{"b", 42}}}})[json::json_pointer("/a/b")] == json(42)); + CHECK(json({ { "a", { { "b", 42 } } } })[json::json_pointer("/a/b")] == json(42)); // unresolved access json j_primitive = 1; @@ -251,7 +251,7 @@ TEST_CASE("JSON pointers") { SECTION("nonconst access") { - json j = {1, 2, 3}; + json j = { 1, 2, 3 }; const json j_const = j; // check reading access @@ -269,7 +269,7 @@ TEST_CASE("JSON pointers") // assign to nonexisting index (with gap) j["/5"_json_pointer] = 55; - CHECK(j == json({1, 13, 3, 33, nullptr, 55})); + CHECK(j == json({ 1, 13, 3, 33, nullptr, 55 })); // error with leading 0 CHECK_THROWS_WITH_AS(j["/01"_json_pointer], @@ -353,13 +353,13 @@ TEST_CASE("JSON pointers") CHECK(!j_const.contains("/one"_json_pointer)); CHECK(!j_const.contains("/one"_json_pointer)); - CHECK_THROWS_WITH_AS(json({{"/list/0", 1}, {"/list/1", 2}, {"/list/three", 3}}).unflatten(), + CHECK_THROWS_WITH_AS(json({ { "/list/0", 1 }, { "/list/1", 2 }, { "/list/three", 3 } }).unflatten(), "[json.exception.parse_error.109] parse error: array index 'three' is not a number", json::parse_error&); // assign to "-" j["/-"_json_pointer] = 99; - CHECK(j == json({1, 13, 3, 33, nullptr, 55, 99})); + CHECK(j == json({ 1, 13, 3, 33, nullptr, 55, 99 })); // error when using "-" in const object CHECK_THROWS_WITH_AS(j_const["/-"_json_pointer], "[json.exception.out_of_range.402] array index '-' (3) is out of range", json::out_of_range&); @@ -373,7 +373,7 @@ TEST_CASE("JSON pointers") SECTION("const access") { - const json j = {1, 2, 3}; + const json j = { 1, 2, 3 }; // check reading access CHECK(j["/0"_json_pointer] == j[0]); @@ -397,28 +397,29 @@ TEST_CASE("JSON pointers") SECTION("flatten") { - json j = {{"pi", 3.141}, - {"happy", true}, - {"name", "Niels"}, - {"nothing", nullptr}, - {"answer", {{"everything", 42}}}, - {"list", {1, 0, 2}}, - {"object", {{"currency", "USD"}, {"value", 42.99}, {"", "empty string"}, {"/", "slash"}, {"~", "tilde"}, {"~1", "tilde1"}}}}; + json j = { { "pi", 3.141 }, + { "happy", true }, + { "name", "Niels" }, + { "nothing", nullptr }, + { "answer", { { "everything", 42 } } }, + { "list", { 1, 0, 2 } }, + { "object", + { { "currency", "USD" }, { "value", 42.99 }, { "", "empty string" }, { "/", "slash" }, { "~", "tilde" }, { "~1", "tilde1" } } } }; - json j_flatten = {{"/pi", 3.141}, - {"/happy", true}, - {"/name", "Niels"}, - {"/nothing", nullptr}, - {"/answer/everything", 42}, - {"/list/0", 1}, - {"/list/1", 0}, - {"/list/2", 2}, - {"/object/currency", "USD"}, - {"/object/value", 42.99}, - {"/object/", "empty string"}, - {"/object/~1", "slash"}, - {"/object/~0", "tilde"}, - {"/object/~01", "tilde1"}}; + json j_flatten = { { "/pi", 3.141 }, + { "/happy", true }, + { "/name", "Niels" }, + { "/nothing", nullptr }, + { "/answer/everything", 42 }, + { "/list/0", 1 }, + { "/list/1", 0 }, + { "/list/2", 2 }, + { "/object/currency", "USD" }, + { "/object/value", 42.99 }, + { "/object/", "empty string" }, + { "/object/~1", "slash" }, + { "/object/~0", "tilde" }, + { "/object/~01", "tilde1" } }; // check if flattened result is as expected CHECK(j.flatten() == j_flatten); @@ -431,15 +432,17 @@ TEST_CASE("JSON pointers") // error for nonprimitve values #if JSON_DIAGNOSTICS - CHECK_THROWS_WITH_AS(json({{"/1", {1, 2, 3}}}).unflatten(), + CHECK_THROWS_WITH_AS(json({ { "/1", { 1, 2, 3 } } }).unflatten(), "[json.exception.type_error.315] (/~11) values in object must be primitive", json::type_error&); #else - CHECK_THROWS_WITH_AS(json({{"/1", {1, 2, 3}}}).unflatten(), "[json.exception.type_error.315] values in object must be primitive", json::type_error&); + CHECK_THROWS_WITH_AS(json({ { "/1", { 1, 2, 3 } } }).unflatten(), + "[json.exception.type_error.315] values in object must be primitive", + json::type_error&); #endif // error for conflicting values - json const j_error = {{"", 42}, {"/foo", 17}}; + json const j_error = { { "", 42 }, { "/foo", 17 } }; CHECK_THROWS_WITH_AS(j_error.unflatten(), "[json.exception.type_error.313] invalid value to unflatten", json::type_error&); // explicit roundtrip check @@ -464,7 +467,7 @@ TEST_CASE("JSON pointers") SECTION("string representation") { - for (const auto* ptr_str : {"", "/foo", "/foo/0", "/", "/a~1b", "/c%d", "/e^f", "/g|h", "/i\\j", "/k\"l", "/ ", "/m~0n"}) + for (const auto* ptr_str : { "", "/foo", "/foo/0", "/", "/a~1b", "/c%d", "/e^f", "/g|h", "/i\\j", "/k\"l", "/ ", "/m~0n" }) { json::json_pointer const ptr(ptr_str); std::stringstream ss; @@ -496,14 +499,15 @@ TEST_CASE("JSON pointers") SECTION("empty, push, pop and parent") { - const json j = {{"", "Hello"}, - {"pi", 3.141}, - {"happy", true}, - {"name", "Niels"}, - {"nothing", nullptr}, - {"answer", {{"everything", 42}}}, - {"list", {1, 0, 2}}, - {"object", {{"currency", "USD"}, {"value", 42.99}, {"", "empty string"}, {"/", "slash"}, {"~", "tilde"}, {"~1", "tilde1"}}}}; + const json j = { { "", "Hello" }, + { "pi", 3.141 }, + { "happy", true }, + { "name", "Niels" }, + { "nothing", nullptr }, + { "answer", { { "everything", 42 } } }, + { "list", { 1, 0, 2 } }, + { "object", + { { "currency", "USD" }, { "value", 42.99 }, { "", "empty string" }, { "/", "slash" }, { "~", "tilde" }, { "~1", "tilde1" } } } }; // empty json_pointer returns the root JSON-object auto ptr = ""_json_pointer; @@ -555,14 +559,15 @@ TEST_CASE("JSON pointers") SECTION("operators") { - const json j = {{"", "Hello"}, - {"pi", 3.141}, - {"happy", true}, - {"name", "Niels"}, - {"nothing", nullptr}, - {"answer", {{"everything", 42}}}, - {"list", {1, 0, 2}}, - {"object", {{"currency", "USD"}, {"value", 42.99}, {"", "empty string"}, {"/", "slash"}, {"~", "tilde"}, {"~1", "tilde1"}}}}; + const json j = { { "", "Hello" }, + { "pi", 3.141 }, + { "happy", true }, + { "name", "Niels" }, + { "nothing", nullptr }, + { "answer", { { "everything", 42 } } }, + { "list", { 1, 0, 2 } }, + { "object", + { { "currency", "USD" }, { "value", 42.99 }, { "", "empty string" }, { "/", "slash" }, { "~", "tilde" }, { "~1", "tilde1" } } } }; // empty json_pointer returns the root JSON-object auto ptr = ""_json_pointer; @@ -602,7 +607,7 @@ TEST_CASE("JSON pointers") { const char* ptr_cpstring = "/foo/bar"; const char ptr_castring[] = "/foo/bar"; // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays) - std::string ptr_string{"/foo/bar"}; + std::string ptr_string{ "/foo/bar" }; auto ptr1 = json::json_pointer(ptr_string); auto ptr2 = json::json_pointer(ptr_string); @@ -694,10 +699,10 @@ TEST_CASE("JSON pointers") CHECK(std::is_same::value); CHECK(std::is_same::value); - std::string const ptr_string{"/foo/0"}; - json_ptr_str ptr{ptr_string}; - json_ptr_j ptr_j{ptr_string}; - json_ptr_oj ptr_oj{ptr_string}; + std::string const ptr_string{ "/foo/0" }; + json_ptr_str ptr{ ptr_string }; + json_ptr_j ptr_j{ ptr_string }; + json_ptr_oj ptr_oj{ ptr_string }; CHECK(j.contains(ptr)); CHECK(j.contains(ptr_j)); diff --git a/tests/src/unit-meta.cpp b/tests/src/unit-meta.cpp index 0be2347fe..1e033443d 100644 --- a/tests/src/unit-meta.cpp +++ b/tests/src/unit-meta.cpp @@ -20,7 +20,7 @@ TEST_CASE("version information") CHECK(j["name"] == "JSON for Modern C++"); CHECK(j["copyright"] == "(C) 2013-2023 Niels Lohmann"); CHECK(j["url"] == "https://github.com/nlohmann/json"); - CHECK(j["version"] == json({{"string", "3.11.3"}, {"major", 3}, {"minor", 11}, {"patch", 3}})); + CHECK(j["version"] == json({ { "string", "3.11.3" }, { "major", 3 }, { "minor", 11 }, { "patch", 3 } })); CHECK(j.find("platform") != j.end()); CHECK(j.at("compiler").find("family") != j.at("compiler").end()); diff --git a/tests/src/unit-modifiers.cpp b/tests/src/unit-modifiers.cpp index 84ffe88c3..2059bd28a 100644 --- a/tests/src/unit-modifiers.cpp +++ b/tests/src/unit-modifiers.cpp @@ -51,7 +51,7 @@ TEST_CASE("modifiers") SECTION("filled array") { - json j = {1, 2, 3}; + json j = { 1, 2, 3 }; json const k = j; j.clear(); @@ -76,7 +76,7 @@ TEST_CASE("modifiers") SECTION("filled object") { - json j = {{"one", 1}, {"two", 2}, {"three", 3}}; + json j = { { "one", 1 }, { "two", 2 }, { "three", 3 } }; json const k = j; j.clear(); @@ -101,7 +101,7 @@ TEST_CASE("modifiers") SECTION("filled binary") { - json j = json::binary({1, 2, 3, 4, 5}); + json j = json::binary({ 1, 2, 3, 4, 5 }); json const k = j; j.clear(); @@ -164,15 +164,15 @@ TEST_CASE("modifiers") j.push_back(1); j.push_back(2); CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 2})); + CHECK(j == json({ 1, 2 })); } SECTION("array") { - json j = {1, 2, 3}; + json j = { 1, 2, 3 }; j.push_back("Hello"); CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 2, 3, "Hello"})); + CHECK(j == json({ 1, 2, 3, "Hello" })); } SECTION("other type") @@ -191,16 +191,16 @@ TEST_CASE("modifiers") j.push_back(k); j.push_back(k); CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 1})); + CHECK(j == json({ 1, 1 })); } SECTION("array") { - json j = {1, 2, 3}; + json j = { 1, 2, 3 }; json const k("Hello"); j.push_back(k); CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 2, 3, "Hello"})); + CHECK(j == json({ 1, 2, 3, "Hello" })); } SECTION("other type") @@ -217,8 +217,8 @@ TEST_CASE("modifiers") SECTION("null") { json j; - j.push_back(json::object_t::value_type({"one", 1})); - j.push_back(json::object_t::value_type({"two", 2})); + j.push_back(json::object_t::value_type({ "one", 1 })); + j.push_back(json::object_t::value_type({ "two", 2 })); CHECK(j.type() == json::value_t::object); CHECK(j.size() == 2); CHECK(j["one"] == json(1)); @@ -228,8 +228,8 @@ TEST_CASE("modifiers") SECTION("object") { json j(json::value_t::object); - j.push_back(json::object_t::value_type({"one", 1})); - j.push_back(json::object_t::value_type({"two", 2})); + j.push_back(json::object_t::value_type({ "one", 1 })); + j.push_back(json::object_t::value_type({ "two", 2 })); CHECK(j.size() == 2); CHECK(j["one"] == json(1)); CHECK(j["two"] == json(2)); @@ -239,7 +239,7 @@ TEST_CASE("modifiers") { json j = 1; json const k("Hello"); - CHECK_THROWS_WITH_AS(j.push_back(json::object_t::value_type({"one", 1})), + CHECK_THROWS_WITH_AS(j.push_back(json::object_t::value_type({ "one", 1 })), "[json.exception.type_error.308] cannot use push_back() with number", json::type_error&); } @@ -250,35 +250,35 @@ TEST_CASE("modifiers") SECTION("null") { json j; - j.push_back({"foo", "bar"}); - CHECK(j == json::array({{"foo", "bar"}})); + j.push_back({ "foo", "bar" }); + CHECK(j == json::array({ { "foo", "bar" } })); json k; - k.push_back({1, 2, 3}); - CHECK(k == json::array({{1, 2, 3}})); + k.push_back({ 1, 2, 3 }); + CHECK(k == json::array({ { 1, 2, 3 } })); } SECTION("array") { - json j = {1, 2, 3}; - j.push_back({"foo", "bar"}); - CHECK(j == json({1, 2, 3, {"foo", "bar"}})); + json j = { 1, 2, 3 }; + j.push_back({ "foo", "bar" }); + CHECK(j == json({ 1, 2, 3, { "foo", "bar" } })); - json k = {1, 2, 3}; - k.push_back({1, 2, 3}); - CHECK(k == json({1, 2, 3, {1, 2, 3}})); + json k = { 1, 2, 3 }; + k.push_back({ 1, 2, 3 }); + CHECK(k == json({ 1, 2, 3, { 1, 2, 3 } })); } SECTION("object") { - json j = {{"key1", 1}}; - j.push_back({"key2", "bar"}); - CHECK(j == json({{"key1", 1}, {"key2", "bar"}})); + json j = { { "key1", 1 } }; + j.push_back({ "key2", "bar" }); + CHECK(j == json({ { "key1", 1 }, { "key2", "bar" } })); // invalid values (no string/val pair) - CHECK_THROWS_WITH_AS(j.push_back({1}), "[json.exception.type_error.308] cannot use push_back() with object", json::type_error&); - CHECK_THROWS_WITH_AS(j.push_back({1, 2}), "[json.exception.type_error.308] cannot use push_back() with object", json::type_error&); - CHECK_THROWS_WITH_AS(j.push_back({1, 2, 3, 4}), "[json.exception.type_error.308] cannot use push_back() with object", json::type_error&); + CHECK_THROWS_WITH_AS(j.push_back({ 1 }), "[json.exception.type_error.308] cannot use push_back() with object", json::type_error&); + CHECK_THROWS_WITH_AS(j.push_back({ 1, 2 }), "[json.exception.type_error.308] cannot use push_back() with object", json::type_error&); + CHECK_THROWS_WITH_AS(j.push_back({ 1, 2, 3, 4 }), "[json.exception.type_error.308] cannot use push_back() with object", json::type_error&); } } } @@ -295,25 +295,25 @@ TEST_CASE("modifiers") auto& x2 = j.emplace_back(2); CHECK(x2 == 2); CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 2})); + CHECK(j == json({ 1, 2 })); } SECTION("array") { - json j = {1, 2, 3}; + json j = { 1, 2, 3 }; auto& x = j.emplace_back("Hello"); CHECK(x == "Hello"); CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 2, 3, "Hello"})); + CHECK(j == json({ 1, 2, 3, "Hello" })); } SECTION("multiple values") { json j; auto& x = j.emplace_back(3, "foo"); - CHECK(x == json({"foo", "foo", "foo"})); + CHECK(x == json({ "foo", "foo", "foo" })); CHECK(j.type() == json::value_t::array); - CHECK(j == json({{"foo", "foo", "foo"}})); + CHECK(j == json({ { "foo", "foo", "foo" } })); } } @@ -352,13 +352,13 @@ TEST_CASE("modifiers") CHECK(*res3.first == "bam"); // the final object - CHECK(j == json({{"baz", "bam"}, {"foo", "bar"}})); + CHECK(j == json({ { "baz", "bam" }, { "foo", "bar" } })); } SECTION("object") { // start with an object - json j = {{"foo", "bar"}}; + json j = { { "foo", "bar" } }; // add a new key auto res1 = j.emplace("baz", "bam"); @@ -371,7 +371,7 @@ TEST_CASE("modifiers") CHECK(*res2.first == "bar"); // check final object - CHECK(j == json({{"baz", "bam"}, {"foo", "bar"}})); + CHECK(j == json({ { "baz", "bam" }, { "foo", "bar" } })); } } @@ -394,15 +394,15 @@ TEST_CASE("modifiers") j += 1; j += 2; CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 2})); + CHECK(j == json({ 1, 2 })); } SECTION("array") { - json j = {1, 2, 3}; + json j = { 1, 2, 3 }; j += "Hello"; CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 2, 3, "Hello"})); + CHECK(j == json({ 1, 2, 3, "Hello" })); } SECTION("other type") @@ -421,16 +421,16 @@ TEST_CASE("modifiers") j += k; j += k; CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 1})); + CHECK(j == json({ 1, 1 })); } SECTION("array") { - json j = {1, 2, 3}; + json j = { 1, 2, 3 }; json const k("Hello"); j += k; CHECK(j.type() == json::value_t::array); - CHECK(j == json({1, 2, 3, "Hello"})); + CHECK(j == json({ 1, 2, 3, "Hello" })); } SECTION("other type") @@ -447,8 +447,8 @@ TEST_CASE("modifiers") SECTION("null") { json j; - j += json::object_t::value_type({"one", 1}); - j += json::object_t::value_type({"two", 2}); + j += json::object_t::value_type({ "one", 1 }); + j += json::object_t::value_type({ "two", 2 }); CHECK(j.type() == json::value_t::object); CHECK(j.size() == 2); CHECK(j["one"] == json(1)); @@ -458,8 +458,8 @@ TEST_CASE("modifiers") SECTION("object") { json j(json::value_t::object); - j += json::object_t::value_type({"one", 1}); - j += json::object_t::value_type({"two", 2}); + j += json::object_t::value_type({ "one", 1 }); + j += json::object_t::value_type({ "two", 2 }); CHECK(j.size() == 2); CHECK(j["one"] == json(1)); CHECK(j["two"] == json(2)); @@ -469,7 +469,7 @@ TEST_CASE("modifiers") { json j = 1; json const k("Hello"); - CHECK_THROWS_WITH_AS(j += json::object_t::value_type({"one", 1}), + CHECK_THROWS_WITH_AS(j += json::object_t::value_type({ "one", 1 }), "[json.exception.type_error.308] cannot use push_back() with number", json::type_error&); } @@ -480,40 +480,40 @@ TEST_CASE("modifiers") SECTION("null") { json j; - j += {"foo", "bar"}; - CHECK(j == json::array({{"foo", "bar"}})); + j += { "foo", "bar" }; + CHECK(j == json::array({ { "foo", "bar" } })); json k; - k += {1, 2, 3}; - CHECK(k == json::array({{1, 2, 3}})); + k += { 1, 2, 3 }; + CHECK(k == json::array({ { 1, 2, 3 } })); } SECTION("array") { - json j = {1, 2, 3}; - j += {"foo", "bar"}; - CHECK(j == json({1, 2, 3, {"foo", "bar"}})); + json j = { 1, 2, 3 }; + j += { "foo", "bar" }; + CHECK(j == json({ 1, 2, 3, { "foo", "bar" } })); - json k = {1, 2, 3}; - k += {1, 2, 3}; - CHECK(k == json({1, 2, 3, {1, 2, 3}})); + json k = { 1, 2, 3 }; + k += { 1, 2, 3 }; + CHECK(k == json({ 1, 2, 3, { 1, 2, 3 } })); } SECTION("object") { - json j = {{"key1", 1}}; - j += {"key2", "bar"}; - CHECK(j == json({{"key1", 1}, {"key2", "bar"}})); + json j = { { "key1", 1 } }; + j += { "key2", "bar" }; + CHECK(j == json({ { "key1", 1 }, { "key2", "bar" } })); - json k = {{"key1", 1}}; - CHECK_THROWS_WITH_AS((k += {1, 2, 3, 4}), "[json.exception.type_error.308] cannot use push_back() with object", json::type_error&); + json k = { { "key1", 1 } }; + CHECK_THROWS_WITH_AS((k += { 1, 2, 3, 4 }), "[json.exception.type_error.308] cannot use push_back() with object", json::type_error&); } } } SECTION("insert()") { - json j_array = {1, 2, 3, 4}; + json j_array = { 1, 2, 3, 4 }; json j_value = 5; SECTION("value at position") @@ -524,7 +524,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 5); CHECK(*it == j_value); CHECK(j_array.begin() == it); - CHECK(j_array == json({5, 1, 2, 3, 4})); + CHECK(j_array == json({ 5, 1, 2, 3, 4 })); } SECTION("insert in the middle") @@ -533,7 +533,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 5); CHECK(*it == j_value); CHECK((it - j_array.begin()) == 2); - CHECK(j_array == json({1, 2, 5, 3, 4})); + CHECK(j_array == json({ 1, 2, 5, 3, 4 })); } SECTION("insert before end()") @@ -542,7 +542,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 5); CHECK(*it == j_value); CHECK((j_array.end() - it) == 1); - CHECK(j_array == json({1, 2, 3, 4, 5})); + CHECK(j_array == json({ 1, 2, 3, 4, 5 })); } } @@ -554,7 +554,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 5); CHECK(*it == j_value); CHECK(j_array.begin() == it); - CHECK(j_array == json({5, 1, 2, 3, 4})); + CHECK(j_array == json({ 5, 1, 2, 3, 4 })); } SECTION("insert in the middle") @@ -563,7 +563,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 5); CHECK(*it == j_value); CHECK((it - j_array.begin()) == 2); - CHECK(j_array == json({1, 2, 5, 3, 4})); + CHECK(j_array == json({ 1, 2, 5, 3, 4 })); } SECTION("insert before end()") @@ -572,7 +572,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 5); CHECK(*it == j_value); CHECK((j_array.end() - it) == 1); - CHECK(j_array == json({1, 2, 3, 4, 5})); + CHECK(j_array == json({ 1, 2, 3, 4, 5 })); } } @@ -584,7 +584,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 7); CHECK(*it == j_value); CHECK(j_array.begin() == it); - CHECK(j_array == json({5, 5, 5, 1, 2, 3, 4})); + CHECK(j_array == json({ 5, 5, 5, 1, 2, 3, 4 })); } SECTION("insert in the middle") @@ -593,7 +593,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 7); CHECK(*it == j_value); CHECK((it - j_array.begin()) == 2); - CHECK(j_array == json({1, 2, 5, 5, 5, 3, 4})); + CHECK(j_array == json({ 1, 2, 5, 5, 5, 3, 4 })); } SECTION("insert before end()") @@ -602,7 +602,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 7); CHECK(*it == j_value); CHECK((j_array.end() - it) == 3); - CHECK(j_array == json({1, 2, 3, 4, 5, 5, 5})); + CHECK(j_array == json({ 1, 2, 3, 4, 5, 5, 5 })); } SECTION("insert nothing (count = 0)") @@ -612,13 +612,13 @@ TEST_CASE("modifiers") // the returned iterator points to the first inserted element; // there were 4 elements, so it should point to the 5th CHECK(it == j_array.begin() + 4); - CHECK(j_array == json({1, 2, 3, 4})); + CHECK(j_array == json({ 1, 2, 3, 4 })); } } SECTION("range for array") { - json j_other_array = {"first", "second"}; + json j_other_array = { "first", "second" }; SECTION("proper usage") { @@ -626,7 +626,7 @@ TEST_CASE("modifiers") CHECK(j_array.size() == 6); CHECK(*it == *j_other_array.begin()); CHECK((j_array.end() - it) == 2); - CHECK(j_array == json({1, 2, 3, 4, "first", "second"})); + CHECK(j_array == json({ 1, 2, 3, 4, "first", "second" })); } SECTION("empty range") @@ -634,12 +634,12 @@ TEST_CASE("modifiers") auto it = j_array.insert(j_array.end(), j_other_array.begin(), j_other_array.begin()); CHECK(j_array.size() == 4); CHECK(it == j_array.end()); - CHECK(j_array == json({1, 2, 3, 4})); + CHECK(j_array == json({ 1, 2, 3, 4 })); } SECTION("invalid iterators") { - json j_other_array2 = {"first", "second"}; + json j_other_array2 = { "first", "second" }; CHECK_THROWS_WITH_AS(j_array.insert(j_array.end(), j_array.begin(), j_array.end()), "[json.exception.invalid_iterator.211] passed iterators may not belong to container", @@ -652,8 +652,8 @@ TEST_CASE("modifiers") SECTION("range for object") { - json j_object1 = {{"one", "eins"}, {"two", "zwei"}}; - json j_object2 = {{"eleven", "elf"}, {"seventeen", "siebzehn"}}; + json j_object1 = { { "one", "eins" }, { "two", "zwei" } }; + json j_object2 = { { "eleven", "elf" }, { "seventeen", "siebzehn" } }; SECTION("proper usage") { @@ -669,7 +669,7 @@ TEST_CASE("modifiers") SECTION("invalid iterators") { - json const j_other_array2 = {"first", "second"}; + json const j_other_array2 = { "first", "second" }; CHECK_THROWS_WITH_AS(j_array.insert(j_object2.begin(), j_object2.end()), "[json.exception.type_error.309] cannot use insert() with array", @@ -687,37 +687,37 @@ TEST_CASE("modifiers") { SECTION("insert before begin()") { - auto it = j_array.insert(j_array.begin(), {7, 8, 9}); + auto it = j_array.insert(j_array.begin(), { 7, 8, 9 }); CHECK(j_array.size() == 7); CHECK(*it == json(7)); CHECK(j_array.begin() == it); - CHECK(j_array == json({7, 8, 9, 1, 2, 3, 4})); + CHECK(j_array == json({ 7, 8, 9, 1, 2, 3, 4 })); } SECTION("insert in the middle") { - auto it = j_array.insert(j_array.begin() + 2, {7, 8, 9}); + auto it = j_array.insert(j_array.begin() + 2, { 7, 8, 9 }); CHECK(j_array.size() == 7); CHECK(*it == json(7)); CHECK((it - j_array.begin()) == 2); - CHECK(j_array == json({1, 2, 7, 8, 9, 3, 4})); + CHECK(j_array == json({ 1, 2, 7, 8, 9, 3, 4 })); } SECTION("insert before end()") { - auto it = j_array.insert(j_array.end(), {7, 8, 9}); + auto it = j_array.insert(j_array.end(), { 7, 8, 9 }); CHECK(j_array.size() == 7); CHECK(*it == json(7)); CHECK((j_array.end() - it) == 3); - CHECK(j_array == json({1, 2, 3, 4, 7, 8, 9})); + CHECK(j_array == json({ 1, 2, 3, 4, 7, 8, 9 })); } } SECTION("invalid iterator") { // pass iterator to a different array - json j_another_array = {1, 2}; - json j_yet_another_array = {"first", "second"}; + json j_another_array = { 1, 2 }; + json j_yet_another_array = { "first", "second" }; CHECK_THROWS_WITH_AS(j_array.insert(j_another_array.end(), 10), "[json.exception.invalid_iterator.202] iterator does not fit current value", json::invalid_iterator&); @@ -730,7 +730,7 @@ TEST_CASE("modifiers") CHECK_THROWS_WITH_AS(j_array.insert(j_another_array.end(), j_yet_another_array.begin(), j_yet_another_array.end()), "[json.exception.invalid_iterator.202] iterator does not fit current value", json::invalid_iterator&); - CHECK_THROWS_WITH_AS(j_array.insert(j_another_array.end(), {1, 2, 3, 4}), + CHECK_THROWS_WITH_AS(j_array.insert(j_another_array.end(), { 1, 2, 3, 4 }), "[json.exception.invalid_iterator.202] iterator does not fit current value", json::invalid_iterator&); } @@ -739,7 +739,7 @@ TEST_CASE("modifiers") { // call insert on a non-array type json j_nonarray = 3; - json j_yet_another_array = {"first", "second"}; + json j_yet_another_array = { "first", "second" }; CHECK_THROWS_WITH_AS(j_nonarray.insert(j_nonarray.end(), 10), "[json.exception.type_error.309] cannot use insert() with number", json::type_error&); CHECK_THROWS_WITH_AS(j_nonarray.insert(j_nonarray.end(), j_value), "[json.exception.type_error.309] cannot use insert() with number", @@ -750,7 +750,7 @@ TEST_CASE("modifiers") CHECK_THROWS_WITH_AS(j_nonarray.insert(j_nonarray.end(), j_yet_another_array.begin(), j_yet_another_array.end()), "[json.exception.type_error.309] cannot use insert() with number", json::type_error&); - CHECK_THROWS_WITH_AS(j_nonarray.insert(j_nonarray.end(), {1, 2, 3, 4}), + CHECK_THROWS_WITH_AS(j_nonarray.insert(j_nonarray.end(), { 1, 2, 3, 4 }), "[json.exception.type_error.309] cannot use insert() with number", json::type_error&); } @@ -760,16 +760,16 @@ TEST_CASE("modifiers") { SECTION("non-recursive (default)") { - json j_object1 = {{"one", "eins"}, {"two", "zwei"}}; - json j_object2 = {{"three", "drei"}, {"two", "zwo"}}; - json j_array = {1, 2, 3, 4}; + json j_object1 = { { "one", "eins" }, { "two", "zwei" } }; + json j_object2 = { { "three", "drei" }, { "two", "zwo" } }; + json j_array = { 1, 2, 3, 4 }; SECTION("const reference") { SECTION("proper usage") { j_object1.update(j_object2); - CHECK(j_object1 == json({{"one", "eins"}, {"two", "zwo"}, {"three", "drei"}})); + CHECK(j_object1 == json({ { "one", "eins" }, { "two", "zwo" }, { "three", "drei" } })); json j_null; j_null.update(j_object2); @@ -789,7 +789,7 @@ TEST_CASE("modifiers") SECTION("proper usage") { j_object1.update(j_object2.begin(), j_object2.end()); - CHECK(j_object1 == json({{"one", "eins"}, {"two", "zwo"}, {"three", "drei"}})); + CHECK(j_object1 == json({ { "one", "eins" }, { "two", "zwo" }, { "three", "drei" } })); json j_null; j_null.update(j_object2.begin(), j_object2.end()); @@ -799,12 +799,12 @@ TEST_CASE("modifiers") SECTION("empty range") { j_object1.update(j_object2.begin(), j_object2.begin()); - CHECK(j_object1 == json({{"one", "eins"}, {"two", "zwei"}})); + CHECK(j_object1 == json({ { "one", "eins" }, { "two", "zwei" } })); } SECTION("invalid iterators") { - json const j_other_array2 = {"first", "second"}; + json const j_other_array2 = { "first", "second" }; CHECK_THROWS_WITH_AS(j_array.update(j_object2.begin(), j_object2.end()), "[json.exception.type_error.312] cannot use update() with array", @@ -825,18 +825,18 @@ TEST_CASE("modifiers") { SECTION("extend object") { - json j1 = {{"string", "s"}, {"numbers", {{"one", 1}}}}; - json const j2 = {{"string", "t"}, {"numbers", {{"two", 2}}}}; + json j1 = { { "string", "s" }, { "numbers", { { "one", 1 } } } }; + json const j2 = { { "string", "t" }, { "numbers", { { "two", 2 } } } }; j1.update(j2, true); - CHECK(j1 == json({{"string", "t"}, {"numbers", {{"one", 1}, {"two", 2}}}})); + CHECK(j1 == json({ { "string", "t" }, { "numbers", { { "one", 1 }, { "two", 2 } } } })); } SECTION("replace object") { - json j1 = {{"string", "s"}, {"numbers", {{"one", 1}}}}; - json const j2 = {{"string", "t"}, {"numbers", 1}}; + json j1 = { { "string", "s" }, { "numbers", { { "one", 1 } } } }; + json const j2 = { { "string", "t" }, { "numbers", 1 } }; j1.update(j2, true); - CHECK(j1 == json({{"string", "t"}, {"numbers", 1}})); + CHECK(j1 == json({ { "string", "t" }, { "numbers", 1 } })); } } } @@ -874,22 +874,22 @@ TEST_CASE("modifiers") { SECTION("array_t type") { - json j = {1, 2, 3, 4}; - json::array_t a = {"foo", "bar", "baz"}; + json j = { 1, 2, 3, 4 }; + json::array_t a = { "foo", "bar", "baz" }; j.swap(a); - CHECK(j == json({"foo", "bar", "baz"})); + CHECK(j == json({ "foo", "bar", "baz" })); j.swap(a); - CHECK(j == json({1, 2, 3, 4})); + CHECK(j == json({ 1, 2, 3, 4 })); } SECTION("non-array_t type") { json j = 17; - json::array_t a = {"foo", "bar", "baz"}; + json::array_t a = { "foo", "bar", "baz" }; CHECK_THROWS_WITH_AS(j.swap(a), "[json.exception.type_error.310] cannot use swap(array_t&) with number", json::type_error&); } @@ -899,22 +899,22 @@ TEST_CASE("modifiers") { SECTION("object_t type") { - json j = {{"one", 1}, {"two", 2}}; - json::object_t o = {{"cow", "Kuh"}, {"chicken", "Huhn"}}; + json j = { { "one", 1 }, { "two", 2 } }; + json::object_t o = { { "cow", "Kuh" }, { "chicken", "Huhn" } }; j.swap(o); - CHECK(j == json({{"cow", "Kuh"}, {"chicken", "Huhn"}})); + CHECK(j == json({ { "cow", "Kuh" }, { "chicken", "Huhn" } })); j.swap(o); - CHECK(j == json({{"one", 1}, {"two", 2}})); + CHECK(j == json({ { "one", 1 }, { "two", 2 } })); } SECTION("non-object_t type") { json j = 17; - json::object_t o = {{"cow", "Kuh"}, {"chicken", "Huhn"}}; + json::object_t o = { { "cow", "Kuh" }, { "chicken", "Huhn" } }; CHECK_THROWS_WITH_AS(j.swap(o), "[json.exception.type_error.310] cannot use swap(object_t&) with number", json::type_error&); } @@ -949,37 +949,37 @@ TEST_CASE("modifiers") { SECTION("binary_t type") { - json j = json::binary({1, 2, 3, 4}); - json::binary_t s = {{5, 6, 7, 8}}; + json j = json::binary({ 1, 2, 3, 4 }); + json::binary_t s = { { 5, 6, 7, 8 } }; j.swap(s); - CHECK(j == json::binary({5, 6, 7, 8})); + CHECK(j == json::binary({ 5, 6, 7, 8 })); j.swap(s); - CHECK(j == json::binary({1, 2, 3, 4})); + CHECK(j == json::binary({ 1, 2, 3, 4 })); } SECTION("binary_t::container_type type") { - json j = json::binary({1, 2, 3, 4}); - std::vector s = {{5, 6, 7, 8}}; + json j = json::binary({ 1, 2, 3, 4 }); + std::vector s = { { 5, 6, 7, 8 } }; j.swap(s); - CHECK(j == json::binary({5, 6, 7, 8})); + CHECK(j == json::binary({ 5, 6, 7, 8 })); j.swap(s); - CHECK(j == json::binary({1, 2, 3, 4})); + CHECK(j == json::binary({ 1, 2, 3, 4 })); } SECTION("non-binary_t type") { json j = 17; - json::binary_t s1 = {{1, 2, 3, 4}}; - std::vector s2 = {{5, 6, 7, 8}}; + json::binary_t s1 = { { 1, 2, 3, 4 } }; + std::vector s2 = { { 5, 6, 7, 8 } }; CHECK_THROWS_WITH_AS(j.swap(s1), "[json.exception.type_error.310] cannot use swap(binary_t&) with number", json::type_error); CHECK_THROWS_WITH_AS(j.swap(s2), "[json.exception.type_error.310] cannot use swap(binary_t::container_type&) with number", json::type_error); diff --git a/tests/src/unit-msgpack.cpp b/tests/src/unit-msgpack.cpp index 7ed17c4f7..bbeb8227c 100644 --- a/tests/src/unit-msgpack.cpp +++ b/tests/src/unit-msgpack.cpp @@ -118,7 +118,7 @@ TEST_CASE("MessagePack") SECTION("null") { json const j = nullptr; - std::vector const expected = {0xc0}; + std::vector const expected = { 0xc0 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -132,7 +132,7 @@ TEST_CASE("MessagePack") SECTION("true") { json const j = true; - std::vector const expected = {0xc3}; + std::vector const expected = { 0xc3 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -144,7 +144,7 @@ TEST_CASE("MessagePack") SECTION("false") { json const j = false; - std::vector const expected = {0xc2}; + std::vector const expected = { 0xc2 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -171,7 +171,7 @@ TEST_CASE("MessagePack") CHECK(j.is_number_integer()); // create expected byte vector - std::vector const expected{static_cast(i)}; + std::vector const expected{ static_cast(i) }; // compare result + size const auto result = json::to_msgpack(j); @@ -201,7 +201,7 @@ TEST_CASE("MessagePack") CHECK(j.is_number_integer()); // create expected byte vector - std::vector const expected{static_cast(i)}; + std::vector const expected{ static_cast(i) }; // compare result + size const auto result = json::to_msgpack(j); @@ -290,7 +290,7 @@ TEST_CASE("MessagePack") SECTION("65536..4294967295 (int 32)") { - for (uint32_t i : {65536u, 77777u, 1048576u, 4294967295u}) + for (uint32_t i : { 65536u, 77777u, 1048576u, 4294967295u }) { CAPTURE(i) @@ -329,7 +329,7 @@ TEST_CASE("MessagePack") SECTION("4294967296..9223372036854775807 (int 64)") { - for (uint64_t i : {4294967296LU, 9223372036854775807LU}) + for (uint64_t i : { 4294967296LU, 9223372036854775807LU }) { CAPTURE(i) @@ -408,7 +408,7 @@ TEST_CASE("MessagePack") SECTION("-9263 (int 16)") { json const j = -9263; - std::vector const expected = {0xd1, 0xdb, 0xd1}; + std::vector const expected = { 0xd1, 0xdb, 0xd1 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -459,11 +459,7 @@ TEST_CASE("MessagePack") SECTION("-32769..-2147483648") { std::vector const numbers{ - -32769, - -65536, - -77777, - -1048576, - -2147483648LL, + -32769, -65536, -77777, -1048576, -2147483648LL, }; for (auto i : numbers) { @@ -565,7 +561,7 @@ TEST_CASE("MessagePack") CHECK(j.is_number_unsigned()); // create expected byte vector - std::vector const expected{static_cast(i)}; + std::vector const expected{ static_cast(i) }; // compare result + size const auto result = json::to_msgpack(j); @@ -652,7 +648,7 @@ TEST_CASE("MessagePack") SECTION("65536..4294967295 (uint 32)") { - for (const uint32_t i : {65536u, 77777u, 1048576u, 4294967295u}) + for (const uint32_t i : { 65536u, 77777u, 1048576u, 4294967295u }) { CAPTURE(i) @@ -690,7 +686,7 @@ TEST_CASE("MessagePack") SECTION("4294967296..18446744073709551615 (uint 64)") { - for (const uint64_t i : {4294967296LU, 18446744073709551615LU}) + for (const uint64_t i : { 4294967296LU, 18446744073709551615LU }) { CAPTURE(i) @@ -739,7 +735,7 @@ TEST_CASE("MessagePack") { double const v = 3.1415925; json const j = v; - std::vector const expected = {0xcb, 0x40, 0x09, 0x21, 0xfb, 0x3f, 0xa6, 0xde, 0xfc}; + std::vector const expected = { 0xcb, 0x40, 0x09, 0x21, 0xfb, 0x3f, 0xa6, 0xde, 0xfc }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -753,7 +749,7 @@ TEST_CASE("MessagePack") { double const v = 1.0; json const j = v; - std::vector const expected = {0xca, 0x3f, 0x80, 0x00, 0x00}; + std::vector const expected = { 0xca, 0x3f, 0x80, 0x00, 0x00 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -767,7 +763,7 @@ TEST_CASE("MessagePack") { double const v = 128.1280059814453125; json const j = v; - std::vector const expected = {0xca, 0x43, 0x00, 0x20, 0xc5}; + std::vector const expected = { 0xca, 0x43, 0x00, 0x20, 0xc5 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -784,8 +780,8 @@ TEST_CASE("MessagePack") SECTION("N = 0..31") { // explicitly enumerate the first byte for all 32 strings - const std::vector first_bytes = {0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf}; + const std::vector first_bytes = { 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf }; for (size_t N = 0; N < first_bytes.size(); ++N) { @@ -856,7 +852,7 @@ TEST_CASE("MessagePack") SECTION("N = 256..65535") { - for (size_t N : {256u, 999u, 1025u, 3333u, 2048u, 65535u}) + for (size_t N : { 256u, 999u, 1025u, 3333u, 2048u, 65535u }) { CAPTURE(N) @@ -886,7 +882,7 @@ TEST_CASE("MessagePack") SECTION("N = 65536..4294967295") { - for (size_t N : {65536u, 77777u, 1048576u}) + for (size_t N : { 65536u, 77777u, 1048576u }) { CAPTURE(N) @@ -922,7 +918,7 @@ TEST_CASE("MessagePack") SECTION("empty") { json const j = json::array(); - std::vector const expected = {0x90}; + std::vector const expected = { 0x90 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -933,8 +929,8 @@ TEST_CASE("MessagePack") SECTION("[null]") { - json const j = {nullptr}; - std::vector const expected = {0x91, 0xc0}; + json const j = { nullptr }; + std::vector const expected = { 0x91, 0xc0 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -946,7 +942,7 @@ TEST_CASE("MessagePack") SECTION("[1,2,3,4,5]") { json const j = json::parse("[1,2,3,4,5]"); - std::vector const expected = {0x95, 0x01, 0x02, 0x03, 0x04, 0x05}; + std::vector const expected = { 0x95, 0x01, 0x02, 0x03, 0x04, 0x05 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -958,7 +954,7 @@ TEST_CASE("MessagePack") SECTION("[[[[]]]]") { json const j = json::parse("[[[[]]]]"); - std::vector const expected = {0x91, 0x91, 0x91, 0x90}; + std::vector const expected = { 0x91, 0x91, 0x91, 0x90 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -1012,7 +1008,7 @@ TEST_CASE("MessagePack") SECTION("empty") { json const j = json::object(); - std::vector const expected = {0x80}; + std::vector const expected = { 0x80 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -1023,8 +1019,8 @@ TEST_CASE("MessagePack") SECTION("{\"\":null}") { - json const j = {{"", nullptr}}; - std::vector const expected = {0x81, 0xa0, 0xc0}; + json const j = { { "", nullptr } }; + std::vector const expected = { 0x81, 0xa0, 0xc0 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -1036,7 +1032,7 @@ TEST_CASE("MessagePack") SECTION("{\"a\": {\"b\": {\"c\": {}}}}") { json const j = json::parse(R"({"a": {"b": {"c": {}}}})"); - std::vector const expected = {0x81, 0xa1, 0x61, 0x81, 0xa1, 0x62, 0x81, 0xa1, 0x63, 0x80}; + std::vector const expected = { 0x81, 0xa1, 0x61, 0x81, 0xa1, 0x62, 0x81, 0xa1, 0x63, 0x80 }; const auto result = json::to_msgpack(j); CHECK(result == expected); @@ -1177,7 +1173,7 @@ TEST_CASE("MessagePack") SECTION("N = 256..65535") { - for (std::size_t N : {256u, 999u, 1025u, 3333u, 2048u, 65535u}) + for (std::size_t N : { 256u, 999u, 1025u, 3333u, 2048u, 65535u }) { CAPTURE(N) @@ -1210,7 +1206,7 @@ TEST_CASE("MessagePack") SECTION("N = 65536..4294967295") { - for (std::size_t N : {65536u, 77777u, 1048576u}) + for (std::size_t N : { 65536u, 77777u, 1048576u }) { CAPTURE(N) @@ -1283,7 +1279,7 @@ TEST_CASE("MessagePack") SECTION("N = 256..65535") { - for (std::size_t N : {256u, 999u, 1025u, 3333u, 2048u, 65535u}) + for (std::size_t N : { 256u, 999u, 1025u, 3333u, 2048u, 65535u }) { CAPTURE(N) @@ -1313,7 +1309,7 @@ TEST_CASE("MessagePack") SECTION("N = 65536..4294967295") { - for (std::size_t N : {65536u, 77777u, 1048576u}) + for (std::size_t N : { 65536u, 77777u, 1048576u }) { CAPTURE(N) @@ -1347,7 +1343,7 @@ TEST_CASE("MessagePack") SECTION("from float32") { - auto given = std::vector({0xca, 0x41, 0xc8, 0x00, 0x01}); + auto given = std::vector({ 0xca, 0x41, 0xc8, 0x00, 0x01 }); json const j = json::from_msgpack(given); CHECK(j.get() == Approx(25.0000019073486)); } @@ -1369,107 +1365,107 @@ TEST_CASE("MessagePack") json _; CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0x87})), + _ = json::from_msgpack(std::vector({ 0x87 })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing MessagePack string: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcc})), + _ = json::from_msgpack(std::vector({ 0xcc })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcd})), + _ = json::from_msgpack(std::vector({ 0xcd })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcd, 0x00})), + _ = json::from_msgpack(std::vector({ 0xcd, 0x00 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xce})), + _ = json::from_msgpack(std::vector({ 0xce })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xce, 0x00})), + _ = json::from_msgpack(std::vector({ 0xce, 0x00 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xce, 0x00, 0x00})), + _ = json::from_msgpack(std::vector({ 0xce, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xce, 0x00, 0x00, 0x00})), + _ = json::from_msgpack(std::vector({ 0xce, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcf})), + _ = json::from_msgpack(std::vector({ 0xcf })), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcf, 0x00})), + _ = json::from_msgpack(std::vector({ 0xcf, 0x00 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcf, 0x00, 0x00})), + _ = json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00})), + _ = json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00, 0x00})), + _ = json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 6: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00})), + _ = json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 7: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})), + _ = json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 8: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})), + _ = json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })), "[json.exception.parse_error.110] parse error at byte 9: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xa5, 0x68, 0x65})), + _ = json::from_msgpack(std::vector({ 0xa5, 0x68, 0x65 })), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing MessagePack string: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0x92, 0x01})), + _ = json::from_msgpack(std::vector({ 0x92, 0x01 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing MessagePack value: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0x81, 0xa1, 0x61})), + _ = json::from_msgpack(std::vector({ 0x81, 0xa1, 0x61 })), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing MessagePack value: unexpected end of input", json::parse_error&); CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0xc4, 0x02})), + _ = json::from_msgpack(std::vector({ 0xc4, 0x02 })), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing MessagePack binary: unexpected end of input", json::parse_error&); - CHECK(json::from_msgpack(std::vector({0x87}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcc}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcd}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcd, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xce}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xce, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xce, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xce, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcf}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcf, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcf, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xa5, 0x68, 0x65}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0x92, 0x01}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0x81, 0xA1, 0x61}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xc4, 0x02}), true, false).is_discarded()); - CHECK(json::from_msgpack(std::vector({0xc4}), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0x87 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcc }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcd }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcd, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xce }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xce, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xce, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xce, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcf }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcf, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xa5, 0x68, 0x65 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0x92, 0x01 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0x81, 0xA1, 0x61 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xc4, 0x02 }), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0xc4 }), true, false).is_discarded()); } SECTION("unsupported bytes") @@ -1477,19 +1473,19 @@ TEST_CASE("MessagePack") SECTION("concrete examples") { json _; - CHECK_THROWS_WITH_AS(_ = json::from_msgpack(std::vector({0xc1})), + CHECK_THROWS_WITH_AS(_ = json::from_msgpack(std::vector({ 0xc1 })), "[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing MessagePack value: invalid byte: 0xC1", json::parse_error&); } SECTION("all unsupported bytes") { - for (auto byte : {// never used - 0xc1}) + for (auto byte : { // never used + 0xc1 }) { json _; - CHECK_THROWS_AS(_ = json::from_msgpack(std::vector({static_cast(byte)})), json::parse_error&); - CHECK(json::from_msgpack(std::vector({static_cast(byte)}), true, false).is_discarded()); + CHECK_THROWS_AS(_ = json::from_msgpack(std::vector({ static_cast(byte) })), json::parse_error&); + CHECK(json::from_msgpack(std::vector({ static_cast(byte) }), true, false).is_discarded()); } } } @@ -1498,15 +1494,15 @@ TEST_CASE("MessagePack") { json _; CHECK_THROWS_WITH_AS( - _ = json::from_msgpack(std::vector({0x81, 0xff, 0x01})), + _ = json::from_msgpack(std::vector({ 0x81, 0xff, 0x01 })), "[json.exception.parse_error.113] parse error at byte 2: syntax error while parsing MessagePack string: expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0xFF", json::parse_error&); - CHECK(json::from_msgpack(std::vector({0x81, 0xff, 0x01}), true, false).is_discarded()); + CHECK(json::from_msgpack(std::vector({ 0x81, 0xff, 0x01 }), true, false).is_discarded()); } SECTION("strict mode") { - std::vector const vec = {0xc0, 0xc0}; + std::vector const vec = { 0xc0, 0xc0 }; SECTION("non-strict mode") { const auto result = json::from_msgpack(vec, false); @@ -1529,21 +1525,21 @@ TEST_CASE("MessagePack") { SECTION("start_array(len)") { - std::vector const v = {0x93, 0x01, 0x02, 0x03}; + std::vector const v = { 0x93, 0x01, 0x02, 0x03 }; SaxCountdown scp(0); CHECK(!json::sax_parse(v, &scp, json::input_format_t::msgpack)); } SECTION("start_object(len)") { - std::vector const v = {0x81, 0xa3, 0x66, 0x6F, 0x6F, 0xc2}; + std::vector const v = { 0x81, 0xa3, 0x66, 0x6F, 0x6F, 0xc2 }; SaxCountdown scp(0); CHECK(!json::sax_parse(v, &scp, json::input_format_t::msgpack)); } SECTION("key()") { - std::vector const v = {0x81, 0xa3, 0x66, 0x6F, 0x6F, 0xc2}; + std::vector const v = { 0x81, 0xa3, 0x66, 0x6F, 0x6F, 0xc2 }; SaxCountdown scp(1); CHECK(!json::sax_parse(v, &scp, json::input_format_t::msgpack)); } @@ -1615,151 +1611,151 @@ TEST_CASE("MessagePack roundtrips" * doctest::skip()) exclude_packed.insert(TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_simple.json"); exclude_packed.insert(TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_string_unicode.json"); - for (std::string filename : {TEST_DATA_DIRECTORY "/json_nlohmann_tests/all_unicode.json", - TEST_DATA_DIRECTORY "/json.org/1.json", - TEST_DATA_DIRECTORY "/json.org/2.json", - TEST_DATA_DIRECTORY "/json.org/3.json", - TEST_DATA_DIRECTORY "/json.org/4.json", - TEST_DATA_DIRECTORY "/json.org/5.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip01.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip02.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip03.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip04.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip05.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip06.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip07.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip08.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip09.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip10.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip11.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip12.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip13.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip14.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip15.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip16.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip17.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip18.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip19.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip20.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip21.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip22.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip23.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip24.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip25.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip26.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip27.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip28.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip29.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip30.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip31.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip32.json", - TEST_DATA_DIRECTORY "/json_testsuite/sample.json", // kills AppVeyor - TEST_DATA_DIRECTORY "/json_tests/pass1.json", - TEST_DATA_DIRECTORY "/json_tests/pass2.json", - TEST_DATA_DIRECTORY "/json_tests/pass3.json", - TEST_DATA_DIRECTORY "/regression/floats.json", - TEST_DATA_DIRECTORY "/regression/signed_ints.json", - TEST_DATA_DIRECTORY "/regression/unsigned_ints.json", - TEST_DATA_DIRECTORY "/regression/working_file.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty-string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_heterogeneous.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_leading_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_several_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e+1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_after_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_huge_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_int_with_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_minus_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_one.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_underflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_real.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_basic.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_long_strings.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_simple.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_string_unicode.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_with_newlines.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_comments.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_a.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_n.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_null_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_pi.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_simple_ascii.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_uEscape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json", - // TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf16.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_with_del_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_true.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_string_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_true_in_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json"}) + for (std::string filename : { TEST_DATA_DIRECTORY "/json_nlohmann_tests/all_unicode.json", + TEST_DATA_DIRECTORY "/json.org/1.json", + TEST_DATA_DIRECTORY "/json.org/2.json", + TEST_DATA_DIRECTORY "/json.org/3.json", + TEST_DATA_DIRECTORY "/json.org/4.json", + TEST_DATA_DIRECTORY "/json.org/5.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip01.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip02.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip03.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip04.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip05.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip06.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip07.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip08.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip09.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip10.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip11.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip12.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip13.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip14.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip15.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip16.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip17.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip18.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip19.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip20.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip21.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip22.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip23.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip24.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip25.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip26.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip27.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip28.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip29.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip30.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip31.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip32.json", + TEST_DATA_DIRECTORY "/json_testsuite/sample.json", // kills AppVeyor + TEST_DATA_DIRECTORY "/json_tests/pass1.json", + TEST_DATA_DIRECTORY "/json_tests/pass2.json", + TEST_DATA_DIRECTORY "/json_tests/pass3.json", + TEST_DATA_DIRECTORY "/regression/floats.json", + TEST_DATA_DIRECTORY "/regression/signed_ints.json", + TEST_DATA_DIRECTORY "/regression/unsigned_ints.json", + TEST_DATA_DIRECTORY "/regression/working_file.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty-string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_heterogeneous.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_leading_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_several_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e+1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_after_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_huge_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_int_with_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_minus_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_one.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_underflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_real.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_basic.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_long_strings.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_simple.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_string_unicode.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_with_newlines.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_comments.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_a.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_n.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_null_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_pi.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_simple_ascii.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_uEscape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json", + // TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf16.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_with_del_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_true.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_string_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_true_in_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json" }) { CAPTURE(filename) @@ -1802,7 +1798,7 @@ TEST_CASE("MessagePack roundtrips" * doctest::skip()) // parse MessagePack file auto packed = utils::read_binary_file(filename + ".msgpack"); json j2; - CHECK_NOTHROW(j2 = json::from_msgpack({packed.data(), packed.size()})); + CHECK_NOTHROW(j2 = json::from_msgpack({ packed.data(), packed.size() })); // compare parsed JSON values CHECK(j1 == j2); diff --git a/tests/src/unit-no-mem-leak-on-adl-serialize.cpp b/tests/src/unit-no-mem-leak-on-adl-serialize.cpp index 24d6018ed..15970ca15 100644 --- a/tests/src/unit-no-mem-leak-on-adl-serialize.cpp +++ b/tests/src/unit-no-mem-leak-on-adl-serialize.cpp @@ -48,7 +48,7 @@ TEST_CASE("check_for_mem_leak_on_adl_to_json-1") { try { - const nlohmann::json j = Foo{1, 0}; + const nlohmann::json j = Foo{ 1, 0 }; std::cout << j.dump() << "\n"; } catch (...) // NOLINT(bugprone-empty-catch) @@ -61,7 +61,7 @@ TEST_CASE("check_for_mem_leak_on_adl_to_json-2") { try { - const nlohmann::json j = Foo{1, 1}; + const nlohmann::json j = Foo{ 1, 1 }; std::cout << j.dump() << "\n"; } catch (...) // NOLINT(bugprone-empty-catch) @@ -74,7 +74,7 @@ TEST_CASE("check_for_mem_leak_on_adl_to_json-2") { try { - const nlohmann::json j = Foo{1, 2}; + const nlohmann::json j = Foo{ 1, 2 }; std::cout << j.dump() << "\n"; } catch (...) // NOLINT(bugprone-empty-catch) diff --git a/tests/src/unit-ordered_json.cpp b/tests/src/unit-ordered_json.cpp index 930d8cf85..64dadd31a 100644 --- a/tests/src/unit-ordered_json.cpp +++ b/tests/src/unit-ordered_json.cpp @@ -45,11 +45,11 @@ TEST_CASE("ordered_json") CHECK(oj.dump() == "{\"element3\":3,\"element2\":2}"); // There are no dup keys cause constructor calls emplace... - json const multi{{"z", 1}, {"m", 2}, {"m", 3}, {"y", 4}, {"m", 5}}; + json const multi{ { "z", 1 }, { "m", 2 }, { "m", 3 }, { "y", 4 }, { "m", 5 } }; CHECK(multi.size() == 3); CHECK(multi.dump() == "{\"m\":2,\"y\":4,\"z\":1}"); - ordered_json multi_ordered{{"z", 1}, {"m", 2}, {"m", 3}, {"y", 4}, {"m", 5}}; + ordered_json multi_ordered{ { "z", 1 }, { "m", 2 }, { "m", 3 }, { "y", 4 }, { "m", 5 } }; CHECK(multi_ordered.size() == 3); CHECK(multi_ordered.dump() == "{\"z\":1,\"m\":2,\"y\":4}"); CHECK(multi_ordered.erase("m") == 1); @@ -57,14 +57,14 @@ TEST_CASE("ordered_json") // Ranged insert test. // It seems that values shouldn't be overwritten. Only new values are added - json j1{{"c", 1}, {"b", 2}, {"a", 3}}; - const json j2{{"c", 77}, {"d", 42}, {"a", 4}}; + json j1{ { "c", 1 }, { "b", 2 }, { "a", 3 } }; + const json j2{ { "c", 77 }, { "d", 42 }, { "a", 4 } }; j1.insert(j2.cbegin(), j2.cend()); CHECK(j1.size() == 4); CHECK(j1.dump() == "{\"a\":3,\"b\":2,\"c\":1,\"d\":42}"); - ordered_json oj1{{"c", 1}, {"b", 2}, {"a", 3}}; - const ordered_json oj2{{"c", 77}, {"d", 42}, {"a", 4}}; + ordered_json oj1{ { "c", 1 }, { "b", 2 }, { "a", 3 } }; + const ordered_json oj2{ { "c", 77 }, { "d", 42 }, { "a", 4 } }; oj1.insert(oj2.cbegin(), oj2.cend()); CHECK(oj1.size() == 4); CHECK(oj1.dump() == "{\"c\":1,\"b\":2,\"a\":3,\"d\":42}"); diff --git a/tests/src/unit-ordered_map.cpp b/tests/src/unit-ordered_map.cpp index f682a49f0..7edd09b76 100644 --- a/tests/src/unit-ordered_map.cpp +++ b/tests/src/unit-ordered_map.cpp @@ -17,14 +17,14 @@ TEST_CASE("ordered_map") { SECTION("constructor from iterator range") { - std::map m{{"eins", "one"}, {"zwei", "two"}, {"drei", "three"}}; + std::map m{ { "eins", "one" }, { "zwei", "two" }, { "drei", "three" } }; ordered_map const om(m.begin(), m.end()); CHECK(om.size() == 3); } SECTION("copy assignment") { - std::map m{{"eins", "one"}, {"zwei", "two"}, {"drei", "three"}}; + std::map m{ { "eins", "one" }, { "zwei", "two" }, { "drei", "three" } }; ordered_map om(m.begin(), m.end()); const auto com = om; om.clear(); // silence a warning by forbidding having "const auto& com = om;" @@ -34,7 +34,7 @@ TEST_CASE("ordered_map") SECTION("at") { - std::map m{{"eins", "one"}, {"zwei", "two"}, {"drei", "three"}}; + std::map m{ { "eins", "one" }, { "zwei", "two" }, { "drei", "three" } }; ordered_map om(m.begin(), m.end()); const auto com = om; @@ -67,7 +67,7 @@ TEST_CASE("ordered_map") SECTION("operator[]") { - std::map m{{"eins", "one"}, {"zwei", "two"}, {"drei", "three"}}; + std::map m{ { "eins", "one" }, { "zwei", "two" }, { "drei", "three" } }; ordered_map om(m.begin(), m.end()); const auto com = om; @@ -280,8 +280,8 @@ TEST_CASE("ordered_map") SECTION("const value_type&") { - ordered_map::value_type const vt1{"eins", "1"}; - ordered_map::value_type const vt4{"vier", "four"}; + ordered_map::value_type const vt1{ "eins", "1" }; + ordered_map::value_type const vt4{ "vier", "four" }; auto res1 = om.insert(vt1); CHECK(res1.first == om.begin()); @@ -296,12 +296,12 @@ TEST_CASE("ordered_map") SECTION("value_type&&") { - auto res1 = om.insert({"eins", "1"}); + auto res1 = om.insert({ "eins", "1" }); CHECK(res1.first == om.begin()); CHECK(res1.second == false); CHECK(om.size() == 3); - auto res4 = om.insert({"vier", "four"}); + auto res4 = om.insert({ "vier", "four" }); CHECK(res4.first == om.begin() + 3); CHECK(res4.second == true); CHECK(om.size() == 4); diff --git a/tests/src/unit-pointer_access.cpp b/tests/src/unit-pointer_access.cpp index 4503a3b73..2d2ec6556 100644 --- a/tests/src/unit-pointer_access.cpp +++ b/tests/src/unit-pointer_access.cpp @@ -16,7 +16,7 @@ TEST_CASE("pointer access") SECTION("pointer access to object_t") { using test_type = json::object_t; - json value = {{"one", 1}, {"two", 2}}; + json value = { { "one", 1 }, { "two", 2 } }; // check if pointers are returned correctly test_type* p1 = value.get_ptr(); @@ -45,7 +45,7 @@ TEST_CASE("pointer access") SECTION("pointer access to const object_t") { using test_type = const json::object_t; - const json value = {{"one", 1}, {"two", 2}}; + const json value = { { "one", 1 }, { "two", 2 } }; // check if pointers are returned correctly test_type* p1 = value.get_ptr(); @@ -74,7 +74,7 @@ TEST_CASE("pointer access") SECTION("pointer access to array_t") { using test_type = json::array_t; - json value = {1, 2, 3, 4}; + json value = { 1, 2, 3, 4 }; // check if pointers are returned correctly test_type* p1 = value.get_ptr(); @@ -103,7 +103,7 @@ TEST_CASE("pointer access") SECTION("pointer access to const array_t") { using test_type = const json::array_t; - const json value = {1, 2, 3, 4}; + const json value = { 1, 2, 3, 4 }; // check if pointers are returned correctly test_type* p1 = value.get_ptr(); @@ -422,7 +422,7 @@ TEST_CASE("pointer access") SECTION("pointer access to const binary_t") { using test_type = const json::binary_t; - const json value = json::binary({1, 2, 3}); + const json value = json::binary({ 1, 2, 3 }); // check if pointers are returned correctly test_type* p1 = value.get_ptr(); diff --git a/tests/src/unit-readme.cpp b/tests/src/unit-readme.cpp index 810cdff58..656f0d727 100644 --- a/tests/src/unit-readme.cpp +++ b/tests/src/unit-readme.cpp @@ -55,24 +55,24 @@ TEST_CASE("README" * doctest::skip()) j["answer"]["everything"] = 42; // add an array that is stored as std::vector (using an initializer list) - j["list"] = {1, 0, 2}; + j["list"] = { 1, 0, 2 }; // add another object (using an initializer list of pairs) - j["object"] = {{"currency", "USD"}, {"value", 42.99}}; + j["object"] = { { "currency", "USD" }, { "value", 42.99 } }; // instead, you could also write (which looks very similar to the JSON above) - json const j2 = {{"pi", 3.141}, - {"happy", true}, - {"name", "Niels"}, - {"nothing", nullptr}, - {"answer", {{"everything", 42}}}, - {"list", {1, 0, 2}}, - {"object", {{"currency", "USD"}, {"value", 42.99}}}}; + json const j2 = { { "pi", 3.141 }, + { "happy", true }, + { "name", "Niels" }, + { "nothing", nullptr }, + { "answer", { { "everything", 42 } } }, + { "list", { 1, 0, 2 } }, + { "object", { { "currency", "USD" }, { "value", 42.99 } } } }; } { // ways to express the empty array [] - json const empty_array_implicit = {{}}; + json const empty_array_implicit = { {} }; CHECK(empty_array_implicit.is_array()); json const empty_array_explicit = json::array(); CHECK(empty_array_explicit.is_array()); @@ -82,7 +82,7 @@ TEST_CASE("README" * doctest::skip()) CHECK(empty_object_explicit.is_object()); // a way to express an _array_ of key/value pairs [["currency", "USD"], ["value", 42.99]] - json array_not_object = json::array({{"currency", "USD"}, {"value", 42.99}}); + json array_not_object = json::array({ { "currency", "USD" }, { "value", 42.99 } }); CHECK(array_not_object.is_array()); CHECK(array_not_object.size() == 2); CHECK(array_not_object[0].is_array()); @@ -142,7 +142,7 @@ TEST_CASE("README" * doctest::skip()) // getter/setter const auto tmp = j[0].get(); j[1] = 42; - bool foo{j.at(2)}; + bool foo{ j.at(2) }; CHECK(foo == true); // other stuff @@ -166,57 +166,57 @@ TEST_CASE("README" * doctest::skip()) } { - std::vector const c_vector{1, 2, 3, 4}; + std::vector const c_vector{ 1, 2, 3, 4 }; json const j_vec(c_vector); // [1, 2, 3, 4] - std::deque const c_deque{1.2f, 2.3f, 3.4f, 5.6f}; + std::deque const c_deque{ 1.2f, 2.3f, 3.4f, 5.6f }; json const j_deque(c_deque); // [1.2, 2.3, 3.4, 5.6] - std::list const c_list{true, true, false, true}; + std::list const c_list{ true, true, false, true }; json const j_list(c_list); // [true, true, false, true] - std::forward_list const c_flist{12345678909876, 23456789098765, 34567890987654, 45678909876543}; + std::forward_list const c_flist{ 12345678909876, 23456789098765, 34567890987654, 45678909876543 }; json const j_flist(c_flist); // [12345678909876, 23456789098765, 34567890987654, 45678909876543] - std::array const c_array{{1, 2, 3, 4}}; + std::array const c_array{ { 1, 2, 3, 4 } }; json const j_array(c_array); // [1, 2, 3, 4] - std::set const c_set{"one", "two", "three", "four", "one"}; + std::set const c_set{ "one", "two", "three", "four", "one" }; json const j_set(c_set); // only one entry for "one" is used // ["four", "one", "three", "two"] - std::unordered_set const c_uset{"one", "two", "three", "four", "one"}; + std::unordered_set const c_uset{ "one", "two", "three", "four", "one" }; json const j_uset(c_uset); // only one entry for "one" is used // maybe ["two", "three", "four", "one"] - std::multiset const c_mset{"one", "two", "one", "four"}; + std::multiset const c_mset{ "one", "two", "one", "four" }; json const j_mset(c_mset); // both entries for "one" are used // maybe ["one", "two", "one", "four"] - std::unordered_multiset const c_umset{"one", "two", "one", "four"}; + std::unordered_multiset const c_umset{ "one", "two", "one", "four" }; json const j_umset(c_umset); // both entries for "one" are used // maybe ["one", "two", "one", "four"] } { - std::map const c_map{{"one", 1}, {"two", 2}, {"three", 3}}; + std::map const c_map{ { "one", 1 }, { "two", 2 }, { "three", 3 } }; json const j_map(c_map); // {"one": 1, "two": 2, "three": 3} - std::unordered_map const c_umap{{"one", 1.2f}, {"two", 2.3f}, {"three", 3.4f}}; + std::unordered_map const c_umap{ { "one", 1.2f }, { "two", 2.3f }, { "three", 3.4f } }; json const j_umap(c_umap); // {"one": 1.2, "two": 2.3, "three": 3.4} - std::multimap const c_mmap{{"one", true}, {"two", true}, {"three", false}, {"three", true}}; + std::multimap const c_mmap{ { "one", true }, { "two", true }, { "three", false }, { "three", true } }; json const j_mmap(c_mmap); // only one entry for key "three" is used // maybe {"one": true, "two": true, "three": true} - std::unordered_multimap const c_ummap{{"one", true}, {"two", true}, {"three", false}, {"three", true}}; + std::unordered_multimap const c_ummap{ { "one", true }, { "two", true }, { "three", false }, { "three", true } }; json const j_ummap(c_ummap); // only one entry for key "three" is used // maybe {"one": true, "two": true, "three": true} } @@ -230,13 +230,13 @@ TEST_CASE("README" * doctest::skip()) // Booleans bool const b1 = true; json const jb = b1; - bool b2{jb}; + bool b2{ jb }; CHECK(b2 == true); // numbers int const i = 42; json const jn = i; - double f{jn}; + double f{ jn }; CHECK(f == 42); // etc. diff --git a/tests/src/unit-reference_access.cpp b/tests/src/unit-reference_access.cpp index e2738a122..831f4806f 100644 --- a/tests/src/unit-reference_access.cpp +++ b/tests/src/unit-reference_access.cpp @@ -14,16 +14,16 @@ using nlohmann::json; TEST_CASE("reference access") { // create a JSON value with different types - const json json_types = {{"boolean", true}, - {"number", {{"integer", 42}, {"floating-point", 17.23}}}, - {"string", "Hello, world!"}, - {"array", {1, 2, 3, 4, 5}}, - {"null", nullptr}}; + const json json_types = { { "boolean", true }, + { "number", { { "integer", 42 }, { "floating-point", 17.23 } } }, + { "string", "Hello, world!" }, + { "array", { 1, 2, 3, 4, 5 } }, + { "null", nullptr } }; SECTION("reference access to object_t") { using test_type = json::object_t; - json value = {{"one", 1}, {"two", 2}}; + json value = { { "one", 1 }, { "two", 2 } }; // check if references are returned correctly auto& p1 = value.get_ref(); @@ -59,7 +59,7 @@ TEST_CASE("reference access") SECTION("const reference access to const object_t") { using test_type = json::object_t; - const json value = {{"one", 1}, {"two", 2}}; + const json value = { { "one", 1 }, { "two", 2 } }; // this should not compile // test_type& p1 = value.get_ref(); @@ -73,7 +73,7 @@ TEST_CASE("reference access") SECTION("reference access to array_t") { using test_type = json::array_t; - json value = {1, 2, 3, 4}; + json value = { 1, 2, 3, 4 }; // check if references are returned correctly auto& p1 = value.get_ref(); diff --git a/tests/src/unit-regression1.cpp b/tests/src/unit-regression1.cpp index 286a18ea8..c661b0860 100644 --- a/tests/src/unit-regression1.cpp +++ b/tests/src/unit-regression1.cpp @@ -59,7 +59,7 @@ struct foo_serializer::value>::t template static void to_json(BasicJsonType& j, const T& value) { - j = BasicJsonType{{"x", value.x}}; + j = BasicJsonType{ { "x", value.x } }; } template static void from_json(const BasicJsonType& j, T& value) // !!! @@ -105,7 +105,7 @@ struct nocopy // NOLINT(cppcoreguidelines-special-member-functions,hicpp-specia friend void to_json(json& j, const nocopy& n) { - j = {{"val", n.val}}; + j = { { "val", n.val } }; } }; } // namespace @@ -146,12 +146,12 @@ TEST_CASE("regression tests 1") { json const j1 = NAN; CHECK(j1.is_number_float()); - json::number_float_t const f1{j1}; + json::number_float_t const f1{ j1 }; CHECK(std::isnan(f1)); json const j2 = static_cast(NAN); CHECK(j2.is_number_float()); - json::number_float_t const f2{j2}; + json::number_float_t const f2{ j2 }; CHECK(std::isnan(f2)); } @@ -159,12 +159,12 @@ TEST_CASE("regression tests 1") { json const j1 = INFINITY; CHECK(j1.is_number_float()); - json::number_float_t const f1{j1}; + json::number_float_t const f1{ j1 }; CHECK(!std::isfinite(f1)); json const j2 = static_cast(INFINITY); CHECK(j2.is_number_float()); - json::number_float_t const f2{j2}; + json::number_float_t const f2{ j2 }; CHECK(!std::isfinite(f2)); } } @@ -190,7 +190,7 @@ TEST_CASE("regression tests 1") static_assert(std::is_same::value, "types must be the same"); - j.push_back(json::object({{"game_type", t}})); + j.push_back(json::object({ { "game_type", t } })); } SECTION("issue #76 - dump() / parse() not idempotent") @@ -241,9 +241,9 @@ TEST_CASE("regression tests 1") auto test = j["Test"].get(); CHECK(test == "Test1"); - int number{j["Number"]}; + int number{ j["Number"] }; CHECK(number == 100); - float foo{j["Foo"]}; + float foo{ j["Foo"] }; CHECK(static_cast(foo) == Approx(42.42)); } @@ -281,41 +281,41 @@ TEST_CASE("regression tests 1") SECTION("issue #93 reverse_iterator operator inheritance problem") { { - json a = {1, 2, 3}; + json a = { 1, 2, 3 }; json::reverse_iterator rit = a.rbegin(); ++rit; CHECK(*rit == json(2)); CHECK(rit.value() == json(2)); } { - json a = {1, 2, 3}; + json a = { 1, 2, 3 }; json::reverse_iterator const rit = ++a.rbegin(); CHECK(*rit == json(2)); CHECK(rit.value() == json(2)); } { - json a = {1, 2, 3}; + json a = { 1, 2, 3 }; json::reverse_iterator rit = a.rbegin(); ++rit; - json b = {0, 0, 0}; + json b = { 0, 0, 0 }; std::transform(rit, a.rend(), b.rbegin(), [](json el) { return el; }); - CHECK(b == json({0, 1, 2})); + CHECK(b == json({ 0, 1, 2 })); } { - json a = {1, 2, 3}; - json b = {0, 0, 0}; + json a = { 1, 2, 3 }; + json b = { 0, 0, 0 }; std::transform(++a.rbegin(), a.rend(), b.rbegin(), [](json el) { return el; }); - CHECK(b == json({0, 1, 2})); + CHECK(b == json({ 0, 1, 2 })); } } SECTION("issue #100 - failed to iterator json object with reverse_iterator") { - json config = {{"111", 111}, {"112", 112}, {"113", 113}}; + json config = { { "111", 111 }, { "112", 112 }, { "113", 113 } }; std::stringstream ss; @@ -335,9 +335,9 @@ TEST_CASE("regression tests 1") SECTION("issue #101 - binary string causes numbers to be dumped as hex") { int64_t const number = 10; - std::string const bytes{"\x00" - "asdf\n", - 6}; + std::string const bytes{ "\x00" + "asdf\n", + 6 }; json j; j["int64"] = number; j["binary string"] = bytes; @@ -348,7 +348,7 @@ TEST_CASE("regression tests 1") SECTION("issue #111 - subsequent unicode chars") { - std::string const bytes{0x7, 0x7}; + std::string const bytes{ 0x7, 0x7 }; json j; j["string"] = bytes; CHECK(j["string"] == "\u0007\u0007"); @@ -357,7 +357,7 @@ TEST_CASE("regression tests 1") #if JSON_USE_IMPLICIT_CONVERSIONS SECTION("issue #144 - implicit assignment to std::string fails") { - json o = {{"name", "value"}}; + json o = { { "name", "value" } }; std::string s1 = o["name"]; CHECK(s1 == "value"); @@ -558,8 +558,8 @@ TEST_CASE("regression tests 1") SECTION("issue #233 - Can't use basic_json::iterator as a base iterator for std::move_iterator") { - json source = {"a", "b", "c"}; - json expected = {"a", "b"}; + json source = { "a", "b", "c" }; + json expected = { "a", "b" }; json dest; std::copy_n(std::make_move_iterator(source.begin()), 2, std::back_inserter(dest)); @@ -569,11 +569,11 @@ TEST_CASE("regression tests 1") SECTION("issue #235 - ambiguous overload for 'push_back' and 'operator+='") { - json data = {{"key", "value"}}; - data.push_back({"key2", "value2"}); - data += {"key3", "value3"}; + json data = { { "key", "value" } }; + data.push_back({ "key2", "value2" }); + data += { "key3", "value3" }; - CHECK(data == json({{"key", "value"}, {"key2", "value2"}, {"key3", "value3"}})); + CHECK(data == json({ { "key", "value" }, { "key2", "value2" }, { "key3", "value3" } })); } SECTION("issue #269 - diff generates incorrect patch when removing multiple array elements") @@ -588,10 +588,10 @@ TEST_CASE("regression tests 1") SECTION("issue #283 - value() does not work with _json_pointer types") { json j = { - {"object", {{"key1", 1}, {"key2", 2}}}, + { "object", { { "key1", 1 }, { "key2", 2 } } }, }; - int at_integer{j.at("/object/key2"_json_pointer)}; + int at_integer{ j.at("/object/key2"_json_pointer) }; int val_integer = j.value("/object/key2"_json_pointer, 0); CHECK(at_integer == val_integer); @@ -608,7 +608,7 @@ TEST_CASE("regression tests 1") SECTION("issue #306 - Parsing fails without space at end of file") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/regression/broken_file.json", TEST_DATA_DIRECTORY "/regression/working_file.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/regression/broken_file.json", TEST_DATA_DIRECTORY "/regression/working_file.json" }) { CAPTURE(filename) json j; @@ -619,10 +619,10 @@ TEST_CASE("regression tests 1") SECTION("issue #310 - make json_benchmarks no longer working in 2.0.4") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/regression/floats.json", - TEST_DATA_DIRECTORY "/regression/signed_ints.json", - TEST_DATA_DIRECTORY "/regression/unsigned_ints.json", - TEST_DATA_DIRECTORY "/regression/small_signed_ints.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/regression/floats.json", + TEST_DATA_DIRECTORY "/regression/signed_ints.json", + TEST_DATA_DIRECTORY "/regression/unsigned_ints.json", + TEST_DATA_DIRECTORY "/regression/small_signed_ints.json" }) { CAPTURE(filename) json j; @@ -635,7 +635,7 @@ TEST_CASE("regression tests 1") { json j; j["/this/that/2"_json_pointer] = 27; - CHECK(j == json({{"this", {{"that", {nullptr, nullptr, 27}}}}})); + CHECK(j == json({ { "this", { { "that", { nullptr, nullptr, 27 } } } } })); } SECTION("issue #329 - serialized value not always can be parsed") @@ -837,9 +837,9 @@ TEST_CASE("regression tests 1") ss << "{\n \"one\" : 1,\n \"two\" : 2\n}\n{\n \"three\" : 3\n}"; json j; CHECK_NOTHROW(ss >> j); - CHECK(j == json({{"one", 1}, {"two", 2}})); + CHECK(j == json({ { "one", 1 }, { "two", 2 } })); CHECK_NOTHROW(ss >> j); - CHECK(j == json({{"three", 3}})); + CHECK(j == json({ { "three", 3 } })); CHECK_THROWS_WITH_AS( ss >> j, @@ -869,12 +869,12 @@ TEST_CASE("regression tests 1") if (i == 0) { - CHECK(val == json({{"one", 1}, {"two", 2}})); + CHECK(val == json({ { "one", 1 }, { "two", 2 } })); } if (i == 1) { - CHECK(val == json({{"three", 3}})); + CHECK(val == json({ { "three", 3 } })); } ++i; @@ -911,7 +911,7 @@ TEST_CASE("regression tests 1") SECTION("issue #405 - Heap-buffer-overflow (OSS-Fuzz issue 342)") { // original test case - std::vector const vec{0x65, 0xf5, 0x0a, 0x48, 0x21}; + std::vector const vec{ 0x65, 0xf5, 0x0a, 0x48, 0x21 }; json _; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec), "[json.exception.parse_error.110] parse error at byte 6: syntax error while parsing CBOR string: unexpected end of input", @@ -923,31 +923,31 @@ TEST_CASE("regression tests 1") json _; // original test case: incomplete float64 - std::vector const vec1{0xcb, 0x8f, 0x0a}; + std::vector const vec1{ 0xcb, 0x8f, 0x0a }; CHECK_THROWS_WITH_AS(_ = json::from_msgpack(vec1), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); // related test case: incomplete float32 - std::vector const vec2{0xca, 0x8f, 0x0a}; + std::vector const vec2{ 0xca, 0x8f, 0x0a }; CHECK_THROWS_WITH_AS(_ = json::from_msgpack(vec2), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing MessagePack number: unexpected end of input", json::parse_error&); // related test case: incomplete Half-Precision Float (CBOR) - std::vector const vec3{0xf9, 0x8f}; + std::vector const vec3{ 0xf9, 0x8f }; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec3), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); // related test case: incomplete Single-Precision Float (CBOR) - std::vector const vec4{0xfa, 0x8f, 0x0a}; + std::vector const vec4{ 0xfa, 0x8f, 0x0a }; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec4), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); // related test case: incomplete Double-Precision Float (CBOR) - std::vector const vec5{0xfb, 0x8f, 0x0a}; + std::vector const vec5{ 0xfb, 0x8f, 0x0a }; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec5), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing CBOR number: unexpected end of input", json::parse_error&); @@ -958,19 +958,19 @@ TEST_CASE("regression tests 1") json _; // original test case - std::vector const vec1{0x87}; + std::vector const vec1{ 0x87 }; CHECK_THROWS_WITH_AS(_ = json::from_msgpack(vec1), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing MessagePack string: unexpected end of input", json::parse_error&); // more test cases for MessagePack - for (auto b : {0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, - 0x8f, // fixmap - 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, - 0x9f, // fixarray - 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, - 0xaf, // fixstr - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf}) + for (auto b : { 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, + 0x8f, // fixmap + 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, + 0x9f, // fixarray + 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, + 0xaf, // fixstr + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf }) { std::vector const vec(1, static_cast(b)); CHECK_THROWS_AS(_ = json::from_msgpack(vec), json::parse_error&); @@ -1005,19 +1005,19 @@ TEST_CASE("regression tests 1") json _; // original test case: empty UTF-8 string (indefinite length) - std::vector const vec1{0x7f}; + std::vector const vec1{ 0x7f }; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec1), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR string: unexpected end of input", json::parse_error&); // related test case: empty array (indefinite length) - std::vector const vec2{0x9f}; + std::vector const vec2{ 0x9f }; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec2), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR value: unexpected end of input", json::parse_error&); // related test case: empty map (indefinite length) - std::vector const vec3{0xbf}; + std::vector const vec3{ 0xbf }; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec3), "[json.exception.parse_error.110] parse error at byte 2: syntax error while parsing CBOR string: unexpected end of input", json::parse_error&); @@ -1026,13 +1026,13 @@ TEST_CASE("regression tests 1") SECTION("issue #412 - Heap-buffer-overflow (OSS-Fuzz issue 367)") { // original test case - std::vector const vec{0xab, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x00, 0x00, 0x00, 0x60, 0xab, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xa0, 0x9f, 0x9f, 0x97, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60}; + std::vector const vec{ 0xab, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x00, 0x00, 0x00, 0x60, 0xab, 0x98, 0x98, + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xa0, 0x9f, 0x9f, 0x97, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }; json _; CHECK_THROWS_WITH_AS( @@ -1041,19 +1041,19 @@ TEST_CASE("regression tests 1") json::parse_error&); // related test case: nonempty UTF-8 string (indefinite length) - std::vector const vec1{0x7f, 0x61, 0x61}; + std::vector const vec1{ 0x7f, 0x61, 0x61 }; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec1), "[json.exception.parse_error.110] parse error at byte 4: syntax error while parsing CBOR string: unexpected end of input", json::parse_error&); // related test case: nonempty array (indefinite length) - std::vector const vec2{0x9f, 0x01}; + std::vector const vec2{ 0x9f, 0x01 }; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec2), "[json.exception.parse_error.110] parse error at byte 3: syntax error while parsing CBOR value: unexpected end of input", json::parse_error&); // related test case: nonempty map (indefinite length) - std::vector const vec3{0xbf, 0x61, 0x61, 0x01}; + std::vector const vec3{ 0xbf, 0x61, 0x61, 0x01 }; CHECK_THROWS_WITH_AS(_ = json::from_cbor(vec3), "[json.exception.parse_error.110] parse error at byte 5: syntax error while parsing CBOR string: unexpected end of input", json::parse_error&); @@ -1080,9 +1080,9 @@ TEST_CASE("regression tests 1") SECTION("issue #416 - Use-of-uninitialized-value (OSS-Fuzz issue 377)") { // original test case - std::vector const vec1{0x94, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, 0x96, 0x96, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, - 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0x71, 0xb4, 0xb4, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, - 0x96, 0x96, 0xb4, 0xb4, 0xfa, 0x94, 0x94, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0xfa}; + std::vector const vec1{ 0x94, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, 0x96, 0x96, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0x71, 0xb4, 0xb4, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, + 0x96, 0x96, 0xb4, 0xb4, 0xfa, 0x94, 0x94, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0xfa }; json _; CHECK_THROWS_WITH_AS( @@ -1091,9 +1091,9 @@ TEST_CASE("regression tests 1") json::parse_error&); // related test case: double-precision - std::vector const vec2{0x94, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, 0x96, 0x96, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, - 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0x71, 0xb4, 0xb4, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, - 0x96, 0x96, 0xb4, 0xb4, 0xfa, 0x94, 0x94, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0xfb}; + std::vector const vec2{ 0x94, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, 0x96, 0x96, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0x71, 0xb4, 0xb4, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x3a, + 0x96, 0x96, 0xb4, 0xb4, 0xfa, 0x94, 0x94, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0xfb }; CHECK_THROWS_WITH_AS( _ = json::from_cbor(vec2), "[json.exception.parse_error.113] parse error at byte 13: syntax error while parsing CBOR string: expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0xB4", @@ -1102,7 +1102,7 @@ TEST_CASE("regression tests 1") SECTION("issue #452 - Heap-buffer-overflow (OSS-Fuzz issue 585)") { - std::vector const vec = {'-', '0', '1', '2', '2', '7', '4'}; + std::vector const vec = { '-', '0', '1', '2', '2', '7', '4' }; json _; CHECK_THROWS_AS(_ = json::parse(vec), json::parse_error&); } @@ -1135,7 +1135,7 @@ TEST_CASE("regression tests 1") #if JSON_USE_IMPLICIT_CONVERSIONS SECTION("issue #473 - inconsistent behavior in conversion to array type") { - json const j_array = {1, 2, 3, 4}; + json const j_array = { 1, 2, 3, 4 }; json const j_number = 42; json const j_null = nullptr; @@ -1183,7 +1183,7 @@ TEST_CASE("regression tests 1") SECTION("issue #494 - conversion from vector to json fails to build") { - std::vector const boolVector = {false, true, false, false}; + std::vector const boolVector = { false, true, false, false }; json j; j["bool_vector"] = boolVector; @@ -1192,7 +1192,7 @@ TEST_CASE("regression tests 1") SECTION("issue #504 - assertion error (OSS-Fuzz 856)") { - std::vector const vec1 = {0xf9, 0xff, 0xff, 0x4a, 0x3a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x37, 0x02, 0x38}; + std::vector const vec1 = { 0xf9, 0xff, 0xff, 0x4a, 0x3a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x37, 0x02, 0x38 }; json const j1 = json::from_cbor(vec1, false); // step 2: round trip @@ -1247,7 +1247,7 @@ TEST_CASE("regression tests 1") SECTION("issue #575 - heap-buffer-overflow (OSS-Fuzz 1400)") { json _; - std::vector const vec = {'"', '\\', '"', 'X', '"', '"'}; + std::vector const vec = { '"', '\\', '"', 'X', '"', '"' }; CHECK_THROWS_AS(_ = json::parse(vec), json::parse_error&); } @@ -1257,7 +1257,7 @@ TEST_CASE("regression tests 1") SECTION("example 1") { // create a map - std::map m1{{"key", 1}}; + std::map m1{ { "key", 1 } }; // create and print a JSON from the map json const j = m1; @@ -1272,7 +1272,7 @@ TEST_CASE("regression tests 1") SECTION("example 2") { // create a map - std::map m1{{"key", "val"}}; + std::map m1{ { "key", "val" } }; // create and print a JSON from the map json const j = m1; @@ -1305,7 +1305,7 @@ TEST_CASE("regression tests 1") SECTION("full example") { - std::valarray v = {1.2, 2.3, 3.4, 4.5}; + std::valarray v = { 1.2, 2.3, 3.4, 4.5 }; json j = v; std::valarray vj = j; @@ -1336,10 +1336,10 @@ TEST_CASE("regression tests 1") auto m1 = j1.get>(); auto m2 = j2.get>(); - int i3{j3}; + int i3{ j3 }; - CHECK(m1 == (std::map{{"first", "one"}})); - CHECK(m2 == (std::map{{"second", "two"}})); + CHECK(m1 == (std::map{ { "first", "one" } })); + CHECK(m2 == (std::map{ { "second", "two" } })); CHECK(i3 == 3); } } @@ -1371,14 +1371,14 @@ TEST_CASE("regression tests 1") { nocopy n; json j; - j = {{"nocopy", n}}; + j = { { "nocopy", n } }; CHECK(j["nocopy"]["val"] == 0); } SECTION("issue #838 - incorrect parse error with binary data in keys") { - std::array key1 = { - {103, 92, 117, 48, 48, 48, 55, 92, 114, 215, 126, 214, 95, 92, 34, 174, 40, 71, 38, 174, 40, 71, 38, 223, 134, 247, 127, 0}}; + std::array key1 = { { 103, 92, 117, 48, 48, 48, 55, 92, 114, 215, 126, 214, 95, 92, + 34, 174, 40, 71, 38, 174, 40, 71, 38, 223, 134, 247, 127, 0 } }; std::string const key1_str(reinterpret_cast(key1.data())); json const j = key1_str; CHECK_THROWS_WITH_AS(j.dump(), "[json.exception.type_error.316] invalid UTF-8 byte at index 10: 0x7E", json::type_error&); @@ -1388,7 +1388,7 @@ TEST_CASE("regression tests 1") SECTION("issue #843 - converting to array not working") { json j; - std::array ar = {{1, 1, 1, 1}}; + std::array ar = { { 1, 1, 1, 1 } }; j = ar; ar = j; } @@ -1418,7 +1418,7 @@ TEST_CASE("regression tests 1") SECTION("issue #961 - incorrect parsing of indefinite length CBOR strings") { - std::vector const v_cbor = {0x7F, 0x64, 'a', 'b', 'c', 'd', 0x63, '1', '2', '3', 0xFF}; + std::vector const v_cbor = { 0x7F, 0x64, 'a', 'b', 'c', 'd', 0x63, '1', '2', '3', 0xFF }; json j = json::from_cbor(v_cbor); CHECK(j == "abcd123"); } @@ -1426,7 +1426,7 @@ TEST_CASE("regression tests 1") SECTION("issue #962 - Timeout (OSS-Fuzz 6034)") { json _; - std::vector v_ubjson = {'[', '$', 'Z', '#', 'L', 0x78, 0x28, 0x00, 0x68, 0x28, 0x69, 0x69, 0x17}; + std::vector v_ubjson = { '[', '$', 'Z', '#', 'L', 0x78, 0x28, 0x00, 0x68, 0x28, 0x69, 0x69, 0x17 }; CHECK_THROWS_AS(_ = json::from_ubjson(v_ubjson), json::out_of_range&); //CHECK_THROWS_WITH(json::from_ubjson(v_ubjson), // "[json.exception.out_of_range.408] excessive array size: 8658170730974374167"); @@ -1476,7 +1476,7 @@ TEST_CASE("regression tests 1") SECTION("issue #977 - Assigning between different json types") { - foo_json lj = ns::foo{3}; + foo_json lj = ns::foo{ 3 }; ns::foo ff(lj); CHECK(lj.is_object()); CHECK(lj.size() == 1); diff --git a/tests/src/unit-regression2.cpp b/tests/src/unit-regression2.cpp index d2b43bdd5..99d8bb26e 100644 --- a/tests/src/unit-regression2.cpp +++ b/tests/src/unit-regression2.cpp @@ -74,8 +74,8 @@ enum class for_1647 // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays): this is a false positive NLOHMANN_JSON_SERIALIZE_ENUM(for_1647, { - {for_1647::one, "one"}, - {for_1647::two, "two"}, + { for_1647::one, "one" }, + { for_1647::two, "two" }, }) } // namespace @@ -418,15 +418,15 @@ TEST_CASE("regression tests 2") CHECK(float_json::from_msgpack(float_json::to_msgpack(j)) == j); CHECK(float_json::from_ubjson(float_json::to_ubjson(j)) == j); - float_json j2 = {1000.0, 2000.0, 3000.0}; + float_json j2 = { 1000.0, 2000.0, 3000.0 }; CHECK(float_json::from_ubjson(float_json::to_ubjson(j2, true, true)) == j2); } SECTION("issue #1045 - Using STL algorithms with JSON containers with expected results?") { json diffs = nlohmann::json::array(); - json m1{{"key1", 42}}; - json m2{{"key2", 42}}; + json m1{ { "key1", 42 } }; + json m2{ { "key2", 42 } }; auto p1 = m1.items(); auto p2 = m2.items(); @@ -451,15 +451,15 @@ TEST_CASE("regression tests 2") "with std::pair") { const json j = { - {"1", {{"a", "testa_1"}, {"b", "testb_1"}}}, - {"2", {{"a", "testa_2"}, {"b", "testb_2"}}}, - {"3", {{"a", "testa_3"}, {"b", "testb_3"}}}, + { "1", { { "a", "testa_1" }, { "b", "testb_1" } } }, + { "2", { { "a", "testa_2" }, { "b", "testb_2" } } }, + { "3", { { "a", "testa_3" }, { "b", "testb_3" } } }, }; std::map expected{ - {"1", {"testa_1", "testb_1"}}, - {"2", {"testa_2", "testb_2"}}, - {"3", {"testa_3", "testb_3"}}, + { "1", { "testa_1", "testb_1" } }, + { "2", { "testa_2", "testb_2" } }, + { "3", { "testa_3", "testb_3" } }, }; const auto data = j.get(); CHECK(expected == data); @@ -504,11 +504,12 @@ TEST_CASE("regression tests 2") SECTION("test case in issue #1445") { nlohmann::json dump_test; - const std::array data = {{109, 108, 103, 125, -122, -53, 115, 18, 3, 0, 102, 19, 1, 15, -110, 13, -3, -1, -81, 32, 2, 0, - 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 2, 0, 0, - 96, -118, 46, -116, 46, 109, -84, -87, 108, 14, 109, -24, -83, 13, -18, -51, -83, -52, -115, 14, 6, 32, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, 0, 35, -74, -73, 55, 57, -128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -96, -54, -28, -26}}; + const std::array data = { + { 109, 108, 103, 125, -122, -53, 115, 18, 3, 0, 102, 19, 1, 15, -110, 13, -3, -1, -81, 32, 2, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 2, 0, 0, 96, -118, 46, -116, 46, 109, -84, -87, 108, 14, + 109, -24, -83, 13, -18, -51, -83, -52, -115, 14, 6, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, + 0, 35, -74, -73, 55, 57, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -96, -54, -28, -26 } + }; std::string s; for (const int i : data) { @@ -534,10 +535,10 @@ TEST_CASE("regression tests 2") SECTION("issue #1727 - Contains with non-const lvalue json_pointer picks the wrong overload") { - const json j = {{"root", {{"settings", {{"logging", true}}}}}}; + const json j = { { "root", { { "settings", { { "logging", true } } } } } }; auto jptr1 = "/root/settings/logging"_json_pointer; - auto jptr2 = json::json_pointer{"/root/settings/logging"}; + auto jptr2 = json::json_pointer{ "/root/settings/logging" }; CHECK(j.contains(jptr1)); CHECK(j.contains(jptr2)); @@ -570,7 +571,7 @@ TEST_CASE("regression tests 2") SECTION("string array") { - const std::array input = {{'B', 0x00}}; + const std::array input = { { 'B', 0x00 } }; const json cbor = json::from_cbor(input, true, false); CHECK(cbor.is_discarded()); } @@ -605,8 +606,8 @@ TEST_CASE("regression tests 2") SECTION("issue #2067 - cannot serialize binary data to text JSON") { - const std::array data = { - {0x81, 0xA4, 0x64, 0x61, 0x74, 0x61, 0xC4, 0x0F, 0x33, 0x30, 0x30, 0x32, 0x33, 0x34, 0x30, 0x31, 0x30, 0x37, 0x30, 0x35, 0x30, 0x31, 0x30}}; + const std::array data = { { 0x81, 0xA4, 0x64, 0x61, 0x74, 0x61, 0xC4, 0x0F, 0x33, 0x30, 0x30, 0x32, + 0x33, 0x34, 0x30, 0x31, 0x30, 0x37, 0x30, 0x35, 0x30, 0x31, 0x30 } }; const json j = json::from_msgpack(data.data(), data.size()); CHECK_NOTHROW(j.dump(4, // Indent ' ', // Indent char @@ -618,7 +619,7 @@ TEST_CASE("regression tests 2") SECTION("PR #2181 - regression bug with lvalue") { // see https://github.com/nlohmann/json/pull/2181#issuecomment-653326060 - const json j{{"x", "test"}}; + const json j{ { "x", "test" } }; const std::string defval = "default value"; auto val = j.value("x", defval); auto val2 = j.value("y", defval); @@ -626,22 +627,22 @@ TEST_CASE("regression tests 2") SECTION("issue #2293 - eof doesn't cause parsing to stop") { - const std::vector data = {0x7B, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x4F, 0x42}; + const std::vector data = { 0x7B, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x4F, 0x42 }; const json result = json::from_cbor(data, true, false); CHECK(result.is_discarded()); } SECTION("issue #2315 - json.update and vectordoes not work with ordered_json") { - nlohmann::ordered_json jsonAnimals = {{"animal", "dog"}}; - const nlohmann::ordered_json jsonCat = {{"animal", "cat"}}; + nlohmann::ordered_json jsonAnimals = { { "animal", "dog" } }; + const nlohmann::ordered_json jsonCat = { { "animal", "cat" } }; jsonAnimals.update(jsonCat); CHECK(jsonAnimals["animal"] == "cat"); auto jsonAnimals_parsed = nlohmann::ordered_json::parse(jsonAnimals.dump()); CHECK(jsonAnimals == jsonAnimals_parsed); - const std::vector> intData = {std::make_pair("aaaa", 11), std::make_pair("bbb", 222)}; + const std::vector> intData = { std::make_pair("aaaa", 11), std::make_pair("bbb", 222) }; nlohmann::ordered_json jsonObj; for (const auto& data : intData) { @@ -675,7 +676,7 @@ TEST_CASE("regression tests 2") SECTION("std::array") { { - const json j = {7, 4}; + const json j = { 7, 4 }; auto arr = j.get>(); CHECK(arr[0].x == 7); CHECK(arr[1].x == 4); @@ -690,21 +691,21 @@ TEST_CASE("regression tests 2") SECTION("std::pair") { { - const json j = {3, 8}; + const json j = { 3, 8 }; auto p = j.get>(); CHECK(p.first.x == 3); CHECK(p.second.x == 8); } { - const json j = {4, 1}; + const json j = { 4, 1 }; auto p = j.get>(); CHECK(p.first == 4); CHECK(p.second.x == 1); } { - const json j = {6, 7}; + const json j = { 6, 7 }; auto p = j.get>(); CHECK(p.first.x == 6); CHECK(p.second == 7); @@ -719,13 +720,13 @@ TEST_CASE("regression tests 2") SECTION("std::tuple") { { - const json j = {9}; + const json j = { 9 }; auto t = j.get>(); CHECK(std::get<0>(t).x == 9); } { - const json j = {9, 8, 7}; + const json j = { 9, 8, 7 }; auto t = j.get>(); CHECK(std::get<0>(t).x == 9); CHECK(std::get<1>(t) == 8); @@ -803,7 +804,7 @@ TEST_CASE("regression tests 2") SECTION("issue #2982 - to_{binary format} does not provide a mechanism for specifying a custom allocator for the returned type") { std::vector> my_vector; - json j = {1, 2, 3, 4}; + json j = { 1, 2, 3, 4 }; json::to_cbor(j, my_vector); json k = json::from_cbor(my_vector); CHECK(j == k); @@ -836,7 +837,7 @@ TEST_CASE("regression tests 2") SECTION("issue #3108 - ordered_json doesn't support range based erase") { - ordered_json j = {1, 2, 2, 4}; + ordered_json j = { 1, 2, 2, 4 }; auto last = std::unique(j.begin(), j.end()); j.erase(last, j.end()); @@ -855,8 +856,8 @@ TEST_CASE("regression tests 2") SECTION("issue #3343 - json and ordered_json are not interchangable") { - json::object_t jobj({{"product", "one"}}); - ordered_json::object_t ojobj({{"product", "one"}}); + json::object_t jobj({ { "product", "one" } }); + ordered_json::object_t ojobj({ { "product", "one" } }); auto jit = jobj.begin(); auto ojit = ojobj.begin(); @@ -867,7 +868,7 @@ TEST_CASE("regression tests 2") SECTION("issue #3171 - if class is_constructible from std::string wrong from_json overload is being selected, compilation failed") { - const json j{{"str", "value"}}; + const json j{ { "str", "value" } }; // failed with: error: no match for ‘operator=’ (operand types are ‘for_3171_derived’ and ‘const nlohmann::basic_json<>::string_t’ // {aka ‘const std::__cxx11::basic_string’}) @@ -881,7 +882,7 @@ TEST_CASE("regression tests 2") SECTION("issue #3312 - Parse to custom class from unordered_json breaks on G++11.2.0 with C++20") { // see test for #3171 - const ordered_json j = {{"name", "class"}}; + const ordered_json j = { { "name", "class" } }; for_3312 obj{}; j.get_to(obj); @@ -913,7 +914,7 @@ TEST_CASE("regression tests 2") SECTION("issue #3333 - Ambiguous conversion from nlohmann::basic_json<> to custom class") { - const json j{{"x", 1}, {"y", 2}}; + const json j{ { "x", 1 }, { "y", 2 } }; for_3333 p = j; CHECK(p.x == 1); diff --git a/tests/src/unit-serialization.cpp b/tests/src/unit-serialization.cpp index 0a2b67cc4..f109c1c1e 100644 --- a/tests/src/unit-serialization.cpp +++ b/tests/src/unit-serialization.cpp @@ -21,7 +21,7 @@ TEST_CASE("serialization") SECTION("no given width") { std::stringstream ss; - const json j = {"foo", 1, 2, 3, false, {{"one", 1}}}; + const json j = { "foo", 1, 2, 3, false, { { "one", 1 } } }; ss << j; CHECK(ss.str() == "[\"foo\",1,2,3,false,{\"one\":1}]"); } @@ -29,7 +29,7 @@ TEST_CASE("serialization") SECTION("given width") { std::stringstream ss; - const json j = {"foo", 1, 2, 3, false, {{"one", 1}}}; + const json j = { "foo", 1, 2, 3, false, { { "one", 1 } } }; ss << std::setw(4) << j; CHECK(ss.str() == "[\n \"foo\",\n 1,\n 2,\n 3,\n false,\n {\n \"one\": 1\n }\n]"); } @@ -37,7 +37,7 @@ TEST_CASE("serialization") SECTION("given fill") { std::stringstream ss; - const json j = {"foo", 1, 2, 3, false, {{"one", 1}}}; + const json j = { "foo", 1, 2, 3, false, { { "one", 1 } } }; ss << std::setw(1) << std::setfill('\t') << j; CHECK(ss.str() == "[\n\t\"foo\",\n\t1,\n\t2,\n\t3,\n\tfalse,\n\t{\n\t\t\"one\": 1\n\t}\n]"); } @@ -48,7 +48,7 @@ TEST_CASE("serialization") SECTION("no given width") { std::stringstream ss; - const json j = {"foo", 1, 2, 3, false, {{"one", 1}}}; + const json j = { "foo", 1, 2, 3, false, { { "one", 1 } } }; j >> ss; CHECK(ss.str() == "[\"foo\",1,2,3,false,{\"one\":1}]"); } @@ -56,7 +56,7 @@ TEST_CASE("serialization") SECTION("given width") { std::stringstream ss; - const json j = {"foo", 1, 2, 3, false, {{"one", 1}}}; + const json j = { "foo", 1, 2, 3, false, { { "one", 1 } } }; ss.width(4); j >> ss; CHECK(ss.str() == "[\n \"foo\",\n 1,\n 2,\n 3,\n false,\n {\n \"one\": 1\n }\n]"); @@ -65,7 +65,7 @@ TEST_CASE("serialization") SECTION("given fill") { std::stringstream ss; - const json j = {"foo", 1, 2, 3, false, {{"one", 1}}}; + const json j = { "foo", 1, 2, 3, false, { { "one", 1 } } }; ss.width(1); ss.fill('\t'); j >> ss; @@ -249,20 +249,20 @@ TEST_CASE_TEMPLATE("serialization for extreme integer values", T, int32_t, uint3 TEST_CASE("dump with binary values") { - auto binary = json::binary({1, 2, 3, 4}); + auto binary = json::binary({ 1, 2, 3, 4 }); auto binary_empty = json::binary({}); - auto binary_with_subtype = json::binary({1, 2, 3, 4}, 128); + auto binary_with_subtype = json::binary({ 1, 2, 3, 4 }, 128); auto binary_empty_with_subtype = json::binary({}, 128); - const json object = {{"key", binary}}; - const json object_empty = {{"key", binary_empty}}; - const json object_with_subtype = {{"key", binary_with_subtype}}; - const json object_empty_with_subtype = {{"key", binary_empty_with_subtype}}; + const json object = { { "key", binary } }; + const json object_empty = { { "key", binary_empty } }; + const json object_with_subtype = { { "key", binary_with_subtype } }; + const json object_empty_with_subtype = { { "key", binary_empty_with_subtype } }; - const json array = {"value", 1, binary}; - const json array_empty = {"value", 1, binary_empty}; - const json array_with_subtype = {"value", 1, binary_with_subtype}; - const json array_empty_with_subtype = {"value", 1, binary_empty_with_subtype}; + const json array = { "value", 1, binary }; + const json array_empty = { "value", 1, binary_empty }; + const json array_with_subtype = { "value", 1, binary_with_subtype }; + const json array_empty_with_subtype = { "value", 1, binary_empty_with_subtype }; SECTION("normal") { diff --git a/tests/src/unit-testsuites.cpp b/tests/src/unit-testsuites.cpp index 33c825366..cf681e2b3 100644 --- a/tests/src/unit-testsuites.cpp +++ b/tests/src/unit-testsuites.cpp @@ -20,39 +20,39 @@ TEST_CASE("compliance tests from json.org") SECTION("expected failures") { - for (const auto* filename : {//TEST_DATA_DIRECTORY "/json_tests/fail1.json", - TEST_DATA_DIRECTORY "/json_tests/fail2.json", - TEST_DATA_DIRECTORY "/json_tests/fail3.json", - TEST_DATA_DIRECTORY "/json_tests/fail4.json", - TEST_DATA_DIRECTORY "/json_tests/fail5.json", - TEST_DATA_DIRECTORY "/json_tests/fail6.json", - TEST_DATA_DIRECTORY "/json_tests/fail7.json", - TEST_DATA_DIRECTORY "/json_tests/fail8.json", - TEST_DATA_DIRECTORY "/json_tests/fail9.json", - TEST_DATA_DIRECTORY "/json_tests/fail10.json", - TEST_DATA_DIRECTORY "/json_tests/fail11.json", - TEST_DATA_DIRECTORY "/json_tests/fail12.json", - TEST_DATA_DIRECTORY "/json_tests/fail13.json", - TEST_DATA_DIRECTORY "/json_tests/fail14.json", - TEST_DATA_DIRECTORY "/json_tests/fail15.json", - TEST_DATA_DIRECTORY "/json_tests/fail16.json", - TEST_DATA_DIRECTORY "/json_tests/fail17.json", - //TEST_DATA_DIRECTORY "/json_tests/fail18.json", - TEST_DATA_DIRECTORY "/json_tests/fail19.json", - TEST_DATA_DIRECTORY "/json_tests/fail20.json", - TEST_DATA_DIRECTORY "/json_tests/fail21.json", - TEST_DATA_DIRECTORY "/json_tests/fail22.json", - TEST_DATA_DIRECTORY "/json_tests/fail23.json", - TEST_DATA_DIRECTORY "/json_tests/fail24.json", - TEST_DATA_DIRECTORY "/json_tests/fail25.json", - TEST_DATA_DIRECTORY "/json_tests/fail26.json", - TEST_DATA_DIRECTORY "/json_tests/fail27.json", - TEST_DATA_DIRECTORY "/json_tests/fail28.json", - TEST_DATA_DIRECTORY "/json_tests/fail29.json", - TEST_DATA_DIRECTORY "/json_tests/fail30.json", - TEST_DATA_DIRECTORY "/json_tests/fail31.json", - TEST_DATA_DIRECTORY "/json_tests/fail32.json", - TEST_DATA_DIRECTORY "/json_tests/fail33.json"}) + for (const auto* filename : { //TEST_DATA_DIRECTORY "/json_tests/fail1.json", + TEST_DATA_DIRECTORY "/json_tests/fail2.json", + TEST_DATA_DIRECTORY "/json_tests/fail3.json", + TEST_DATA_DIRECTORY "/json_tests/fail4.json", + TEST_DATA_DIRECTORY "/json_tests/fail5.json", + TEST_DATA_DIRECTORY "/json_tests/fail6.json", + TEST_DATA_DIRECTORY "/json_tests/fail7.json", + TEST_DATA_DIRECTORY "/json_tests/fail8.json", + TEST_DATA_DIRECTORY "/json_tests/fail9.json", + TEST_DATA_DIRECTORY "/json_tests/fail10.json", + TEST_DATA_DIRECTORY "/json_tests/fail11.json", + TEST_DATA_DIRECTORY "/json_tests/fail12.json", + TEST_DATA_DIRECTORY "/json_tests/fail13.json", + TEST_DATA_DIRECTORY "/json_tests/fail14.json", + TEST_DATA_DIRECTORY "/json_tests/fail15.json", + TEST_DATA_DIRECTORY "/json_tests/fail16.json", + TEST_DATA_DIRECTORY "/json_tests/fail17.json", + //TEST_DATA_DIRECTORY "/json_tests/fail18.json", + TEST_DATA_DIRECTORY "/json_tests/fail19.json", + TEST_DATA_DIRECTORY "/json_tests/fail20.json", + TEST_DATA_DIRECTORY "/json_tests/fail21.json", + TEST_DATA_DIRECTORY "/json_tests/fail22.json", + TEST_DATA_DIRECTORY "/json_tests/fail23.json", + TEST_DATA_DIRECTORY "/json_tests/fail24.json", + TEST_DATA_DIRECTORY "/json_tests/fail25.json", + TEST_DATA_DIRECTORY "/json_tests/fail26.json", + TEST_DATA_DIRECTORY "/json_tests/fail27.json", + TEST_DATA_DIRECTORY "/json_tests/fail28.json", + TEST_DATA_DIRECTORY "/json_tests/fail29.json", + TEST_DATA_DIRECTORY "/json_tests/fail30.json", + TEST_DATA_DIRECTORY "/json_tests/fail31.json", + TEST_DATA_DIRECTORY "/json_tests/fail32.json", + TEST_DATA_DIRECTORY "/json_tests/fail33.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -82,7 +82,7 @@ TEST_CASE("compliance tests from json.org") SECTION("expected passes") { for (const auto* filename : - {TEST_DATA_DIRECTORY "/json_tests/pass1.json", TEST_DATA_DIRECTORY "/json_tests/pass2.json", TEST_DATA_DIRECTORY "/json_tests/pass3.json"}) + { TEST_DATA_DIRECTORY "/json_tests/pass1.json", TEST_DATA_DIRECTORY "/json_tests/pass2.json", TEST_DATA_DIRECTORY "/json_tests/pass3.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -453,102 +453,102 @@ TEST_CASE("nst's JSONTestSuite") { SECTION("y") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty-string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_heterogeneous.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_leading_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_several_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e+1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_after_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_int_with_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_minus_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_one.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_underflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_real.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_basic.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_long_strings.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_simple.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_string_unicode.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_with_newlines.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_comments.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_a.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_n.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_null_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_pi.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_simple_ascii.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_uEscape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json", - // TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf16.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_with_del_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_true.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_string_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_true_in_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty-string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_heterogeneous.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_leading_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_several_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e+1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_0e1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_after_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_int_with_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_minus_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_one.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_negative_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_underflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_simple_real.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_basic.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_empty_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_long_strings.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_simple.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_string_unicode.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_object_with_newlines.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_comments.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_a.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_double_escape_n.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_null_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_pi.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_simple_ascii.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_uEscape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json", + // TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf16.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_utf8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_string_with_del_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_lonely_true.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_string_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_true_in_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -559,201 +559,201 @@ TEST_CASE("nst's JSONTestSuite") SECTION("n") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_1_true_without_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_a_invalid_utf8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_colon_instead_of_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_comma_after_close.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_comma_and_number.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_double_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_double_extra_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_extra_close.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_extra_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_incomplete.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_incomplete_invalid_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_inner_array_no_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_invalid_utf8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_items_separated_by_semicolon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_just_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_just_minus.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_missing_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_newlines_unclosed.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_number_and_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_number_and_several_commas.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_spaces_vertical_tab_formfeed.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_star_inside.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_unclosed.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_unclosed_trailing_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_unclosed_with_new_lines.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_unclosed_with_object_inside.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_incomplete_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_incomplete_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_incomplete_true.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_++.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_+1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_+Inf.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_-01.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_-1.0..json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_-2..json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_-NaN.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_.-1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_.2e-3.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0.1.2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0.3e+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0.3e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0.e1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0_capital_E+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0_capital_E.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0e+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1.0e+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1.0e-.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1.0e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1_000.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1eE2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_2.e+3.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_2.e-3.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_2.e3.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_9.e+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_Inf.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_NaN.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_U+FF11_fullwidth_digit_one.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_expression.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_hex_1_digit.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_hex_2_digits.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_infinity.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid+-.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid-negative-real.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-bigger-int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_minus_infinity.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_minus_sign_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_minus_space_1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_neg_int_starting_with_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_neg_real_without_int_part.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_neg_with_garbage_at_end.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_real_garbage_after_e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_real_with_invalid_utf8_after_e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_real_without_fractional_part.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_starting_with_dot.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_then_00.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_with_alpha.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_with_alpha_char.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_with_leading_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_bad_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_bracket_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_comma_instead_of_colon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_double_colon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_emoji.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_garbage_at_end.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_key_with_single_quotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_missing_colon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_missing_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_missing_semicolon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_missing_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_no-colon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_non_string_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_non_string_key_but_huge_number_instead.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_pi_in_key_and_trailing_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_repeated_null_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_several_trailing_commas.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_single_quote.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_two_commas_in_a_row.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_unquoted_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_unterminated-value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_with_single_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_single_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_backslash_00.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_escape_x.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_escaped_backslash_bad.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_escaped_ctrl_char_tab.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_escaped_emoji.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_incomplete_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_incomplete_escaped_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_incomplete_surrogate_escape_invalid.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_single_doublequote.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_single_quote.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_start_escape_unclosed.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_unescaped_crtl_char.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_unescaped_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_unescaped_tab.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json", - //!TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_3C.3E.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_3Cnull3E.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_with_unclosed_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_ascii-unicode-identifier.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_capitalized_True.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_comma_instead_of_closing_brace.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_double_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_end_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_incomplete_UTF8_BOM.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_lone-invalid-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_lone-open-bracket.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_no_data.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_null-byte-outside-string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_unclosed_no_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_with_comment.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_apostrophe.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_comma.json", - //!TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_open_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_open_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_close_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_open_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_open_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_string_with_apostrophes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_open.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_single_point.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_single_star.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_trailing_#.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_uescaped_LF_before_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_array_partial_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_true.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unicode-identifier.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_whitespace_U+2060_word_joiner.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_whitespace_formfeed.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_1_true_without_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_a_invalid_utf8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_colon_instead_of_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_comma_after_close.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_comma_and_number.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_double_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_double_extra_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_extra_close.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_extra_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_incomplete.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_incomplete_invalid_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_inner_array_no_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_invalid_utf8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_items_separated_by_semicolon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_just_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_just_minus.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_missing_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_newlines_unclosed.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_number_and_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_number_and_several_commas.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_spaces_vertical_tab_formfeed.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_star_inside.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_unclosed.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_unclosed_trailing_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_unclosed_with_new_lines.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_unclosed_with_object_inside.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_incomplete_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_incomplete_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_incomplete_true.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_++.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_+1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_+Inf.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_-01.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_-1.0..json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_-2..json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_-NaN.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_.-1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_.2e-3.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0.1.2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0.3e+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0.3e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0.e1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0_capital_E+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0_capital_E.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0e+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_0e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1.0e+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1.0e-.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1.0e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1_000.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_1eE2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_2.e+3.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_2.e-3.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_2.e3.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_9.e+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_Inf.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_NaN.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_U+FF11_fullwidth_digit_one.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_expression.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_hex_1_digit.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_hex_2_digits.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_infinity.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid+-.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid-negative-real.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-bigger-int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_minus_infinity.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_minus_sign_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_minus_space_1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_neg_int_starting_with_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_neg_real_without_int_part.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_neg_with_garbage_at_end.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_real_garbage_after_e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_real_with_invalid_utf8_after_e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_real_without_fractional_part.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_starting_with_dot.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_then_00.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_with_alpha.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_with_alpha_char.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_number_with_leading_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_bad_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_bracket_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_comma_instead_of_colon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_double_colon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_emoji.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_garbage_at_end.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_key_with_single_quotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_missing_colon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_missing_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_missing_semicolon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_missing_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_no-colon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_non_string_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_non_string_key_but_huge_number_instead.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_pi_in_key_and_trailing_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_repeated_null_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_several_trailing_commas.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_single_quote.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_two_commas_in_a_row.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_unquoted_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_unterminated-value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_with_single_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_single_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_backslash_00.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_escape_x.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_escaped_backslash_bad.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_escaped_ctrl_char_tab.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_escaped_emoji.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_incomplete_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_incomplete_escaped_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_incomplete_surrogate_escape_invalid.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_single_doublequote.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_single_quote.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_start_escape_unclosed.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_unescaped_crtl_char.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_unescaped_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_unescaped_tab.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json", + //!TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_3C.3E.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_3Cnull3E.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_with_unclosed_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_ascii-unicode-identifier.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_capitalized_True.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_comma_instead_of_closing_brace.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_double_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_end_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_incomplete_UTF8_BOM.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_lone-invalid-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_lone-open-bracket.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_no_data.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_null-byte-outside-string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_unclosed_no_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_with_comment.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_apostrophe.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_comma.json", + //!TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_open_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_open_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_array_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_close_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_open_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_open_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_object_string_with_apostrophes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_open_open.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_single_point.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_single_star.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_trailing_#.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_uescaped_LF_before_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_array_partial_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_true.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unclosed_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_unicode-identifier.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_whitespace_U+2060_word_joiner.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_whitespace_formfeed.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -767,22 +767,22 @@ TEST_CASE("nst's JSONTestSuite") // these tests fail above, because the parser does not end on EOF; // they succeed when the operator>> is used, because it does not // have this constraint - for (const auto* filename : {TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_comma_after_close.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_extra_close.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_double_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_trailing_#.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_comma_after_close.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_array_extra_close.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_double_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/n_structure_trailing_#.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -793,15 +793,15 @@ TEST_CASE("nst's JSONTestSuite") SECTION("i -> y") { - for (const auto* filename : {// we do not pose a limit on nesting - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_structure_500_nested_arrays.json", - // we silently ignore BOMs - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_structure_UTF-8_BOM_empty_object.json", - // we accept and forward non-characters - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_unicode_U+10FFFE_nonchar.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_unicode_U+1FFFE_nonchar.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_unicode_U+FDD0_nonchar.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_unicode_U+FFFE_nonchar.json"}) + for (const auto* filename : { // we do not pose a limit on nesting + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_structure_500_nested_arrays.json", + // we silently ignore BOMs + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_structure_UTF-8_BOM_empty_object.json", + // we accept and forward non-characters + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_unicode_U+10FFFE_nonchar.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_unicode_U+1FFFE_nonchar.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_unicode_U+FDD0_nonchar.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_unicode_U+FFFE_nonchar.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -813,11 +813,11 @@ TEST_CASE("nst's JSONTestSuite") // numbers that overflow during parsing SECTION("i/y -> n (out of range)") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_number_neg_int_huge_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_number_pos_double_huge_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_huge_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_number_neg_int_huge_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_number_pos_double_huge_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_huge_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -828,19 +828,19 @@ TEST_CASE("nst's JSONTestSuite") SECTION("i -> n") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_object_key_lone_2nd_surrogate.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_1st_surrogate_but_2nd_missing.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_lonely_surrogate.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_surrogate.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_UTF-8_invalid_sequence.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_pair.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_incomplete_surrogates_escape_valid.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_inverted_surrogates_U+1D11E.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_lone_second_surrogate.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_not_in_unicode_range.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_truncated-utf-8.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_object_key_lone_2nd_surrogate.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_1st_surrogate_but_2nd_missing.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_lonely_surrogate.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_surrogate.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_UTF-8_invalid_sequence.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_pair.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_incomplete_surrogates_escape_valid.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_inverted_surrogates_U+1D11E.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_lone_second_surrogate.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_not_in_unicode_range.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite/test_parsing/i_string_truncated-utf-8.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -857,101 +857,101 @@ TEST_CASE("nst's JSONTestSuite (2)") { SECTION("y") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_arraysWithSpaces.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_empty-string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_ending_with_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_heterogeneous.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_with_1_and_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_with_leading_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_with_several_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_with_trailing_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_0e+1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_0e1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_after_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_double_close_to_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_int_with_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_minus_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_negative_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_negative_one.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_negative_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_capital_e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_capital_e_neg_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_capital_e_pos_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_fraction_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_neg_exp.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_pos_exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_simple_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_simple_real.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_basic.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_duplicated_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_duplicated_key_and_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_empty_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_escaped_null_in_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_extreme_numbers.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_long_strings.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_simple.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_string_unicode.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_with_newlines.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_accepted_surrogate_pair.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_accepted_surrogate_pairs.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_allowed_escapes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_backslash_and_u_escaped_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_backslash_doublequotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_comments.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_double_escape_a.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_double_escape_n.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_escaped_control_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_escaped_noncharacter.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_in_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_in_array_with_leading_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_last_surrogates_1_and_2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_nbsp_uescaped.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_null_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_one-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_pi.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_reservedCharacterInUTF-8_U+1BFFF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_simple_ascii.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_three-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_two-byte-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_u+2028_line_sep.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_u+2029_par_sep.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_uEscape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_uescaped_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unescaped_char_delete.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicodeEscapedBackslash.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+10FFFE_nonchar.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+1FFFE_nonchar.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+2064_invisible_plus.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+FDD0_nonchar.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+FFFE_nonchar.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_escaped_double_quote.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_utf8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_with_del_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_negative_real.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_true.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_string_empty.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_trailing_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_true_in_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_whitespace_array.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_arraysWithSpaces.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_empty-string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_ending_with_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_heterogeneous.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_with_1_and_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_with_leading_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_with_several_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_array_with_trailing_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_0e+1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_0e1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_after_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_double_close_to_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_int_with_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_minus_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_negative_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_negative_one.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_negative_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_capital_e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_capital_e_neg_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_capital_e_pos_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_fraction_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_neg_exp.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_real_pos_exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_simple_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_number_simple_real.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_basic.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_duplicated_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_duplicated_key_and_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_empty_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_escaped_null_in_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_extreme_numbers.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_long_strings.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_simple.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_string_unicode.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_object_with_newlines.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_accepted_surrogate_pair.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_accepted_surrogate_pairs.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_allowed_escapes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_backslash_and_u_escaped_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_backslash_doublequotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_comments.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_double_escape_a.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_double_escape_n.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_escaped_control_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_escaped_noncharacter.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_in_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_in_array_with_leading_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_last_surrogates_1_and_2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_nbsp_uescaped.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_null_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_one-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_pi.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_reservedCharacterInUTF-8_U+1BFFF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_simple_ascii.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_three-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_two-byte-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_u+2028_line_sep.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_u+2029_par_sep.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_uEscape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_uescaped_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unescaped_char_delete.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicodeEscapedBackslash.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+10FFFE_nonchar.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+1FFFE_nonchar.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+2064_invisible_plus.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+FDD0_nonchar.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_U+FFFE_nonchar.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_unicode_escaped_double_quote.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_utf8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_string_with_del_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_negative_real.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_lonely_true.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_string_empty.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_trailing_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_true_in_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/y_structure_whitespace_array.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -964,192 +964,193 @@ TEST_CASE("nst's JSONTestSuite (2)") SECTION("n") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_1_true_without_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_a_invalid_utf8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_colon_instead_of_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_comma_after_close.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_comma_and_number.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_double_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_double_extra_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_extra_close.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_extra_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_incomplete.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_incomplete_invalid_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_inner_array_no_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_invalid_utf8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_items_separated_by_semicolon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_just_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_just_minus.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_missing_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_newlines_unclosed.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_number_and_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_number_and_several_commas.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_spaces_vertical_tab_formfeed.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_star_inside.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_unclosed.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_unclosed_trailing_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_unclosed_with_new_lines.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_unclosed_with_object_inside.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_incomplete_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_incomplete_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_incomplete_true.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_multidigit_number_then_00.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_++.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_+1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_+Inf.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_-01.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_-1.0..json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_-2..json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_-NaN.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_.-1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_.2e-3.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0.1.2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0.3e+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0.3e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0.e1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0_capital_E+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0_capital_E.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0e+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1.0e+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1.0e-.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1.0e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1_000.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1eE2.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_2.e+3.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_2.e-3.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_2.e3.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_9.e+.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_Inf.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_NaN.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_U+FF11_fullwidth_digit_one.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_expression.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_hex_1_digit.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_hex_2_digits.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_infinity.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid+-.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid-negative-real.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid-utf-8-in-bigger-int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid-utf-8-in-exponent.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid-utf-8-in-int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_minus_infinity.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_minus_sign_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_minus_space_1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_neg_int_starting_with_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_neg_real_without_int_part.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_neg_with_garbage_at_end.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_real_garbage_after_e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_real_with_invalid_utf8_after_e.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_real_without_fractional_part.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_starting_with_dot.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_with_alpha.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_with_alpha_char.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_with_leading_zero.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_bad_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_bracket_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_comma_instead_of_colon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_double_colon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_emoji.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_garbage_at_end.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_key_with_single_quotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_lone_continuation_byte_in_key_and_trailing_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_missing_colon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_missing_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_missing_semicolon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_missing_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_no-colon.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_non_string_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_non_string_key_but_huge_number_instead.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_repeated_null_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_several_trailing_commas.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_single_quote.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comment.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comment_open.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comment_slash_open.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comment_slash_open_incomplete.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_two_commas_in_a_row.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_unquoted_key.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_unterminated-value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_with_single_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_single_space.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_1_surrogate_then_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_1_surrogate_then_escape_u.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_1_surrogate_then_escape_u1.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_1_surrogate_then_escape_u1x.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_accentuated_char_no_quotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_backslash_00.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_escape_x.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_escaped_backslash_bad.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_escaped_ctrl_char_tab.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_escaped_emoji.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_incomplete_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_incomplete_escaped_character.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_incomplete_surrogate.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_incomplete_surrogate_escape_invalid.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_invalid-utf-8-in-escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_invalid_backslash_esc.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_invalid_unicode_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_invalid_utf8_after_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_leading_uescaped_thinspace.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_no_quotes_with_bad_escape.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_single_doublequote.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_single_quote.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_single_string_no_double_quotes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_start_escape_unclosed.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_unescaped_crtl_char.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_unescaped_newline.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_unescaped_tab.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_unicode_CapitalU.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_U+2060_word_joined.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_UTF8_BOM_no_data.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_angle_bracket_..json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_angle_bracket_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_array_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_array_with_extra_array_close.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_array_with_unclosed_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_ascii-unicode-identifier.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_capitalized_True.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_close_unopened_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_comma_instead_of_closing_brace.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_double_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_end_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_incomplete_UTF8_BOM.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_lone-invalid-utf-8.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_lone-open-bracket.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_no_data.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_null-byte-outside-string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_number_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_object_followed_by_closing_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_object_unclosed_no_value.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_object_with_comment.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_object_with_trailing_garbage.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_apostrophe.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_open_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_open_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_close_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_comma.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_open_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_open_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_string_with_apostrophes.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_open.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_single_eacute.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_single_star.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_trailing_#.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_uescaped_LF_before_string.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_array.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_array_partial_null.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_array_unfinished_false.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_array_unfinished_true.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_object.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unicode-identifier.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_whitespace_U+2060_word_joiner.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_whitespace_formfeed.json"}) + for (const auto* filename : + { TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_1_true_without_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_a_invalid_utf8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_colon_instead_of_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_comma_after_close.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_comma_and_number.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_double_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_double_extra_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_extra_close.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_extra_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_incomplete.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_incomplete_invalid_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_inner_array_no_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_invalid_utf8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_items_separated_by_semicolon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_just_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_just_minus.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_missing_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_newlines_unclosed.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_number_and_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_number_and_several_commas.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_spaces_vertical_tab_formfeed.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_star_inside.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_unclosed.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_unclosed_trailing_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_unclosed_with_new_lines.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_array_unclosed_with_object_inside.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_incomplete_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_incomplete_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_incomplete_true.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_multidigit_number_then_00.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_++.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_+1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_+Inf.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_-01.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_-1.0..json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_-2..json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_-NaN.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_.-1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_.2e-3.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0.1.2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0.3e+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0.3e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0.e1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0_capital_E+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0_capital_E.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0e+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_0e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1.0e+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1.0e-.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1.0e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1_000.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_1eE2.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_2.e+3.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_2.e-3.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_2.e3.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_9.e+.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_Inf.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_NaN.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_U+FF11_fullwidth_digit_one.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_expression.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_hex_1_digit.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_hex_2_digits.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_infinity.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid+-.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid-negative-real.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid-utf-8-in-bigger-int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid-utf-8-in-exponent.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_invalid-utf-8-in-int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_minus_infinity.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_minus_sign_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_minus_space_1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_neg_int_starting_with_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_neg_real_without_int_part.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_neg_with_garbage_at_end.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_real_garbage_after_e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_real_with_invalid_utf8_after_e.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_real_without_fractional_part.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_starting_with_dot.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_with_alpha.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_with_alpha_char.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_number_with_leading_zero.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_bad_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_bracket_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_comma_instead_of_colon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_double_colon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_emoji.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_garbage_at_end.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_key_with_single_quotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_lone_continuation_byte_in_key_and_trailing_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_missing_colon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_missing_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_missing_semicolon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_missing_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_no-colon.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_non_string_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_non_string_key_but_huge_number_instead.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_repeated_null_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_several_trailing_commas.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_single_quote.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comment.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comment_open.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comment_slash_open.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_trailing_comment_slash_open_incomplete.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_two_commas_in_a_row.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_unquoted_key.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_unterminated-value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_with_single_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_object_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_single_space.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_1_surrogate_then_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_1_surrogate_then_escape_u.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_1_surrogate_then_escape_u1.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_1_surrogate_then_escape_u1x.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_accentuated_char_no_quotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_backslash_00.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_escape_x.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_escaped_backslash_bad.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_escaped_ctrl_char_tab.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_escaped_emoji.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_incomplete_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_incomplete_escaped_character.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_incomplete_surrogate.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_incomplete_surrogate_escape_invalid.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_invalid-utf-8-in-escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_invalid_backslash_esc.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_invalid_unicode_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_invalid_utf8_after_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_leading_uescaped_thinspace.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_no_quotes_with_bad_escape.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_single_doublequote.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_single_quote.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_single_string_no_double_quotes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_start_escape_unclosed.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_unescaped_crtl_char.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_unescaped_newline.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_unescaped_tab.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_unicode_CapitalU.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_string_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_U+2060_word_joined.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_UTF8_BOM_no_data.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_angle_bracket_..json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_angle_bracket_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_array_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_array_with_extra_array_close.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_array_with_unclosed_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_ascii-unicode-identifier.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_capitalized_True.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_close_unopened_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_comma_instead_of_closing_brace.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_double_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_end_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_incomplete_UTF8_BOM.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_lone-invalid-utf-8.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_lone-open-bracket.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_no_data.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_null-byte-outside-string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_number_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_object_followed_by_closing_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_object_unclosed_no_value.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_object_with_comment.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_object_with_trailing_garbage.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_apostrophe.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_open_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_open_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_close_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_comma.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_open_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_open_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_object_string_with_apostrophes.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_open.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_single_eacute.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_single_star.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_trailing_#.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_uescaped_LF_before_string.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_array.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_array_partial_null.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_array_unfinished_false.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_array_unfinished_true.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unclosed_object.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_unicode-identifier.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_whitespace_U+2060_word_joiner.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_whitespace_formfeed.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -1162,8 +1163,8 @@ TEST_CASE("nst's JSONTestSuite (2)") SECTION("n (previously overflowed)") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_100000_opening_arrays.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_object.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_100000_opening_arrays.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/n_structure_open_array_object.json" }) { CAPTURE(filename) std::ifstream f(filename); @@ -1173,41 +1174,41 @@ TEST_CASE("nst's JSONTestSuite (2)") SECTION("i -> y") { - for (const auto* filename : {TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_double_huge_neg_exp.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_huge_exp.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_neg_int_huge_exp.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_pos_double_huge_exp.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_real_neg_overflow.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_real_pos_overflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_real_underflow.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_too_big_neg_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_too_big_pos_int.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_very_big_negative_int.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_object_key_lone_2nd_surrogate.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_1st_surrogate_but_2nd_missing.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_UTF-16LE_with_BOM.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_UTF-8_invalid_sequence.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_UTF8_surrogate_U+D800.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_incomplete_surrogate_pair.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_incomplete_surrogates_escape_valid.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_invalid_lonely_surrogate.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_invalid_surrogate.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_invalid_utf-8.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_inverted_surrogates_U+1D11E.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_iso_latin_1.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_lone_second_surrogate.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_lone_utf8_continuation_byte.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_not_in_unicode_range.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_overlong_sequence_2_bytes.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_overlong_sequence_6_bytes.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_overlong_sequence_6_bytes_null.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_truncated-utf-8.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_utf16BE_no_BOM.json", - //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_utf16LE_no_BOM.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_structure_500_nested_arrays.json", - TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_structure_UTF-8_BOM_empty_object.json"}) + for (const auto* filename : { TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_double_huge_neg_exp.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_huge_exp.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_neg_int_huge_exp.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_pos_double_huge_exp.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_real_neg_overflow.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_real_pos_overflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_real_underflow.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_too_big_neg_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_too_big_pos_int.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_number_very_big_negative_int.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_object_key_lone_2nd_surrogate.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_1st_surrogate_but_2nd_missing.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_UTF-16LE_with_BOM.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_UTF-8_invalid_sequence.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_UTF8_surrogate_U+D800.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_incomplete_surrogate_pair.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_incomplete_surrogates_escape_valid.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_invalid_lonely_surrogate.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_invalid_surrogate.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_invalid_utf-8.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_inverted_surrogates_U+1D11E.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_iso_latin_1.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_lone_second_surrogate.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_lone_utf8_continuation_byte.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_not_in_unicode_range.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_overlong_sequence_2_bytes.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_overlong_sequence_6_bytes.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_overlong_sequence_6_bytes_null.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_truncated-utf-8.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_utf16BE_no_BOM.json", + //TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_string_utf16LE_no_BOM.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_structure_500_nested_arrays.json", + TEST_DATA_DIRECTORY "/nst_json_testsuite2/test_parsing/i_structure_UTF-8_BOM_empty_object.json" }) { CAPTURE(filename) std::ifstream f(filename); diff --git a/tests/src/unit-ubjson.cpp b/tests/src/unit-ubjson.cpp index 1aa5b15ff..7edb34b2f 100644 --- a/tests/src/unit-ubjson.cpp +++ b/tests/src/unit-ubjson.cpp @@ -113,7 +113,7 @@ TEST_CASE("UBJSON") SECTION("null") { json const j = nullptr; - std::vector expected = {'Z'}; + std::vector expected = { 'Z' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -127,7 +127,7 @@ TEST_CASE("UBJSON") SECTION("true") { json const j = true; - std::vector const expected = {'T'}; + std::vector const expected = { 'T' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -139,7 +139,7 @@ TEST_CASE("UBJSON") SECTION("false") { json const j = false; - std::vector const expected = {'F'}; + std::vector const expected = { 'F' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -294,7 +294,7 @@ TEST_CASE("UBJSON") SECTION("-9263 (int16)") { json const j = -9263; - std::vector expected = {'I', 0xdb, 0xd1}; + std::vector expected = { 'I', 0xdb, 0xd1 }; // compare result + size const auto result = json::to_ubjson(j); @@ -450,7 +450,7 @@ TEST_CASE("UBJSON") SECTION("65536..2147483647 (int32)") { - for (uint32_t i : {65536u, 77777u, 1048576u}) + for (uint32_t i : { 65536u, 77777u, 1048576u }) { CAPTURE(i) @@ -489,7 +489,7 @@ TEST_CASE("UBJSON") SECTION("2147483648..9223372036854775807 (int64)") { - std::vector const v = {2147483648ul, 9223372036854775807ul}; + std::vector const v = { 2147483648ul, 9223372036854775807ul }; for (uint64_t i : v) { CAPTURE(i) @@ -641,7 +641,7 @@ TEST_CASE("UBJSON") SECTION("65536..2147483647 (int32)") { - for (uint32_t i : {65536u, 77777u, 1048576u}) + for (uint32_t i : { 65536u, 77777u, 1048576u }) { CAPTURE(i) @@ -679,7 +679,7 @@ TEST_CASE("UBJSON") SECTION("2147483648..9223372036854775807 (int64)") { - std::vector const v = {2147483648ul, 9223372036854775807ul}; + std::vector const v = { 2147483648ul, 9223372036854775807ul }; for (uint64_t i : v) { CAPTURE(i) @@ -729,7 +729,7 @@ TEST_CASE("UBJSON") { double v = 3.1415925; json const j = v; - std::vector expected = {'D', 0x40, 0x09, 0x21, 0xfb, 0x3f, 0xa6, 0xde, 0xfc}; + std::vector expected = { 'D', 0x40, 0x09, 0x21, 0xfb, 0x3f, 0xa6, 0xde, 0xfc }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -744,8 +744,8 @@ TEST_CASE("UBJSON") { SECTION("unsigned integer number") { - std::vector const vec = {'H', 'i', 0x14, '1', '2', '3', '4', '5', '6', '7', '8', '9', - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'}; + std::vector const vec = { 'H', 'i', 0x14, '1', '2', '3', '4', '5', '6', '7', '8', '9', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' }; const auto j = json::from_ubjson(vec); CHECK(j.is_number_unsigned()); CHECK(j.dump() == "12345678901234567890"); @@ -753,8 +753,8 @@ TEST_CASE("UBJSON") SECTION("signed integer number") { - std::vector const vec = {'H', 'i', 0x13, '-', '1', '2', '3', '4', '5', '6', '7', - '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8'}; + std::vector const vec = { 'H', 'i', 0x13, '-', '1', '2', '3', '4', '5', '6', '7', + '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8' }; const auto j = json::from_ubjson(vec); CHECK(j.is_number_integer()); CHECK(j.dump() == "-123456789012345678"); @@ -762,8 +762,8 @@ TEST_CASE("UBJSON") SECTION("floating-point number") { - std::vector const vec = {'H', 'i', 0x16, '3', '.', '1', '4', '1', '5', '9', '2', '6', '5', - '3', '5', '8', '9', '7', '9', '3', '2', '3', '8', '4', '6'}; + std::vector const vec = { 'H', 'i', 0x16, '3', '.', '1', '4', '1', '5', '9', '2', '6', '5', + '3', '5', '8', '9', '7', '9', '3', '2', '3', '8', '4', '6' }; const auto j = json::from_ubjson(vec); CHECK(j.is_number_float()); CHECK(j.dump() == "3.141592653589793"); @@ -772,24 +772,24 @@ TEST_CASE("UBJSON") SECTION("errors") { // error while parsing length - std::vector const vec0 = {'H', 'i'}; + std::vector const vec0 = { 'H', 'i' }; CHECK(json::from_ubjson(vec0, true, false).is_discarded()); // error while parsing string - std::vector const vec1 = {'H', 'i', '1'}; + std::vector const vec1 = { 'H', 'i', '1' }; CHECK(json::from_ubjson(vec1, true, false).is_discarded()); json _; - std::vector const vec2 = {'H', 'i', 2, '1', 'A', '3'}; + std::vector const vec2 = { 'H', 'i', 2, '1', 'A', '3' }; 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); - std::vector const vec3 = {'H', 'i', 2, '1', '.'}; + std::vector const vec3 = { 'H', 'i', 2, '1', '.' }; 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); - std::vector const vec4 = {'H', 2, '1', '0'}; + std::vector const vec4 = { 'H', 2, '1', '0' }; 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", @@ -804,8 +804,8 @@ TEST_CASE("UBJSON") // number will be serialized to high-precision number const auto vec = json::to_ubjson(j); - std::vector expected = {'H', 'i', 0x14, '1', '1', '1', '1', '1', '1', '1', '1', '1', - '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'}; + std::vector expected = { 'H', 'i', 0x14, '1', '1', '1', '1', '1', '1', '1', '1', '1', + '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1' }; CHECK(vec == expected); // roundtrip @@ -887,7 +887,7 @@ TEST_CASE("UBJSON") SECTION("N = 256..32767") { - for (size_t N : {256u, 999u, 1025u, 3333u, 2048u, 32767u}) + for (size_t N : { 256u, 999u, 1025u, 3333u, 2048u, 32767u }) { CAPTURE(N) @@ -918,7 +918,7 @@ TEST_CASE("UBJSON") SECTION("N = 65536..2147483647") { - for (size_t N : {65536u, 77777u, 1048576u}) + for (size_t N : { 65536u, 77777u, 1048576u }) { CAPTURE(N) @@ -1042,7 +1042,7 @@ TEST_CASE("UBJSON") SECTION("N = 256..32767") { - for (std::size_t N : {256u, 999u, 1025u, 3333u, 2048u, 32767u}) + for (std::size_t N : { 256u, 999u, 1025u, 3333u, 2048u, 32767u }) { CAPTURE(N) @@ -1076,7 +1076,7 @@ TEST_CASE("UBJSON") SECTION("N = 32768..2147483647") { - for (std::size_t N : {32768u, 77777u, 1048576u}) + for (std::size_t N : { 32768u, 77777u, 1048576u }) { CAPTURE(N) @@ -1176,7 +1176,7 @@ TEST_CASE("UBJSON") SECTION("size=false type=false") { json const j = json::array(); - std::vector expected = {'[', ']'}; + std::vector expected = { '[', ']' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -1188,7 +1188,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=false") { json const j = json::array(); - std::vector expected = {'[', '#', 'i', 0}; + std::vector expected = { '[', '#', 'i', 0 }; const auto result = json::to_ubjson(j, true); CHECK(result == expected); @@ -1200,7 +1200,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=true") { json const j = json::array(); - std::vector expected = {'[', '#', 'i', 0}; + std::vector expected = { '[', '#', 'i', 0 }; const auto result = json::to_ubjson(j, true, true); CHECK(result == expected); @@ -1214,8 +1214,8 @@ TEST_CASE("UBJSON") { SECTION("size=false type=false") { - json const j = {nullptr}; - std::vector expected = {'[', 'Z', ']'}; + json const j = { nullptr }; + std::vector expected = { '[', 'Z', ']' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -1226,8 +1226,8 @@ TEST_CASE("UBJSON") SECTION("size=true type=false") { - json const j = {nullptr}; - std::vector expected = {'[', '#', 'i', 1, 'Z'}; + json const j = { nullptr }; + std::vector expected = { '[', '#', 'i', 1, 'Z' }; const auto result = json::to_ubjson(j, true); CHECK(result == expected); @@ -1238,8 +1238,8 @@ TEST_CASE("UBJSON") SECTION("size=true type=true") { - json const j = {nullptr}; - std::vector expected = {'[', '$', 'Z', '#', 'i', 1}; + json const j = { nullptr }; + std::vector expected = { '[', '$', 'Z', '#', 'i', 1 }; const auto result = json::to_ubjson(j, true, true); CHECK(result == expected); @@ -1254,7 +1254,7 @@ TEST_CASE("UBJSON") SECTION("size=false type=false") { json const j = json::parse("[1,2,3,4,5]"); - std::vector expected = {'[', 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5, ']'}; + std::vector expected = { '[', 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5, ']' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -1266,7 +1266,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=false") { json const j = json::parse("[1,2,3,4,5]"); - std::vector expected = {'[', '#', 'i', 5, 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5}; + std::vector expected = { '[', '#', 'i', 5, 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5 }; const auto result = json::to_ubjson(j, true); CHECK(result == expected); @@ -1278,7 +1278,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=true") { json const j = json::parse("[1,2,3,4,5]"); - std::vector expected = {'[', '$', 'i', '#', 'i', 5, 1, 2, 3, 4, 5}; + std::vector expected = { '[', '$', 'i', '#', 'i', 5, 1, 2, 3, 4, 5 }; const auto result = json::to_ubjson(j, true, true); CHECK(result == expected); @@ -1293,7 +1293,7 @@ TEST_CASE("UBJSON") SECTION("size=false type=false") { json const j = json::parse("[[[[]]]]"); - std::vector expected = {'[', '[', '[', '[', ']', ']', ']', ']'}; + std::vector expected = { '[', '[', '[', '[', ']', ']', ']', ']' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -1305,7 +1305,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=false") { json const j = json::parse("[[[[]]]]"); - std::vector expected = {'[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 0}; + std::vector expected = { '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 0 }; const auto result = json::to_ubjson(j, true); CHECK(result == expected); @@ -1317,7 +1317,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=true") { json const j = json::parse("[[[[]]]]"); - std::vector expected = {'[', '$', '[', '#', 'i', 1, '$', '[', '#', 'i', 1, '$', '[', '#', 'i', 1, '#', 'i', 0}; + std::vector expected = { '[', '$', '[', '#', 'i', 1, '$', '[', '#', 'i', 1, '$', '[', '#', 'i', 1, '#', 'i', 0 }; const auto result = json::to_ubjson(j, true, true); CHECK(result == expected); @@ -1363,7 +1363,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=true") { json j(257, nullptr); - std::vector expected = {'[', '$', 'Z', '#', 'I', 0x01, 0x01}; + std::vector expected = { '[', '$', 'Z', '#', 'I', 0x01, 0x01 }; const auto result = json::to_ubjson(j, true, true); CHECK(result == expected); @@ -1411,7 +1411,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=true") { json j(65793, nullptr); - std::vector expected = {'[', '$', 'Z', '#', 'l', 0x00, 0x01, 0x01, 0x01}; + std::vector expected = { '[', '$', 'Z', '#', 'l', 0x00, 0x01, 0x01, 0x01 }; const auto result = json::to_ubjson(j, true, true); CHECK(result == expected); @@ -1429,7 +1429,7 @@ TEST_CASE("UBJSON") SECTION("size=false type=false") { json const j = json::object(); - std::vector expected = {'{', '}'}; + std::vector expected = { '{', '}' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -1441,7 +1441,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=false") { json const j = json::object(); - std::vector expected = {'{', '#', 'i', 0}; + std::vector expected = { '{', '#', 'i', 0 }; const auto result = json::to_ubjson(j, true); CHECK(result == expected); @@ -1453,7 +1453,7 @@ TEST_CASE("UBJSON") SECTION("size=true type=true") { json const j = json::object(); - std::vector expected = {'{', '#', 'i', 0}; + std::vector expected = { '{', '#', 'i', 0 }; const auto result = json::to_ubjson(j, true, true); CHECK(result == expected); @@ -1467,8 +1467,8 @@ TEST_CASE("UBJSON") { SECTION("size=false type=false") { - json const j = {{"", nullptr}}; - std::vector expected = {'{', 'i', 0, 'Z', '}'}; + json const j = { { "", nullptr } }; + std::vector expected = { '{', 'i', 0, 'Z', '}' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -1479,8 +1479,8 @@ TEST_CASE("UBJSON") SECTION("size=true type=false") { - json const j = {{"", nullptr}}; - std::vector expected = {'{', '#', 'i', 1, 'i', 0, 'Z'}; + json const j = { { "", nullptr } }; + std::vector expected = { '{', '#', 'i', 1, 'i', 0, 'Z' }; const auto result = json::to_ubjson(j, true); CHECK(result == expected); @@ -1491,8 +1491,8 @@ TEST_CASE("UBJSON") SECTION("size=true type=true") { - json const j = {{"", nullptr}}; - std::vector expected = {'{', '$', 'Z', '#', 'i', 1, 'i', 0}; + json const j = { { "", nullptr } }; + std::vector expected = { '{', '$', 'Z', '#', 'i', 1, 'i', 0 }; const auto result = json::to_ubjson(j, true, true); CHECK(result == expected); @@ -1507,7 +1507,7 @@ TEST_CASE("UBJSON") SECTION("size=false type=false") { json const j = json::parse(R"({"a": {"b": {"c": {}}}})"); - std::vector expected = {'{', 'i', 1, 'a', '{', 'i', 1, 'b', '{', 'i', 1, 'c', '{', '}', '}', '}', '}'}; + std::vector expected = { '{', 'i', 1, 'a', '{', 'i', 1, 'b', '{', 'i', 1, 'c', '{', '}', '}', '}', '}' }; const auto result = json::to_ubjson(j); CHECK(result == expected); @@ -1519,8 +1519,8 @@ TEST_CASE("UBJSON") SECTION("size=true type=false") { json const j = json::parse(R"({"a": {"b": {"c": {}}}})"); - std::vector expected = {'{', '#', 'i', 1, 'i', 1, 'a', '{', '#', 'i', 1, 'i', 1, - 'b', '{', '#', 'i', 1, 'i', 1, 'c', '{', '#', 'i', 0}; + std::vector expected = { '{', '#', 'i', 1, 'i', 1, 'a', '{', '#', 'i', 1, 'i', 1, + 'b', '{', '#', 'i', 1, 'i', 1, 'c', '{', '#', 'i', 0 }; const auto result = json::to_ubjson(j, true); CHECK(result == expected); @@ -1532,8 +1532,8 @@ TEST_CASE("UBJSON") SECTION("size=true type=true") { json const j = json::parse(R"({"a": {"b": {"c": {}}}})"); - std::vector expected = {'{', '$', '{', '#', 'i', 1, 'i', 1, 'a', '$', '{', '#', 'i', 1, - 'i', 1, 'b', '$', '{', '#', 'i', 1, 'i', 1, 'c', '#', 'i', 0}; + std::vector expected = { '{', '$', '{', '#', 'i', 1, 'i', 1, 'a', '$', '{', '#', 'i', 1, + 'i', 1, 'b', '$', '{', '#', 'i', 1, 'i', 1, 'c', '#', 'i', 0 }; const auto result = json::to_ubjson(j, true, true); CHECK(result == expected); @@ -1549,7 +1549,7 @@ TEST_CASE("UBJSON") { SECTION("strict mode") { - std::vector const vec = {'Z', 'Z'}; + std::vector const vec = { 'Z', 'Z' }; SECTION("non-strict mode") { const auto result = json::from_ubjson(vec, false); @@ -1570,7 +1570,7 @@ TEST_CASE("UBJSON") { SECTION("array") { - std::vector const v_ubjson = {'[', '$', 'Z', '#', 'L', 0x78, 0x28, 0x00, 0x68, 0x28, 0x69, 0x69, 0x17}; + std::vector const v_ubjson = { '[', '$', 'Z', '#', 'L', 0x78, 0x28, 0x00, 0x68, 0x28, 0x69, 0x69, 0x17 }; json _; CHECK_THROWS_AS(_ = json::from_ubjson(v_ubjson), json::out_of_range&); @@ -1584,7 +1584,7 @@ TEST_CASE("UBJSON") SECTION("object") { - std::vector const v_ubjson = {'{', '$', 'Z', '#', 'L', 0x78, 0x28, 0x00, 0x68, 0x28, 0x69, 0x69, 0x17}; + std::vector const v_ubjson = { '{', '$', 'Z', '#', 'L', 0x78, 0x28, 0x00, 0x68, 0x28, 0x69, 0x69, 0x17 }; json _; CHECK_THROWS_AS(_ = json::from_ubjson(v_ubjson), json::out_of_range&); @@ -1602,42 +1602,42 @@ TEST_CASE("UBJSON") { SECTION("start_array()") { - std::vector const v = {'[', 'T', 'F', ']'}; + std::vector const v = { '[', 'T', 'F', ']' }; SaxCountdown scp(0); CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson)); } SECTION("start_object()") { - std::vector const v = {'{', 'i', 3, 'f', 'o', 'o', 'F', '}'}; + std::vector const v = { '{', 'i', 3, 'f', 'o', 'o', 'F', '}' }; SaxCountdown scp(0); CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson)); } SECTION("key() in object") { - std::vector const v = {'{', 'i', 3, 'f', 'o', 'o', 'F', '}'}; + std::vector const v = { '{', 'i', 3, 'f', 'o', 'o', 'F', '}' }; SaxCountdown scp(1); CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson)); } SECTION("start_array(len)") { - std::vector const v = {'[', '#', 'i', '2', 'T', 'F'}; + std::vector const v = { '[', '#', 'i', '2', 'T', 'F' }; SaxCountdown scp(0); CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson)); } SECTION("start_object(len)") { - std::vector const v = {'{', '#', 'i', '1', 3, 'f', 'o', 'o', 'F'}; + std::vector const v = { '{', '#', 'i', '1', 3, 'f', 'o', 'o', 'F' }; SaxCountdown scp(0); CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson)); } SECTION("key() in object with length") { - std::vector const v = {'{', 'i', 3, 'f', 'o', 'o', 'F', '}'}; + std::vector const v = { '{', 'i', 3, 'f', 'o', 'o', 'F', '}' }; SaxCountdown scp(1); CHECK(!json::sax_parse(v, &scp, json::input_format_t::ubjson)); } @@ -1648,11 +1648,11 @@ TEST_CASE("UBJSON") SECTION("strings") { // create a single-character string for all number types - std::vector s_i = {'S', 'i', 1, 'a'}; - std::vector const s_U = {'S', 'U', 1, 'a'}; - std::vector const s_I = {'S', 'I', 0, 1, 'a'}; - std::vector const s_l = {'S', 'l', 0, 0, 0, 1, 'a'}; - std::vector const s_L = {'S', 'L', 0, 0, 0, 0, 0, 0, 0, 1, 'a'}; + std::vector s_i = { 'S', 'i', 1, 'a' }; + std::vector const s_U = { 'S', 'U', 1, 'a' }; + std::vector const s_I = { 'S', 'I', 0, 1, 'a' }; + std::vector const s_l = { 'S', 'l', 0, 0, 0, 1, 'a' }; + std::vector const s_L = { 'S', 'L', 0, 0, 0, 0, 0, 0, 0, 1, 'a' }; // check if string is parsed correctly to "a" CHECK(json::from_ubjson(s_i) == "a"); @@ -1674,11 +1674,11 @@ TEST_CASE("UBJSON") SECTION("float") { // float32 - std::vector const v_d = {'d', 0x40, 0x49, 0x0f, 0xd0}; + std::vector const v_d = { 'd', 0x40, 0x49, 0x0f, 0xd0 }; CHECK(json::from_ubjson(v_d) == 3.14159f); // float64 - std::vector const v_D = {'D', 0x40, 0x09, 0x21, 0xf9, 0xf0, 0x1b, 0x86, 0x6e}; + std::vector const v_D = { 'D', 0x40, 0x09, 0x21, 0xf9, 0xf0, 0x1b, 0x86, 0x6e }; CHECK(json::from_ubjson(v_D) == 3.14159); // float32 is serialized as float64 as the library does not support float32 @@ -1691,34 +1691,34 @@ TEST_CASE("UBJSON") SECTION("optimized version (length only)") { // create vector with two elements of the same type - std::vector const v_TU = {'[', '#', 'U', 2, 'T', 'T'}; - std::vector const v_T = {'[', '#', 'i', 2, 'T', 'T'}; - std::vector const v_F = {'[', '#', 'i', 2, 'F', 'F'}; - std::vector const v_Z = {'[', '#', 'i', 2, 'Z', 'Z'}; - std::vector const v_i = {'[', '#', 'i', 2, 'i', 0x7F, 'i', 0x7F}; - std::vector const v_U = {'[', '#', 'i', 2, 'U', 0xFF, 'U', 0xFF}; - std::vector const v_I = {'[', '#', 'i', 2, 'I', 0x7F, 0xFF, 'I', 0x7F, 0xFF}; - std::vector const v_l = {'[', '#', 'i', 2, 'l', 0x7F, 0xFF, 0xFF, 0xFF, 'l', 0x7F, 0xFF, 0xFF, 0xFF}; - std::vector const v_L = {'[', '#', 'i', 2, 'L', 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 'L', 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; - std::vector const v_D = {'[', '#', 'i', 2, 'D', 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, - 0xd8, 0x4a, 'D', 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, 0xd8, 0x4a}; - std::vector const v_S = {'[', '#', 'i', 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a'}; - std::vector const v_C = {'[', '#', 'i', 2, 'C', 'a', 'C', 'a'}; + std::vector const v_TU = { '[', '#', 'U', 2, 'T', 'T' }; + std::vector const v_T = { '[', '#', 'i', 2, 'T', 'T' }; + std::vector const v_F = { '[', '#', 'i', 2, 'F', 'F' }; + std::vector const v_Z = { '[', '#', 'i', 2, 'Z', 'Z' }; + std::vector const v_i = { '[', '#', 'i', 2, 'i', 0x7F, 'i', 0x7F }; + std::vector const v_U = { '[', '#', 'i', 2, 'U', 0xFF, 'U', 0xFF }; + std::vector const v_I = { '[', '#', 'i', 2, 'I', 0x7F, 0xFF, 'I', 0x7F, 0xFF }; + std::vector const v_l = { '[', '#', 'i', 2, 'l', 0x7F, 0xFF, 0xFF, 0xFF, 'l', 0x7F, 0xFF, 0xFF, 0xFF }; + std::vector const v_L = { '[', '#', 'i', 2, 'L', 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 'L', 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; + std::vector const v_D = { '[', '#', 'i', 2, 'D', 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, + 0xd8, 0x4a, 'D', 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, 0xd8, 0x4a }; + std::vector const v_S = { '[', '#', 'i', 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a' }; + std::vector const v_C = { '[', '#', 'i', 2, 'C', 'a', 'C', 'a' }; // check if vector is parsed correctly - CHECK(json::from_ubjson(v_TU) == json({true, true})); - CHECK(json::from_ubjson(v_T) == json({true, true})); - CHECK(json::from_ubjson(v_F) == json({false, false})); - CHECK(json::from_ubjson(v_Z) == json({nullptr, nullptr})); - CHECK(json::from_ubjson(v_i) == json({127, 127})); - CHECK(json::from_ubjson(v_U) == json({255, 255})); - CHECK(json::from_ubjson(v_I) == json({32767, 32767})); - CHECK(json::from_ubjson(v_l) == json({2147483647, 2147483647})); - CHECK(json::from_ubjson(v_L) == json({9223372036854775807, 9223372036854775807})); - CHECK(json::from_ubjson(v_D) == json({3.1415926, 3.1415926})); - CHECK(json::from_ubjson(v_S) == json({"a", "a"})); - CHECK(json::from_ubjson(v_C) == json({"a", "a"})); + CHECK(json::from_ubjson(v_TU) == json({ true, true })); + CHECK(json::from_ubjson(v_T) == json({ true, true })); + CHECK(json::from_ubjson(v_F) == json({ false, false })); + CHECK(json::from_ubjson(v_Z) == json({ nullptr, nullptr })); + CHECK(json::from_ubjson(v_i) == json({ 127, 127 })); + CHECK(json::from_ubjson(v_U) == json({ 255, 255 })); + CHECK(json::from_ubjson(v_I) == json({ 32767, 32767 })); + CHECK(json::from_ubjson(v_l) == json({ 2147483647, 2147483647 })); + CHECK(json::from_ubjson(v_L) == json({ 9223372036854775807, 9223372036854775807 })); + CHECK(json::from_ubjson(v_D) == json({ 3.1415926, 3.1415926 })); + CHECK(json::from_ubjson(v_S) == json({ "a", "a" })); + CHECK(json::from_ubjson(v_C) == json({ "a", "a" })); // roundtrip: output should be optimized CHECK(json::to_ubjson(json::from_ubjson(v_T), true) == v_T); @@ -1737,37 +1737,37 @@ TEST_CASE("UBJSON") SECTION("optimized version (type and length)") { // create vector with two elements of the same type - std::vector const v_N = {'[', '$', 'N', '#', 'i', 2}; - std::vector const v_T = {'[', '$', 'T', '#', 'i', 2}; - std::vector const v_F = {'[', '$', 'F', '#', 'i', 2}; - std::vector const v_Z = {'[', '$', 'Z', '#', 'i', 2}; - std::vector const v_i = {'[', '$', 'i', '#', 'i', 2, 0x7F, 0x7F}; - std::vector const v_U = {'[', '$', 'U', '#', 'i', 2, 0xFF, 0xFF}; - std::vector const v_I = {'[', '$', 'I', '#', 'i', 2, 0x7F, 0xFF, 0x7F, 0xFF}; - std::vector const v_l = {'[', '$', 'l', '#', 'i', 2, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF}; - std::vector const v_L = {'[', '$', 'L', '#', 'i', 2, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; - std::vector const v_D = {'[', '$', 'D', '#', 'i', 2, 0x40, 0x09, 0x21, 0xfb, 0x4d, - 0x12, 0xd8, 0x4a, 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, 0xd8, 0x4a}; - std::vector const v_S = {'[', '$', 'S', '#', 'i', 2, 'i', 1, 'a', 'i', 1, 'a'}; - std::vector const v_C = {'[', '$', 'C', '#', 'i', 2, 'a', 'a'}; + std::vector const v_N = { '[', '$', 'N', '#', 'i', 2 }; + std::vector const v_T = { '[', '$', 'T', '#', 'i', 2 }; + std::vector const v_F = { '[', '$', 'F', '#', 'i', 2 }; + std::vector const v_Z = { '[', '$', 'Z', '#', 'i', 2 }; + std::vector const v_i = { '[', '$', 'i', '#', 'i', 2, 0x7F, 0x7F }; + std::vector const v_U = { '[', '$', 'U', '#', 'i', 2, 0xFF, 0xFF }; + std::vector const v_I = { '[', '$', 'I', '#', 'i', 2, 0x7F, 0xFF, 0x7F, 0xFF }; + std::vector const v_l = { '[', '$', 'l', '#', 'i', 2, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF }; + std::vector const v_L = { '[', '$', 'L', '#', 'i', 2, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; + std::vector const v_D = { '[', '$', 'D', '#', 'i', 2, 0x40, 0x09, 0x21, 0xfb, 0x4d, + 0x12, 0xd8, 0x4a, 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, 0xd8, 0x4a }; + std::vector const v_S = { '[', '$', 'S', '#', 'i', 2, 'i', 1, 'a', 'i', 1, 'a' }; + std::vector const v_C = { '[', '$', 'C', '#', 'i', 2, 'a', 'a' }; // check if vector is parsed correctly CHECK(json::from_ubjson(v_N) == json::array()); - CHECK(json::from_ubjson(v_T) == json({true, true})); - CHECK(json::from_ubjson(v_F) == json({false, false})); - CHECK(json::from_ubjson(v_Z) == json({nullptr, nullptr})); - CHECK(json::from_ubjson(v_i) == json({127, 127})); - CHECK(json::from_ubjson(v_U) == json({255, 255})); - CHECK(json::from_ubjson(v_I) == json({32767, 32767})); - CHECK(json::from_ubjson(v_l) == json({2147483647, 2147483647})); - CHECK(json::from_ubjson(v_L) == json({9223372036854775807, 9223372036854775807})); - CHECK(json::from_ubjson(v_D) == json({3.1415926, 3.1415926})); - CHECK(json::from_ubjson(v_S) == json({"a", "a"})); - CHECK(json::from_ubjson(v_C) == json({"a", "a"})); + CHECK(json::from_ubjson(v_T) == json({ true, true })); + CHECK(json::from_ubjson(v_F) == json({ false, false })); + CHECK(json::from_ubjson(v_Z) == json({ nullptr, nullptr })); + CHECK(json::from_ubjson(v_i) == json({ 127, 127 })); + CHECK(json::from_ubjson(v_U) == json({ 255, 255 })); + CHECK(json::from_ubjson(v_I) == json({ 32767, 32767 })); + CHECK(json::from_ubjson(v_l) == json({ 2147483647, 2147483647 })); + CHECK(json::from_ubjson(v_L) == json({ 9223372036854775807, 9223372036854775807 })); + CHECK(json::from_ubjson(v_D) == json({ 3.1415926, 3.1415926 })); + CHECK(json::from_ubjson(v_S) == json({ "a", "a" })); + CHECK(json::from_ubjson(v_C) == json({ "a", "a" })); // roundtrip: output should be optimized - std::vector const v_empty = {'[', '#', 'i', 0}; + std::vector const v_empty = { '[', '#', 'i', 0 }; CHECK(json::to_ubjson(json::from_ubjson(v_N), true, true) == v_empty); CHECK(json::to_ubjson(json::from_ubjson(v_T), true, true) == v_T); CHECK(json::to_ubjson(json::from_ubjson(v_F), true, true) == v_F); @@ -1798,7 +1798,7 @@ TEST_CASE("UBJSON") { SECTION("eof after C byte") { - std::vector const v = {'C'}; + std::vector const v = { 'C' }; json _; 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", @@ -1807,7 +1807,7 @@ TEST_CASE("UBJSON") SECTION("byte out of range") { - std::vector const v = {'C', 130}; + std::vector const v = { 'C', 130 }; json _; CHECK_THROWS_WITH_AS( _ = json::from_ubjson(v), @@ -1820,7 +1820,7 @@ TEST_CASE("UBJSON") { SECTION("eof after S byte") { - std::vector const v = {'S'}; + std::vector const v = { 'S' }; json _; 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", @@ -1829,7 +1829,7 @@ TEST_CASE("UBJSON") SECTION("invalid byte") { - std::vector const v = {'S', '1', 'a'}; + std::vector const v = { 'S', '1', 'a' }; json _; CHECK_THROWS_WITH_AS( _ = json::from_ubjson(v), @@ -1842,7 +1842,7 @@ TEST_CASE("UBJSON") { SECTION("optimized array: no size following type") { - std::vector const v = {'[', '$', 'i', 2}; + std::vector const v = { '[', '$', 'i', 2 }; json _; CHECK_THROWS_WITH_AS( _ = json::from_ubjson(v), @@ -1853,20 +1853,20 @@ TEST_CASE("UBJSON") SECTION("strings") { - std::vector const vS = {'S'}; + std::vector const vS = { 'S' }; json _; 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&); CHECK(json::from_ubjson(vS, true, false).is_discarded()); - std::vector const v = {'S', 'i', '2', 'a'}; + std::vector const v = { 'S', 'i', '2', 'a' }; 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&); CHECK(json::from_ubjson(v, true, false).is_discarded()); - std::vector const vC = {'C'}; + std::vector const vC = { 'C' }; 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&); @@ -1875,38 +1875,38 @@ TEST_CASE("UBJSON") SECTION("sizes") { - std::vector const vU = {'[', '#', 'U'}; + std::vector const vU = { '[', '#', 'U' }; json _; 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&); CHECK(json::from_ubjson(vU, true, false).is_discarded()); - std::vector const vi = {'[', '#', 'i'}; + std::vector const vi = { '[', '#', 'i' }; 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&); CHECK(json::from_ubjson(vi, true, false).is_discarded()); - std::vector const vI = {'[', '#', 'I'}; + std::vector const vI = { '[', '#', 'I' }; 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&); CHECK(json::from_ubjson(vI, true, false).is_discarded()); - std::vector const vl = {'[', '#', 'l'}; + std::vector const vl = { '[', '#', 'l' }; 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&); CHECK(json::from_ubjson(vl, true, false).is_discarded()); - std::vector const vL = {'[', '#', 'L'}; + std::vector const vL = { '[', '#', 'L' }; 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&); CHECK(json::from_ubjson(vL, true, false).is_discarded()); - std::vector const v0 = {'[', '#', 'T', ']'}; + std::vector const v0 = { '[', '#', 'T', ']' }; 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", @@ -1916,20 +1916,20 @@ TEST_CASE("UBJSON") SECTION("types") { - std::vector const v0 = {'[', '$'}; + std::vector const v0 = { '[', '$' }; json _; 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&); CHECK(json::from_ubjson(v0, true, false).is_discarded()); - std::vector const vi = {'[', '$', '#'}; + std::vector const vi = { '[', '$', '#' }; 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&); CHECK(json::from_ubjson(vi, true, false).is_discarded()); - std::vector const vT = {'[', '$', 'T'}; + std::vector const vT = { '[', '$', 'T' }; 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&); @@ -1938,20 +1938,20 @@ TEST_CASE("UBJSON") SECTION("arrays") { - std::vector const vST = {'[', '$', 'i', '#', 'i', 2, 1}; + std::vector const vST = { '[', '$', 'i', '#', 'i', 2, 1 }; json _; 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&); CHECK(json::from_ubjson(vST, true, false).is_discarded()); - std::vector const vS = {'[', '#', 'i', 2, 'i', 1}; + std::vector const vS = { '[', '#', 'i', 2, 'i', 1 }; 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&); CHECK(json::from_ubjson(vS, true, false).is_discarded()); - std::vector const v = {'[', 'i', 2, 'i', 1}; + std::vector const v = { '[', 'i', 2, 'i', 1 }; 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&); @@ -1960,51 +1960,51 @@ TEST_CASE("UBJSON") SECTION("objects") { - std::vector const vST = {'{', '$', 'i', '#', 'i', 2, 'i', 1, 'a', 1}; + std::vector const vST = { '{', '$', 'i', '#', 'i', 2, 'i', 1, 'a', 1 }; json _; 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&); CHECK(json::from_ubjson(vST, true, false).is_discarded()); - std::vector const vT = {'{', '$', 'i', 'i', 1, 'a', 1}; + std::vector const vT = { '{', '$', 'i', 'i', 1, 'a', 1 }; 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&); CHECK(json::from_ubjson(vT, true, false).is_discarded()); - std::vector const vS = {'{', '#', 'i', 2, 'i', 1, 'a', 'i', 1}; + std::vector const vS = { '{', '#', 'i', 2, 'i', 1, 'a', 'i', 1 }; 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&); CHECK(json::from_ubjson(vS, true, false).is_discarded()); - std::vector const v = {'{', 'i', 1, 'a', 'i', 1}; + std::vector const v = { '{', 'i', 1, 'a', 'i', 1 }; 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&); CHECK(json::from_ubjson(v, true, false).is_discarded()); - std::vector const v2 = {'{', 'i', 1, 'a', 'i', 1, 'i'}; + std::vector const v2 = { '{', 'i', 1, 'a', 'i', 1, 'i' }; 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&); CHECK(json::from_ubjson(v2, true, false).is_discarded()); - std::vector const v3 = {'{', 'i', 1, 'a'}; + std::vector const v3 = { '{', 'i', 1, 'a' }; 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&); CHECK(json::from_ubjson(v3, true, false).is_discarded()); - std::vector const vST1 = {'{', '$', 'd', '#', 'i', 2, 'i', 1, 'a'}; + std::vector const vST1 = { '{', '$', 'd', '#', 'i', 2, 'i', 1, 'a' }; 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&); CHECK(json::from_ubjson(vST1, true, false).is_discarded()); - std::vector const vST2 = {'{', '#', 'i', 2, 'i', 1, 'a'}; + std::vector const vST2 = { '{', '#', 'i', 2, 'i', 1, 'a' }; 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&); @@ -2018,37 +2018,37 @@ TEST_CASE("UBJSON") { SECTION("array of i") { - json const j = {1, -1}; - std::vector expected = {'[', '$', 'i', '#', 'i', 2, 1, 0xff}; + json const j = { 1, -1 }; + std::vector expected = { '[', '$', 'i', '#', 'i', 2, 1, 0xff }; CHECK(json::to_ubjson(j, true, true) == expected); } SECTION("array of U") { - json const j = {200, 201}; - std::vector expected = {'[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9}; + json const j = { 200, 201 }; + std::vector expected = { '[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9 }; CHECK(json::to_ubjson(j, true, true) == expected); } SECTION("array of I") { - json const j = {30000, -30000}; - std::vector expected = {'[', '$', 'I', '#', 'i', 2, 0x75, 0x30, 0x8a, 0xd0}; + json const j = { 30000, -30000 }; + std::vector expected = { '[', '$', 'I', '#', 'i', 2, 0x75, 0x30, 0x8a, 0xd0 }; CHECK(json::to_ubjson(j, true, true) == expected); } SECTION("array of l") { - json const j = {70000, -70000}; - std::vector expected = {'[', '$', 'l', '#', 'i', 2, 0x00, 0x01, 0x11, 0x70, 0xFF, 0xFE, 0xEE, 0x90}; + json const j = { 70000, -70000 }; + std::vector expected = { '[', '$', 'l', '#', 'i', 2, 0x00, 0x01, 0x11, 0x70, 0xFF, 0xFE, 0xEE, 0x90 }; CHECK(json::to_ubjson(j, true, true) == expected); } SECTION("array of L") { - json const j = {5000000000, -5000000000}; - std::vector expected = {'[', '$', 'L', '#', 'i', 2, 0x00, 0x00, 0x00, 0x01, 0x2A, - 0x05, 0xF2, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0xD5, 0xFA, 0x0E, 0x00}; + json const j = { 5000000000, -5000000000 }; + std::vector expected = { '[', '$', 'L', '#', 'i', 2, 0x00, 0x00, 0x00, 0x01, 0x2A, + 0x05, 0xF2, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0xD5, 0xFA, 0x0E, 0x00 }; CHECK(json::to_ubjson(j, true, true) == expected); } } @@ -2057,47 +2057,47 @@ TEST_CASE("UBJSON") { SECTION("array of i") { - json const j = {1u, 2u}; - std::vector expected = {'[', '$', 'i', '#', 'i', 2, 1, 2}; - std::vector expected_size = {'[', '#', 'i', 2, 'i', 1, 'i', 2}; + json const j = { 1u, 2u }; + std::vector expected = { '[', '$', 'i', '#', 'i', 2, 1, 2 }; + std::vector expected_size = { '[', '#', 'i', 2, 'i', 1, 'i', 2 }; CHECK(json::to_ubjson(j, true, true) == expected); CHECK(json::to_ubjson(j, true) == expected_size); } SECTION("array of U") { - json const j = {200u, 201u}; - std::vector expected = {'[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9}; - std::vector expected_size = {'[', '#', 'i', 2, 'U', 0xC8, 'U', 0xC9}; + json const j = { 200u, 201u }; + std::vector expected = { '[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9 }; + std::vector expected_size = { '[', '#', 'i', 2, 'U', 0xC8, 'U', 0xC9 }; CHECK(json::to_ubjson(j, true, true) == expected); CHECK(json::to_ubjson(j, true) == expected_size); } SECTION("array of I") { - json const j = {30000u, 30001u}; - std::vector expected = {'[', '$', 'I', '#', 'i', 2, 0x75, 0x30, 0x75, 0x31}; - std::vector expected_size = {'[', '#', 'i', 2, 'I', 0x75, 0x30, 'I', 0x75, 0x31}; + json const j = { 30000u, 30001u }; + std::vector expected = { '[', '$', 'I', '#', 'i', 2, 0x75, 0x30, 0x75, 0x31 }; + std::vector expected_size = { '[', '#', 'i', 2, 'I', 0x75, 0x30, 'I', 0x75, 0x31 }; CHECK(json::to_ubjson(j, true, true) == expected); CHECK(json::to_ubjson(j, true) == expected_size); } SECTION("array of l") { - json const j = {70000u, 70001u}; - std::vector expected = {'[', '$', 'l', '#', 'i', 2, 0x00, 0x01, 0x11, 0x70, 0x00, 0x01, 0x11, 0x71}; - std::vector expected_size = {'[', '#', 'i', 2, 'l', 0x00, 0x01, 0x11, 0x70, 'l', 0x00, 0x01, 0x11, 0x71}; + json const j = { 70000u, 70001u }; + std::vector expected = { '[', '$', 'l', '#', 'i', 2, 0x00, 0x01, 0x11, 0x70, 0x00, 0x01, 0x11, 0x71 }; + std::vector expected_size = { '[', '#', 'i', 2, 'l', 0x00, 0x01, 0x11, 0x70, 'l', 0x00, 0x01, 0x11, 0x71 }; CHECK(json::to_ubjson(j, true, true) == expected); CHECK(json::to_ubjson(j, true) == expected_size); } SECTION("array of L") { - json const j = {5000000000u, 5000000001u}; - std::vector expected = {'[', '$', 'L', '#', 'i', 2, 0x00, 0x00, 0x00, 0x01, 0x2A, - 0x05, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x01}; - std::vector expected_size = {'[', '#', 'i', 2, 'L', 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, - 0xF2, 0x00, 'L', 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x01}; + json const j = { 5000000000u, 5000000001u }; + std::vector expected = { '[', '$', 'L', '#', 'i', 2, 0x00, 0x00, 0x00, 0x01, 0x2A, + 0x05, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x01 }; + std::vector expected_size = { '[', '#', 'i', 2, 'L', 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, + 0xF2, 0x00, 'L', 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x01 }; CHECK(json::to_ubjson(j, true, true) == expected); CHECK(json::to_ubjson(j, true) == expected_size); } @@ -2105,8 +2105,8 @@ TEST_CASE("UBJSON") SECTION("discarded") { - json const j = {json::value_t::discarded, json::value_t::discarded}; - std::vector expected = {'[', '$', 'N', '#', 'i', 2}; + json const j = { json::value_t::discarded, json::value_t::discarded }; + std::vector expected = { '[', '$', 'N', '#', 'i', 2 }; CHECK(json::to_ubjson(j, true, true) == expected); } } @@ -2116,18 +2116,18 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") { SECTION("Null Value") { - json const j = {{"passcode", nullptr}}; - std::vector const v = {'{', 'i', 8, 'p', 'a', 's', 's', 'c', 'o', 'd', 'e', 'Z', '}'}; + json const j = { { "passcode", nullptr } }; + std::vector const v = { '{', 'i', 8, 'p', 'a', 's', 's', 'c', 'o', 'd', 'e', 'Z', '}' }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } SECTION("No-Op Value") { - json const j = {"foo", "bar", "baz"}; - std::vector const v = {'[', 'S', 'i', 3, 'f', 'o', 'o', 'S', 'i', 3, 'b', 'a', 'r', 'S', 'i', 3, 'b', 'a', 'z', ']'}; - std::vector const v2 = {'[', 'S', 'i', 3, 'f', 'o', 'o', 'N', 'S', 'i', 3, 'b', 'a', - 'r', 'N', 'N', 'N', 'S', 'i', 3, 'b', 'a', 'z', 'N', 'N', ']'}; + json const j = { "foo", "bar", "baz" }; + std::vector const v = { '[', 'S', 'i', 3, 'f', 'o', 'o', 'S', 'i', 3, 'b', 'a', 'r', 'S', 'i', 3, 'b', 'a', 'z', ']' }; + std::vector const v2 = { '[', 'S', 'i', 3, 'f', 'o', 'o', 'N', 'S', 'i', 3, 'b', 'a', + 'r', 'N', 'N', 'N', 'S', 'i', 3, 'b', 'a', 'z', 'N', 'N', ']' }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); CHECK(json::from_ubjson(v2) == j); @@ -2135,28 +2135,30 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Boolean Types") { - json const j = {{"authorized", true}, {"verified", false}}; - std::vector const v = {'{', 'i', 10, 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'd', - 'T', 'i', 8, 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', 'F', '}'}; + json const j = { { "authorized", true }, { "verified", false } }; + std::vector const v = { '{', 'i', 10, 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'd', + 'T', 'i', 8, 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', 'F', '}' }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } SECTION("Numeric Types") { - json const j = {{"int8", 16}, {"uint8", 255}, {"int16", 32767}, {"int32", 2147483647}, {"int64", 9223372036854775807}, {"float64", 113243.7863123}}; - std::vector const v = {'{', 'i', 7, 'f', 'l', 'o', 'a', 't', '6', '4', 'D', 0x40, 0xfb, 0xa5, 0xbc, 0x94, 0xbc, 0x34, 0xcf, - 'i', 5, 'i', 'n', 't', '1', '6', 'I', 0x7f, 0xff, 'i', 5, 'i', 'n', 't', '3', '2', 'l', 0x7f, - 0xff, 0xff, 0xff, 'i', 5, 'i', 'n', 't', '6', '4', 'L', 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 'i', 4, 'i', 'n', 't', '8', 'i', 16, 'i', 5, 'u', 'i', 'n', 't', '8', 'U', 0xff, '}'}; + json const j = { + { "int8", 16 }, { "uint8", 255 }, { "int16", 32767 }, { "int32", 2147483647 }, { "int64", 9223372036854775807 }, { "float64", 113243.7863123 } + }; + std::vector const v = { '{', 'i', 7, 'f', 'l', 'o', 'a', 't', '6', '4', 'D', 0x40, 0xfb, 0xa5, 0xbc, 0x94, 0xbc, 0x34, 0xcf, + 'i', 5, 'i', 'n', 't', '1', '6', 'I', 0x7f, 0xff, 'i', 5, 'i', 'n', 't', '3', '2', 'l', 0x7f, + 0xff, 0xff, 0xff, 'i', 5, 'i', 'n', 't', '6', '4', 'L', 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 'i', 4, 'i', 'n', 't', '8', 'i', 16, 'i', 5, 'u', 'i', 'n', 't', '8', 'U', 0xff, '}' }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } SECTION("Char Type") { - json const j = {{"rolecode", "a"}, {"delim", ";"}}; - std::vector const v = {'{', 'i', 5, 'd', 'e', 'l', 'i', 'm', 'C', ';', 'i', 8, 'r', 'o', 'l', 'e', 'c', 'o', 'd', 'e', 'C', 'a', '}'}; + json const j = { { "rolecode", "a" }, { "delim", ";" } }; + std::vector const v = { '{', 'i', 5, 'd', 'e', 'l', 'i', 'm', 'C', ';', 'i', 8, 'r', 'o', 'l', 'e', 'c', 'o', 'd', 'e', 'C', 'a', '}' }; //CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } @@ -2166,7 +2168,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("English") { json const j = "hello"; - std::vector const v = {'S', 'i', 5, 'h', 'e', 'l', 'l', 'o'}; + std::vector const v = { 'S', 'i', 5, 'h', 'e', 'l', 'l', 'o' }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } @@ -2174,7 +2176,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Russian") { json const j = "привет"; - std::vector const v = {'S', 'i', 12, 0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5, 0xD1, 0x82}; + std::vector const v = { 'S', 'i', 12, 0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5, 0xD1, 0x82 }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } @@ -2182,7 +2184,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Russian") { json const j = "مرحبا"; - std::vector const v = {'S', 'i', 10, 0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xA7}; + std::vector const v = { 'S', 'i', 10, 0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xA7 }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } @@ -2193,9 +2195,9 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("size=false type=false") { // note the float has been replaced by a double - json const j = {nullptr, true, false, 4782345193, 153.132, "ham"}; - std::vector const v = {'[', 'Z', 'T', 'F', 'L', 0x00, 0x00, 0x00, 0x01, 0x1D, 0x0C, 0xCB, 0xE9, 'D', 0x40, - 0x63, 0x24, 0x39, 0x58, 0x10, 0x62, 0x4e, 'S', 'i', 3, 'h', 'a', 'm', ']'}; + json const j = { nullptr, true, false, 4782345193, 153.132, "ham" }; + std::vector const v = { '[', 'Z', 'T', 'F', 'L', 0x00, 0x00, 0x00, 0x01, 0x1D, 0x0C, 0xCB, 0xE9, 'D', 0x40, + 0x63, 0x24, 0x39, 0x58, 0x10, 0x62, 0x4e, 'S', 'i', 3, 'h', 'a', 'm', ']' }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } @@ -2203,9 +2205,9 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("size=true type=false") { // note the float has been replaced by a double - json const j = {nullptr, true, false, 4782345193, 153.132, "ham"}; - std::vector const v = {'[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0x00, 0x00, 0x00, 0x01, 0x1D, 0x0C, 0xCB, 0xE9, - 'D', 0x40, 0x63, 0x24, 0x39, 0x58, 0x10, 0x62, 0x4e, 'S', 'i', 3, 'h', 'a', 'm'}; + json const j = { nullptr, true, false, 4782345193, 153.132, "ham" }; + std::vector const v = { '[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0x00, 0x00, 0x00, 0x01, 0x1D, 0x0C, 0xCB, 0xE9, + 'D', 0x40, 0x63, 0x24, 0x39, 0x58, 0x10, 0x62, 0x4e, 'S', 'i', 3, 'h', 'a', 'm' }; CHECK(json::to_ubjson(j, true) == v); CHECK(json::from_ubjson(v) == j); } @@ -2213,9 +2215,9 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("size=true type=true") { // note the float has been replaced by a double - json const j = {nullptr, true, false, 4782345193, 153.132, "ham"}; - std::vector const v = {'[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0x00, 0x00, 0x00, 0x01, 0x1D, 0x0C, 0xCB, 0xE9, - 'D', 0x40, 0x63, 0x24, 0x39, 0x58, 0x10, 0x62, 0x4e, 'S', 'i', 3, 'h', 'a', 'm'}; + json const j = { nullptr, true, false, 4782345193, 153.132, "ham" }; + std::vector const v = { '[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0x00, 0x00, 0x00, 0x01, 0x1D, 0x0C, 0xCB, 0xE9, + 'D', 0x40, 0x63, 0x24, 0x39, 0x58, 0x10, 0x62, 0x4e, 'S', 'i', 3, 'h', 'a', 'm' }; CHECK(json::to_ubjson(j, true, true) == v); CHECK(json::from_ubjson(v) == j); } @@ -2225,33 +2227,33 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") { SECTION("size=false type=false") { - json const j = {{"post", {{"id", 1137}, {"author", "rkalla"}, {"timestamp", 1364482090592}, {"body", "I totally agree!"}}}}; - std::vector const v = {'{', 'i', 4, 'p', 'o', 's', 't', '{', 'i', 6, 'a', 'u', 't', 'h', 'o', 'r', 'S', 'i', 6, 'r', - 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', 't', 'o', 't', 'a', - 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', 'i', 2, 'i', 'd', 'I', 0x04, 0x71, 'i', 9, 't', - 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x00, 0x00, 0x01, 0x3D, 0xB1, 0x78, 0x66, 0x60, '}', '}'}; + json const j = { { "post", { { "id", 1137 }, { "author", "rkalla" }, { "timestamp", 1364482090592 }, { "body", "I totally agree!" } } } }; + std::vector const v = { '{', 'i', 4, 'p', 'o', 's', 't', '{', 'i', 6, 'a', 'u', 't', 'h', 'o', 'r', 'S', 'i', 6, 'r', + 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', 't', 'o', 't', 'a', + 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', 'i', 2, 'i', 'd', 'I', 0x04, 0x71, 'i', 9, 't', + 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x00, 0x00, 0x01, 0x3D, 0xB1, 0x78, 0x66, 0x60, '}', '}' }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } SECTION("size=true type=false") { - json const j = {{"post", {{"id", 1137}, {"author", "rkalla"}, {"timestamp", 1364482090592}, {"body", "I totally agree!"}}}}; - std::vector const v = {'{', '#', 'i', 1, 'i', 4, 'p', 'o', 's', 't', '{', '#', 'i', 4, 'i', 6, 'a', 'u', 't', 'h', 'o', - 'r', 'S', 'i', 6, 'r', 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', - 't', 'o', 't', 'a', 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', 'i', 2, 'i', 'd', 'I', 0x04, 0x71, - 'i', 9, 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x00, 0x00, 0x01, 0x3D, 0xB1, 0x78, 0x66, 0x60}; + json const j = { { "post", { { "id", 1137 }, { "author", "rkalla" }, { "timestamp", 1364482090592 }, { "body", "I totally agree!" } } } }; + std::vector const v = { '{', '#', 'i', 1, 'i', 4, 'p', 'o', 's', 't', '{', '#', 'i', 4, 'i', 6, 'a', 'u', 't', 'h', 'o', + 'r', 'S', 'i', 6, 'r', 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', + 't', 'o', 't', 'a', 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', 'i', 2, 'i', 'd', 'I', 0x04, 0x71, + 'i', 9, 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x00, 0x00, 0x01, 0x3D, 0xB1, 0x78, 0x66, 0x60 }; CHECK(json::to_ubjson(j, true) == v); CHECK(json::from_ubjson(v) == j); } SECTION("size=true type=true") { - json const j = {{"post", {{"id", 1137}, {"author", "rkalla"}, {"timestamp", 1364482090592}, {"body", "I totally agree!"}}}}; - std::vector const v = {'{', '$', '{', '#', 'i', 1, 'i', 4, 'p', 'o', 's', 't', '#', 'i', 4, 'i', 6, 'a', 'u', 't', 'h', - 'o', 'r', 'S', 'i', 6, 'r', 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', - ' ', 't', 'o', 't', 'a', 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', 'i', 2, 'i', 'd', 'I', 0x04, - 0x71, 'i', 9, 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x00, 0x00, 0x01, 0x3D, 0xB1, 0x78, 0x66, 0x60}; + json const j = { { "post", { { "id", 1137 }, { "author", "rkalla" }, { "timestamp", 1364482090592 }, { "body", "I totally agree!" } } } }; + std::vector const v = { '{', '$', '{', '#', 'i', 1, 'i', 4, 'p', 'o', 's', 't', '#', 'i', 4, 'i', 6, 'a', 'u', 't', 'h', + 'o', 'r', 'S', 'i', 6, 'r', 'k', 'a', 'l', 'l', 'a', 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', + ' ', 't', 'o', 't', 'a', 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', 'i', 2, 'i', 'd', 'I', 0x04, + 0x71, 'i', 9, 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x00, 0x00, 0x01, 0x3D, 0xB1, 0x78, 0x66, 0x60 }; CHECK(json::to_ubjson(j, true, true) == v); CHECK(json::from_ubjson(v) == j); } @@ -2264,10 +2266,10 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("No Optimization") { // note the floats have been replaced by doubles - json const j = {29.97, 31.13, 67.0, 2.113, 23.888}; - std::vector const v = {'[', 'D', 0x40, 0x3d, 0xf8, 0x51, 0xeb, 0x85, 0x1e, 0xb8, 'D', 0x40, 0x3f, 0x21, 0x47, 0xae, - 0x14, 0x7a, 0xe1, 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 'D', 0x40, 0x00, 0xe7, - 0x6c, 0x8b, 0x43, 0x95, 0x81, 'D', 0x40, 0x37, 0xe3, 0x53, 0xf7, 0xce, 0xd9, 0x17, ']'}; + json const j = { 29.97, 31.13, 67.0, 2.113, 23.888 }; + std::vector const v = { '[', 'D', 0x40, 0x3d, 0xf8, 0x51, 0xeb, 0x85, 0x1e, 0xb8, 'D', 0x40, 0x3f, 0x21, 0x47, 0xae, + 0x14, 0x7a, 0xe1, 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 'D', 0x40, 0x00, 0xe7, + 0x6c, 0x8b, 0x43, 0x95, 0x81, 'D', 0x40, 0x37, 0xe3, 0x53, 0xf7, 0xce, 0xd9, 0x17, ']' }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } @@ -2275,10 +2277,10 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Optimized with count") { // note the floats have been replaced by doubles - json const j = {29.97, 31.13, 67.0, 2.113, 23.888}; - std::vector const v = {'[', '#', 'i', 5, 'D', 0x40, 0x3d, 0xf8, 0x51, 0xeb, 0x85, 0x1e, 0xb8, 'D', 0x40, 0x3f, 0x21, - 0x47, 0xae, 0x14, 0x7a, 0xe1, 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 'D', 0x40, 0x00, - 0xe7, 0x6c, 0x8b, 0x43, 0x95, 0x81, 'D', 0x40, 0x37, 0xe3, 0x53, 0xf7, 0xce, 0xd9, 0x17}; + json const j = { 29.97, 31.13, 67.0, 2.113, 23.888 }; + std::vector const v = { '[', '#', 'i', 5, 'D', 0x40, 0x3d, 0xf8, 0x51, 0xeb, 0x85, 0x1e, 0xb8, 'D', 0x40, 0x3f, 0x21, + 0x47, 0xae, 0x14, 0x7a, 0xe1, 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 'D', 0x40, 0x00, + 0xe7, 0x6c, 0x8b, 0x43, 0x95, 0x81, 'D', 0x40, 0x37, 0xe3, 0x53, 0xf7, 0xce, 0xd9, 0x17 }; CHECK(json::to_ubjson(j, true) == v); CHECK(json::from_ubjson(v) == j); } @@ -2286,10 +2288,10 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Optimized with type & count") { // note the floats have been replaced by doubles - json const j = {29.97, 31.13, 67.0, 2.113, 23.888}; - std::vector const v = {'[', '$', 'D', '#', 'i', 5, 0x40, 0x3d, 0xf8, 0x51, 0xeb, 0x85, 0x1e, 0xb8, 0x40, 0x3f, - 0x21, 0x47, 0xae, 0x14, 0x7a, 0xe1, 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, - 0xe7, 0x6c, 0x8b, 0x43, 0x95, 0x81, 0x40, 0x37, 0xe3, 0x53, 0xf7, 0xce, 0xd9, 0x17}; + json const j = { 29.97, 31.13, 67.0, 2.113, 23.888 }; + std::vector const v = { '[', '$', 'D', '#', 'i', 5, 0x40, 0x3d, 0xf8, 0x51, 0xeb, 0x85, 0x1e, 0xb8, 0x40, 0x3f, + 0x21, 0x47, 0xae, 0x14, 0x7a, 0xe1, 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, + 0xe7, 0x6c, 0x8b, 0x43, 0x95, 0x81, 0x40, 0x37, 0xe3, 0x53, 0xf7, 0xce, 0xd9, 0x17 }; CHECK(json::to_ubjson(j, true, true) == v); CHECK(json::from_ubjson(v) == j); } @@ -2300,10 +2302,10 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("No Optimization") { // note the floats have been replaced by doubles - json const j = {{"lat", 29.976}, {"long", 31.131}, {"alt", 67.0}}; - std::vector const v = {'{', 'i', 3, 'a', 'l', 't', 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 'i', 3, 'l', 'a', 't', 'D', 0x40, 0x3d, 0xf9, 0xdb, 0x22, 0xd0, 0xe5, 0x60, 'i', - 4, 'l', 'o', 'n', 'g', 'D', 0x40, 0x3f, 0x21, 0x89, 0x37, 0x4b, 0xc6, 0xa8, '}'}; + json const j = { { "lat", 29.976 }, { "long", 31.131 }, { "alt", 67.0 } }; + std::vector const v = { '{', 'i', 3, 'a', 'l', 't', 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 'i', 3, 'l', 'a', 't', 'D', 0x40, 0x3d, 0xf9, 0xdb, 0x22, 0xd0, 0xe5, 0x60, 'i', + 4, 'l', 'o', 'n', 'g', 'D', 0x40, 0x3f, 0x21, 0x89, 0x37, 0x4b, 0xc6, 0xa8, '}' }; CHECK(json::to_ubjson(j) == v); CHECK(json::from_ubjson(v) == j); } @@ -2311,10 +2313,10 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Optimized with count") { // note the floats have been replaced by doubles - json const j = {{"lat", 29.976}, {"long", 31.131}, {"alt", 67.0}}; - std::vector const v = {'{', '#', 'i', 3, 'i', 3, 'a', 'l', 't', 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 'i', 3, 'l', 'a', 't', 'D', 0x40, 0x3d, 0xf9, 0xdb, 0x22, 0xd0, 0xe5, 0x60, - 'i', 4, 'l', 'o', 'n', 'g', 'D', 0x40, 0x3f, 0x21, 0x89, 0x37, 0x4b, 0xc6, 0xa8}; + json const j = { { "lat", 29.976 }, { "long", 31.131 }, { "alt", 67.0 } }; + std::vector const v = { '{', '#', 'i', 3, 'i', 3, 'a', 'l', 't', 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 'i', 3, 'l', 'a', 't', 'D', 0x40, 0x3d, 0xf9, 0xdb, 0x22, 0xd0, 0xe5, 0x60, + 'i', 4, 'l', 'o', 'n', 'g', 'D', 0x40, 0x3f, 0x21, 0x89, 0x37, 0x4b, 0xc6, 0xa8 }; CHECK(json::to_ubjson(j, true) == v); CHECK(json::from_ubjson(v) == j); } @@ -2322,10 +2324,10 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") SECTION("Optimized with type & count") { // note the floats have been replaced by doubles - json const j = {{"lat", 29.976}, {"long", 31.131}, {"alt", 67.0}}; - std::vector const v = {'{', '$', 'D', '#', 'i', 3, 'i', 3, 'a', 'l', 't', 0x40, 0x50, 0xc0, 0x00, 0x00, - 0x00, 0x00, 0x00, 'i', 3, 'l', 'a', 't', 0x40, 0x3d, 0xf9, 0xdb, 0x22, 0xd0, 0xe5, 0x60, - 'i', 4, 'l', 'o', 'n', 'g', 0x40, 0x3f, 0x21, 0x89, 0x37, 0x4b, 0xc6, 0xa8}; + json const j = { { "lat", 29.976 }, { "long", 31.131 }, { "alt", 67.0 } }; + std::vector const v = { '{', '$', 'D', '#', 'i', 3, 'i', 3, 'a', 'l', 't', 0x40, 0x50, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 'i', 3, 'l', 'a', 't', 0x40, 0x3d, 0xf9, 0xdb, 0x22, 0xd0, 0xe5, 0x60, + 'i', 4, 'l', 'o', 'n', 'g', 0x40, 0x3f, 0x21, 0x89, 0x37, 0x4b, 0xc6, 0xa8 }; CHECK(json::to_ubjson(j, true, true) == v); CHECK(json::from_ubjson(v) == j); } @@ -2335,15 +2337,15 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") { SECTION("Array") { - std::vector const v = {'[', '$', 'N', '#', 'I', 0x02, 0x00}; + std::vector const v = { '[', '$', 'N', '#', 'I', 0x02, 0x00 }; CHECK(json::from_ubjson(v) == json::array()); } SECTION("Object") { - std::vector const v = {'{', '$', 'Z', '#', 'i', 3, 'i', 4, 'n', 'a', 'm', 'e', 'i', 8, 'p', - 'a', 's', 's', 'w', 'o', 'r', 'd', 'i', 5, 'e', 'm', 'a', 'i', 'l'}; - CHECK(json::from_ubjson(v) == json({{"name", nullptr}, {"password", nullptr}, {"email", nullptr}})); + std::vector const v = { '{', '$', 'Z', '#', 'i', 3, 'i', 4, 'n', 'a', 'm', 'e', 'i', 8, 'p', + 'a', 's', 's', 'w', 'o', 'r', 'd', 'i', 5, 'e', 'm', 'a', 'i', 'l' }; + CHECK(json::from_ubjson(v) == json({ { "name", nullptr }, { "password", nullptr }, { "email", nullptr } })); } } } @@ -2353,7 +2355,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 1") TEST_CASE("all UBJSON first bytes") { // these bytes will fail immediately with exception parse_error.112 - std::set supported = {'T', 'F', 'Z', 'U', 'i', 'I', 'l', 'L', 'd', 'D', 'C', 'S', '[', '{', 'N', 'H'}; + std::set supported = { 'T', 'F', 'Z', 'U', 'i', 'I', 'l', 'L', 'd', 'D', 'C', 'S', '[', '{', 'N', 'H' }; for (auto i = 0; i < 256; ++i) { @@ -2386,48 +2388,48 @@ TEST_CASE("UBJSON roundtrips" * doctest::skip()) { SECTION("input from self-generated UBJSON files") { - for (std::string filename : {TEST_DATA_DIRECTORY "/json_nlohmann_tests/all_unicode.json", - TEST_DATA_DIRECTORY "/json.org/1.json", - TEST_DATA_DIRECTORY "/json.org/2.json", - TEST_DATA_DIRECTORY "/json.org/3.json", - TEST_DATA_DIRECTORY "/json.org/4.json", - TEST_DATA_DIRECTORY "/json.org/5.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip01.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip02.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip03.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip04.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip05.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip06.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip07.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip08.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip09.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip10.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip11.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip12.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip13.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip14.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip15.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip16.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip17.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip18.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip19.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip20.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip21.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip22.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip23.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip24.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip25.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip26.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip27.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip28.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip29.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip30.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip31.json", - TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip32.json", - TEST_DATA_DIRECTORY "/json_testsuite/sample.json", - TEST_DATA_DIRECTORY "/json_tests/pass1.json", - TEST_DATA_DIRECTORY "/json_tests/pass2.json", - TEST_DATA_DIRECTORY "/json_tests/pass3.json"}) + for (std::string filename : { TEST_DATA_DIRECTORY "/json_nlohmann_tests/all_unicode.json", + TEST_DATA_DIRECTORY "/json.org/1.json", + TEST_DATA_DIRECTORY "/json.org/2.json", + TEST_DATA_DIRECTORY "/json.org/3.json", + TEST_DATA_DIRECTORY "/json.org/4.json", + TEST_DATA_DIRECTORY "/json.org/5.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip01.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip02.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip03.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip04.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip05.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip06.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip07.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip08.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip09.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip10.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip11.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip12.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip13.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip14.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip15.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip16.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip17.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip18.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip19.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip20.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip21.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip22.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip23.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip24.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip25.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip26.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip27.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip28.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip29.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip30.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip31.json", + TEST_DATA_DIRECTORY "/json_roundtrip/roundtrip32.json", + TEST_DATA_DIRECTORY "/json_testsuite/sample.json", + TEST_DATA_DIRECTORY "/json_tests/pass1.json", + TEST_DATA_DIRECTORY "/json_tests/pass2.json", + TEST_DATA_DIRECTORY "/json_tests/pass3.json" }) { CAPTURE(filename) @@ -2470,7 +2472,7 @@ TEST_CASE("UBJSON roundtrips" * doctest::skip()) // parse UBJSON file auto const packed = utils::read_binary_file(filename + ".ubjson"); json j2; - CHECK_NOTHROW(j2 = json::from_ubjson({packed.data(), packed.size()})); + CHECK_NOTHROW(j2 = json::from_ubjson({ packed.data(), packed.size() })); // compare parsed JSON values CHECK(j1 == j2); diff --git a/tests/src/unit-udt.cpp b/tests/src/unit-udt.cpp index b3995ffd1..0f677d803 100644 --- a/tests/src/unit-udt.cpp +++ b/tests/src/unit-udt.cpp @@ -130,7 +130,7 @@ static void to_json(BasicJsonType& j, country c) template static void to_json(BasicJsonType& j, const person& p) { - j = BasicJsonType{{"age", p.m_age}, {"name", p.m_name}, {"country", p.m_country}}; + j = BasicJsonType{ { "age", p.m_age }, { "name", p.m_name }, { "country", p.m_country } }; } static void to_json(nlohmann::json& j, const address& a) @@ -140,12 +140,12 @@ static void to_json(nlohmann::json& j, const address& a) static void to_json(nlohmann::json& j, const contact& c) { - j = json{{"person", c.m_person}, {"address", c.m_address}}; + j = json{ { "person", c.m_person }, { "address", c.m_address } }; } static void to_json(nlohmann::json& j, const contact_book& cb) { - j = json{{"name", cb.m_book_name}, {"contacts", cb.m_contacts}}; + j = json{ { "name", cb.m_book_name }, { "contacts", cb.m_contacts } }; } // operators @@ -199,7 +199,9 @@ template static void from_json(const BasicJsonType& j, country& c) { const auto str = j.template get(); - const std::map m = {{"中华人民共和国", country::china}, {"France", country::france}, {"Российская Федерация", country::russia}}; + const std::map m = { { "中华人民共和国", country::china }, + { "France", country::france }, + { "Российская Федерация", country::russia } }; const auto it = m.find(str); // TODO(nlohmann) test exceptions @@ -235,14 +237,14 @@ static void from_json(const nlohmann::json& j, contact_book& cb) TEST_CASE("basic usage" * doctest::test_suite("udt")) { // a bit narcissistic maybe :) ? - const udt::age a{23}; - const udt::name n{"theo"}; - const udt::country c{udt::country::france}; - const udt::person sfinae_addict{a, n, c}; - const udt::person senior_programmer{{42}, {"王芳"}, udt::country::china}; - const udt::address addr{"Paris"}; - const udt::contact cpp_programmer{sfinae_addict, addr}; - const udt::contact_book book{{"C++"}, {cpp_programmer, {senior_programmer, addr}}}; + const udt::age a{ 23 }; + const udt::name n{ "theo" }; + const udt::country c{ udt::country::france }; + const udt::person sfinae_addict{ a, n, c }; + const udt::person senior_programmer{ { 42 }, { "王芳" }, udt::country::china }; + const udt::address addr{ "Paris" }; + const udt::contact cpp_programmer{ sfinae_addict, addr }; + const udt::contact_book book{ { "C++" }, { cpp_programmer, { senior_programmer, addr } } }; SECTION("conversion to json via free-functions") { @@ -282,7 +284,7 @@ TEST_CASE("basic usage" * doctest::test_suite("udt")) CHECK(person == sfinae_addict); CHECK(contact == cpp_programmer); CHECK(contacts == book.m_contacts); - CHECK(book_name == udt::name{"C++"}); + CHECK(book_name == udt::name{ "C++" }); CHECK(book == parsed_book); } @@ -320,7 +322,7 @@ TEST_CASE("basic usage" * doctest::test_suite("udt")) CHECK(person == sfinae_addict); CHECK(contact == cpp_programmer); CHECK(contacts == book.m_contacts); - CHECK(book_name == udt::name{"C++"}); + CHECK(book_name == udt::name{ "C++" }); CHECK(book == parsed_book); } #endif @@ -395,7 +397,7 @@ TEST_CASE("adl_serializer specialization" * doctest::test_suite("udt")) json j = optPerson; CHECK(j.is_null()); - optPerson.reset(new udt::person{{42}, {"John Doe"}, udt::country::russia}); // NOLINT(cppcoreguidelines-owning-memory,modernize-make-shared) + optPerson.reset(new udt::person{ { 42 }, { "John Doe" }, udt::country::russia }); // NOLINT(cppcoreguidelines-owning-memory,modernize-make-shared) j = optPerson; CHECK_FALSE(j.is_null()); @@ -404,7 +406,7 @@ TEST_CASE("adl_serializer specialization" * doctest::test_suite("udt")) SECTION("from_json") { - auto person = udt::person{{42}, {"John Doe"}, udt::country::russia}; + auto person = udt::person{ { 42 }, { "John Doe" }, udt::country::russia }; json j = person; auto optPerson = j.get>(); @@ -421,7 +423,7 @@ TEST_CASE("adl_serializer specialization" * doctest::test_suite("udt")) { SECTION("to_json") { - udt::legacy_type const lt{"4242"}; + udt::legacy_type const lt{ "4242" }; json const j = lt; CHECK(j.get() == 4242); @@ -449,24 +451,24 @@ struct adl_serializer> static void from_json(const json& /*unnamed*/, type& opt) { - opt = {42.0, 42.0, 42.0}; + opt = { 42.0, 42.0, 42.0 }; } // preferred version static type from_json(const json& /*unnamed*/) { - return {4.0, 5.0, 6.0}; + return { 4.0, 5.0, 6.0 }; } }; } // namespace nlohmann TEST_CASE("even supported types can be specialized" * doctest::test_suite("udt")) { - json const j = std::vector{1.0, 2.0, 3.0}; + json const j = std::vector{ 1.0, 2.0, 3.0 }; CHECK(j.dump() == R"("hijacked!")"); auto f = j.get>(); // the single argument from_json method is preferred - CHECK((f == std::vector{4.0, 5.0, 6.0})); + CHECK((f == std::vector{ 4.0, 5.0, 6.0 })); } namespace nlohmann @@ -508,7 +510,7 @@ TEST_CASE("Non-copyable types" * doctest::test_suite("udt")) json j = optPerson; CHECK(j.is_null()); - optPerson.reset(new udt::person{{42}, {"John Doe"}, udt::country::russia}); // NOLINT(cppcoreguidelines-owning-memory,modernize-make-unique) + optPerson.reset(new udt::person{ { 42 }, { "John Doe" }, udt::country::russia }); // NOLINT(cppcoreguidelines-owning-memory,modernize-make-unique) j = optPerson; CHECK_FALSE(j.is_null()); @@ -517,7 +519,7 @@ TEST_CASE("Non-copyable types" * doctest::test_suite("udt")) SECTION("from_json") { - auto person = udt::person{{42}, {"John Doe"}, udt::country::russia}; + auto person = udt::person{ { 42 }, { "John Doe" }, udt::country::russia }; json j = person; auto optPerson = j.get>(); @@ -635,14 +637,14 @@ TEST_CASE("custom serializer for pods" * doctest::test_suite("udt")) { using custom_json = nlohmann::basic_json; - auto p = udt::small_pod{42, '/', 42}; + auto p = udt::small_pod{ 42, '/', 42 }; custom_json const j = p; auto p2 = j.get(); CHECK(p == p2); - auto np = udt::non_pod{{"non-pod"}}; + auto np = udt::non_pod{ { "non-pod" } }; custom_json const j2 = np; auto np2 = j2.get(); CHECK(np == np2); @@ -671,7 +673,7 @@ struct another_adl_serializer TEST_CASE("custom serializer that does adl by default" * doctest::test_suite("udt")) { - auto me = udt::person{{23}, {"theo"}, udt::country::france}; + auto me = udt::person{ { 23 }, { "theo" }, udt::country::france }; json const j = me; custom_json const cj = me; @@ -708,9 +710,9 @@ TEST_CASE("different basic_json types conversions") SECTION("array") { - json const j = {1, 2, 3}; + json const j = { 1, 2, 3 }; custom_json const cj = j; - CHECK((cj == std::vector{1, 2, 3})); + CHECK((cj == std::vector{ 1, 2, 3 })); } SECTION("integer") @@ -743,7 +745,7 @@ TEST_CASE("different basic_json types conversions") SECTION("binary") { - json j = json::binary({1, 2, 3}, 42); + json j = json::binary({ 1, 2, 3 }, 42); custom_json cj = j; CHECK(cj.get_binary().subtype() == 42); std::vector cv = cj.get_binary(); @@ -753,7 +755,7 @@ TEST_CASE("different basic_json types conversions") SECTION("object") { - json const j = {{"forty", "two"}}; + json const j = { { "forty", "two" } }; custom_json cj = j; auto m = j.get>(); CHECK(cj == m); @@ -853,7 +855,7 @@ class no_iterator_type TEST_CASE("compatible array type, without iterator type alias") { - no_iterator_type const vec{1, 2, 3}; + no_iterator_type const vec{ 1, 2, 3 }; json const j = vec; } diff --git a/tests/src/unit-udt_macro.cpp b/tests/src/unit-udt_macro.cpp index 7db36cb37..171663472 100644 --- a/tests/src/unit-udt_macro.cpp +++ b/tests/src/unit-udt_macro.cpp @@ -245,8 +245,8 @@ class person_without_default_constructor_1 } person_without_default_constructor_1(std::string name_, int age_) - : name{std::move(name_)} - , age{age_} + : name{ std::move(name_) } + , age{ age_ } {} NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(person_without_default_constructor_1, name, age) @@ -264,8 +264,8 @@ class person_without_default_constructor_2 } person_without_default_constructor_2(std::string name_, int age_) - : name{std::move(name_)} - , age{age_} + : name{ std::move(name_) } + , age{ age_ } {} }; @@ -282,7 +282,7 @@ TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRU SECTION("person") { // serialization - T p1("Erik", 1, {{"haircuts", 2}}); + T p1("Erik", 1, { { "haircuts", 2 } }); CHECK(json(p1).dump() == "{\"age\":1,\"metadata\":{\"haircuts\":2},\"name\":\"Erik\"}"); // deserialization @@ -312,7 +312,7 @@ TEST_CASE_TEMPLATE("Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRU CHECK(json(p0).dump() == "{\"age\":0,\"metadata\":null,\"name\":\"\"}"); // serialization - T p1("Erik", 1, {{"haircuts", 2}}); + T p1("Erik", 1, { { "haircuts", 2 } }); CHECK(json(p1).dump() == "{\"age\":1,\"metadata\":{\"haircuts\":2},\"name\":\"Erik\"}"); // deserialization @@ -419,11 +419,11 @@ TEST_CASE_TEMPLATE( { { // serialization of a single object - T person{"Erik", 1}; + T person{ "Erik", 1 }; CHECK(json(person).dump() == "{\"age\":1,\"name\":\"Erik\"}"); // serialization of a container with objects - std::vector const two_persons{{"Erik", 1}, {"Kyle", 2}}; + std::vector const two_persons{ { "Erik", 1 }, { "Kyle", 2 } }; CHECK(json(two_persons).dump() == "[{\"age\":1,\"name\":\"Erik\"},{\"age\":2,\"name\":\"Kyle\"}]"); } } diff --git a/tests/src/unit-user_defined_input.cpp b/tests/src/unit-user_defined_input.cpp index f3c537404..ac9e71cd4 100644 --- a/tests/src/unit-user_defined_input.cpp +++ b/tests/src/unit-user_defined_input.cpp @@ -44,7 +44,7 @@ const char* end(const MyContainer& c) TEST_CASE("Custom container non-member begin/end") { - const MyContainer data{"[1,2,3,4]"}; + const MyContainer data{ "[1,2,3,4]" }; json as_json = json::parse(data); CHECK(as_json.at(0) == 1); CHECK(as_json.at(1) == 2); @@ -69,7 +69,7 @@ TEST_CASE("Custom container member begin/end") } }; - const MyContainer2 data{"[1,2,3,4]"}; + const MyContainer2 data{ "[1,2,3,4]" }; json as_json = json::parse(data); CHECK(as_json.at(0) == 1); CHECK(as_json.at(1) == 2); @@ -115,8 +115,8 @@ TEST_CASE("Custom iterator") CHECK(std::is_same::value); CHECK(std::is_same::value); - const MyIterator begin{raw_data}; - const MyIterator end{raw_data + strlen(raw_data)}; // NOLINT(cppcoreguidelines-pro-bounds-pointer-arithmetic) + const MyIterator begin{ raw_data }; + const MyIterator end{ raw_data + strlen(raw_data) }; // NOLINT(cppcoreguidelines-pro-bounds-pointer-arithmetic) json as_json = json::parse(begin, end); CHECK(as_json.at(0) == 1);