diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 71cfe2322..8c81b9123 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -279,10 +279,6 @@ if(json_32bit_test_only) elseif(NOT json_32bit_test) list(FILTER files EXCLUDE REGEX src/unit-32bit.cpp) endif() -if(NOT JSON_MultipleHeaders) - # the internal headers of json_view are not part of a single header yet - list(FILTER files EXCLUDE REGEX src/unit-json_view_builder.cpp) -endif() foreach(file ${files}) json_test_add_test_for(${file} MAIN test_main CXX_STANDARDS ${test_cxx_standards} ${test_force}) diff --git a/tests/src/unit-json_view.cpp b/tests/src/unit-json_view.cpp index ce8c66fe9..ddba72013 100644 --- a/tests/src/unit-json_view.cpp +++ b/tests/src/unit-json_view.cpp @@ -30,6 +30,7 @@ using nlohmann::ordered_json_document; namespace { +#if !defined(JSON_NOEXCEPTION) // the exception parse() throws for a text, or "" if it accepts it std::string parse_exception(const std::string& text, bool comments = false, bool trailing_commas = false) { @@ -58,6 +59,7 @@ std::string view_exception(const std::string& text, bool comments = false, bool } return ""; } +#endif // a small deterministic generator of documents struct generator @@ -147,7 +149,7 @@ TEST_CASE("json_view") CHECK(v.materialize() == j); } - const json_view invalid; + const json_view invalid{}; CHECK(invalid.is_discarded()); CHECK(!static_cast(invalid)); CHECK(invalid.type() == json::value_t::discarded); @@ -192,9 +194,11 @@ TEST_CASE("json_view") }) { CAPTURE(text); +#if !defined(JSON_NOEXCEPTION) const std::string expected = parse_exception(text); REQUIRE(!expected.empty()); CHECK(view_exception(text) == expected); +#endif CHECK(!json_document::accept(text)); const json_document d = json_document::parse(text, false); CHECK(d.is_discarded()); @@ -202,8 +206,9 @@ TEST_CASE("json_view") CHECK(d.node_count() == 0); } // the exception types - CHECK_THROWS_AS(json_document::parse("[1,"), json::parse_error&); - CHECK_THROWS_AS(json_document::parse("1e400"), json::out_of_range&); + json_document _; + CHECK_THROWS_AS(_ = json_document::parse("[1,"), json::parse_error&); + CHECK_THROWS_AS(_ = json_document::parse("1e400"), json::out_of_range&); } SECTION("parse options") @@ -218,7 +223,9 @@ TEST_CASE("json_view") const bool comments = (options & 1) != 0; const bool trailing_commas = (options & 2) != 0; CHECK(json_document::accept(text, comments, trailing_commas) == json::accept(text, comments, trailing_commas)); +#if !defined(JSON_NOEXCEPTION) CHECK(view_exception(text, comments, trailing_commas) == parse_exception(text, comments, trailing_commas)); +#endif } } } @@ -260,7 +267,9 @@ TEST_CASE("json_view") const std::string nul_in_comment("[1, // c\0\n2]", 12); CHECK(json_document::accept(nul_in_comment, true) == json::accept(nul_in_comment, true)); CHECK(json_document::parse("\xEF\xBB\xBF[1]").root().materialize() == json::parse("\xEF\xBB\xBF[1]")); +#if !defined(JSON_NOEXCEPTION) CHECK(view_exception("\xEF\xBB") == parse_exception("\xEF\xBB")); +#endif } SECTION("inputs") diff --git a/tests/src/unit-json_view_builder.cpp b/tests/src/unit-json_view_builder.cpp index 3f892754c..b0c9bfc44 100644 --- a/tests/src/unit-json_view_builder.cpp +++ b/tests/src/unit-json_view_builder.cpp @@ -9,8 +9,12 @@ #include "doctest_compatibility.h" #include -#include -#include +#if JSON_TEST_USING_MULTIPLE_HEADERS + #include + #include +#else + #include // the single header contains the internal headers +#endif using nlohmann::json; #include