diff --git a/test/src/unit-comparison.cpp b/test/src/unit-comparison.cpp index 6b27240b..f68abc9e 100644 --- a/test/src/unit-comparison.cpp +++ b/test/src/unit-comparison.cpp @@ -56,21 +56,23 @@ TEST_CASE("lexicographical comparison operators") json::value_t::number_float, json::value_t::object, json::value_t::array, - json::value_t::string + json::value_t::string, + json::value_t::binary }; SECTION("comparison: less") { std::vector> expected = { - {false, true, true, true, true, true, true, true}, - {false, false, true, true, true, true, true, true}, - {false, false, false, false, false, true, true, true}, - {false, false, false, false, false, true, true, true}, - {false, false, false, false, false, true, true, true}, - {false, false, false, false, false, false, true, true}, - {false, false, false, false, false, false, false, true}, - {false, false, false, false, false, false, false, false} + {false, true, true, true, true, true, true, true, true}, + {false, false, true, true, true, true, true, true, true}, + {false, false, false, false, false, true, true, true, true}, + {false, false, false, false, false, true, true, true, true}, + {false, false, false, false, false, true, true, true, true}, + {false, false, false, false, false, false, true, true, true}, + {false, false, false, false, false, false, false, true, true}, + {false, false, false, false, false, false, false, false, true}, + {false, false, false, false, false, false, false, false, false} }; for (size_t i = 0; i < j_types.size(); ++i) @@ -98,29 +100,32 @@ TEST_CASE("lexicographical comparison operators") "foo", "bar", true, false, {1, 2, 3}, {"one", "two", "three"}, - {{"first", 1}, {"second", 2}}, {{"a", "A"}, {"b", {"B"}}} + {{"first", 1}, {"second", 2}}, {{"a", "A"}, {"b", {"B"}}}, + json::binary_array({1, 2, 3}), json::binary_array({1, 2, 4}) }; SECTION("comparison: equal") { std::vector> expected = { - {true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true} + {true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, + {true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false}, + {false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true} }; for (size_t i = 0; i < j_values.size(); ++i) @@ -176,22 +181,24 @@ TEST_CASE("lexicographical comparison operators") { std::vector> expected = { - {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true}, - {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true}, - {false, false, false, true, true, true, true, true, true, true, false, false, true, true, true, true}, - {false, false, false, false, false, false, false, false, true, true, false, false, true, true, true, true}, - {false, false, false, true, false, true, false, true, true, true, false, false, true, true, true, true}, - {false, false, false, true, false, false, false, true, true, true, false, false, true, true, true, true}, - {false, false, false, true, true, true, false, true, true, true, false, false, true, true, true, true}, - {false, false, false, true, false, false, false, false, true, true, false, false, true, true, true, true}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false}, - {false, false, true, true, true, true, true, true, true, true, false, false, true, true, true, true}, - {false, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true}, - {false, false, false, false, false, false, false, false, true, true, false, false, false, true, false, false}, - {false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, true, true, false, false, true, true, false, false}, - {false, false, false, false, false, false, false, false, true, true, false, false, true, true, true, false} + {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true}, + {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true}, + {false, false, false, true, true, true, true, true, true, true, false, false, true, true, true, true, true, true}, + {false, false, false, false, false, false, false, false, true, true, false, false, true, true, true, true, true, true}, + {false, false, false, true, false, true, false, true, true, true, false, false, true, true, true, true, true, true}, + {false, false, false, true, false, false, false, true, true, true, false, false, true, true, true, true, true, true}, + {false, false, false, true, true, true, false, true, true, true, false, false, true, true, true, true, true, true}, + {false, false, false, true, false, false, false, false, true, true, false, false, true, true, true, true, true, true}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true}, + {false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, true, true}, + {false, false, true, true, true, true, true, true, true, true, false, false, true, true, true, true, true, true}, + {false, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true}, + {false, false, false, false, false, false, false, false, true, true, false, false, false, true, false, false, true, true}, + {false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false, true, true}, + {false, false, false, false, false, false, false, false, true, true, false, false, true, true, false, false, true, true}, + {false, false, false, false, false, false, false, false, true, true, false, false, true, true, true, false, true, true}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false} }; for (size_t i = 0; i < j_values.size(); ++i) diff --git a/test/src/unit-convenience.cpp b/test/src/unit-convenience.cpp index 1c61fae1..b36d9dfe 100644 --- a/test/src/unit-convenience.cpp +++ b/test/src/unit-convenience.cpp @@ -58,6 +58,7 @@ TEST_CASE("convenience functions") CHECK(std::string(json(json::value_t::number_integer).type_name()) == "number"); CHECK(std::string(json(json::value_t::number_unsigned).type_name()) == "number"); CHECK(std::string(json(json::value_t::number_float).type_name()) == "number"); + CHECK(std::string(json(json::value_t::binary).type_name()) == "binary"); CHECK(std::string(json(json::value_t::boolean).type_name()) == "boolean"); CHECK(std::string(json(json::value_t::string).type_name()) == "string"); CHECK(std::string(json(json::value_t::discarded).type_name()) == "discarded"); diff --git a/test/src/unit-inspection.cpp b/test/src/unit-inspection.cpp index 04a59e53..c464b698 100644 --- a/test/src/unit-inspection.cpp +++ b/test/src/unit-inspection.cpp @@ -49,6 +49,7 @@ TEST_CASE("object inspection") CHECK(not j.is_number_integer()); CHECK(not j.is_number_unsigned()); CHECK(not j.is_number_float()); + CHECK(not j.is_binary()); CHECK(j.is_object()); CHECK(not j.is_array()); CHECK(not j.is_string()); @@ -66,6 +67,7 @@ TEST_CASE("object inspection") CHECK(not j.is_number_integer()); CHECK(not j.is_number_unsigned()); CHECK(not j.is_number_float()); + CHECK(not j.is_binary()); CHECK(not j.is_object()); CHECK(j.is_array()); CHECK(not j.is_string()); @@ -83,6 +85,7 @@ TEST_CASE("object inspection") CHECK(not j.is_number_integer()); CHECK(not j.is_number_unsigned()); CHECK(not j.is_number_float()); + CHECK(not j.is_binary()); CHECK(not j.is_object()); CHECK(not j.is_array()); CHECK(not j.is_string()); @@ -100,6 +103,7 @@ TEST_CASE("object inspection") CHECK(not j.is_number_integer()); CHECK(not j.is_number_unsigned()); CHECK(not j.is_number_float()); + CHECK(not j.is_binary()); CHECK(not j.is_object()); CHECK(not j.is_array()); CHECK(not j.is_string()); @@ -117,6 +121,7 @@ TEST_CASE("object inspection") CHECK(not j.is_number_integer()); CHECK(not j.is_number_unsigned()); CHECK(not j.is_number_float()); + CHECK(not j.is_binary()); CHECK(not j.is_object()); CHECK(not j.is_array()); CHECK(j.is_string()); @@ -134,6 +139,7 @@ TEST_CASE("object inspection") CHECK(j.is_number_integer()); CHECK(not j.is_number_unsigned()); CHECK(not j.is_number_float()); + CHECK(not j.is_binary()); CHECK(not j.is_object()); CHECK(not j.is_array()); CHECK(not j.is_string()); @@ -151,6 +157,7 @@ TEST_CASE("object inspection") CHECK(j.is_number_integer()); CHECK(j.is_number_unsigned()); CHECK(not j.is_number_float()); + CHECK(not j.is_binary()); CHECK(not j.is_object()); CHECK(not j.is_array()); CHECK(not j.is_string()); @@ -168,6 +175,25 @@ TEST_CASE("object inspection") CHECK(not j.is_number_integer()); CHECK(not j.is_number_unsigned()); CHECK(j.is_number_float()); + CHECK(not j.is_binary()); + CHECK(not j.is_object()); + CHECK(not j.is_array()); + CHECK(not j.is_string()); + CHECK(not j.is_discarded()); + CHECK(j.is_primitive()); + CHECK(not j.is_structured()); + } + + SECTION("binary") + { + json j(json::value_t::binary); + CHECK(not j.is_null()); + CHECK(not j.is_boolean()); + CHECK(not j.is_number()); + CHECK(not j.is_number_integer()); + CHECK(not j.is_number_unsigned()); + CHECK(not j.is_number_float()); + CHECK(j.is_binary()); CHECK(not j.is_object()); CHECK(not j.is_array()); CHECK(not j.is_string()); @@ -185,6 +211,7 @@ TEST_CASE("object inspection") CHECK(not j.is_number_integer()); CHECK(not j.is_number_unsigned()); CHECK(not j.is_number_float()); + CHECK(not j.is_binary()); CHECK(not j.is_object()); CHECK(not j.is_array()); CHECK(not j.is_string()); @@ -439,5 +466,12 @@ TEST_CASE("object inspection") json::value_t t = j; CHECK(t == j.type()); } + + SECTION("binary") + { + json j = json::binary_array({}); + json::value_t t = j; + CHECK(t == j.type()); + } } } diff --git a/test/src/unit-modifiers.cpp b/test/src/unit-modifiers.cpp index c4073801..2349dc14 100644 --- a/test/src/unit-modifiers.cpp +++ b/test/src/unit-modifiers.cpp @@ -106,6 +106,31 @@ TEST_CASE("modifiers") } } + SECTION("binary") + { + SECTION("empty binary") + { + json j = json::binary_array({}); + json k = j; + + j.clear(); + CHECK(not j.empty()); + CHECK(j == json(json::value_t::binary)); + CHECK(j == json(k.type())); + } + + SECTION("filled binary") + { + json j = json::binary_array({1, 2, 3, 4, 5}); + json k = j; + + j.clear(); + CHECK(not j.empty()); + CHECK(j == json(json::value_t::binary)); + CHECK(j == json(k.type())); + } + } + SECTION("number (integer)") { json j = 23; @@ -937,5 +962,31 @@ TEST_CASE("modifiers") CHECK_THROWS_WITH(j.swap(s), "[json.exception.type_error.310] cannot use swap() with number"); } } + + SECTION("binary_t") + { + SECTION("binary_t type") + { + json j = json::binary_array({1, 2, 3, 4}); + json::binary_t s = {1, 2, 3, 4}; + + j.swap(s); + + CHECK(j == json::binary_array({1, 2, 3, 4})); + + j.swap(s); + + CHECK(j == json::binary_array({1, 2, 3, 4})); + } + + SECTION("non-string_t type") + { + json j = 17; + json::binary_t s = {1, 2, 3, 4}; + + CHECK_THROWS_AS(j.swap(s), json::type_error&); + CHECK_THROWS_WITH(j.swap(s), "[json.exception.type_error.310] cannot use swap() with number"); + } + } } }