From de75cf89f732ff82ebacb7d04f32de28e4efa123 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sat, 25 Nov 2017 19:41:02 +0100 Subject: [PATCH] :white_check_mark: improved test coverage --- test/src/unit-constructor1.cpp | 9 ++++++--- test/src/unit-conversions.cpp | 24 ++++++++++++++++++++++++ test/src/unit-regression.cpp | 8 ++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/test/src/unit-constructor1.cpp b/test/src/unit-constructor1.cpp index e45edd44..d8c9482c 100644 --- a/test/src/unit-constructor1.cpp +++ b/test/src/unit-constructor1.cpp @@ -295,9 +295,12 @@ TEST_CASE("constructors") { json j{1}; - CHECK_THROWS((j.get>())); - CHECK_THROWS((j.get>())); - CHECK_THROWS((j.get>())); + CHECK_THROWS_AS((j.get>()), json::out_of_range); + CHECK_THROWS_WITH((j.get>()), "[json.exception.out_of_range.401] array index 1 is out of range"); + CHECK_THROWS_AS((j.get>()), json::out_of_range); + CHECK_THROWS_WITH((j.get>()), "[json.exception.out_of_range.401] array index 1 is out of range"); + CHECK_THROWS_AS((j.get>()), json::out_of_range); + CHECK_THROWS_WITH((j.get>()), "[json.exception.out_of_range.401] array index 1 is out of range"); } SECTION("std::forward_list") diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index 6a42bfb8..fc37a1c8 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -1009,6 +1009,30 @@ TEST_CASE("value conversion") auto m5 = j5.get>(); } + SECTION("std::array") + { + auto m1 = j1.get>(); + auto m2 = j2.get>(); + auto m3 = j3.get>(); + auto m4 = j4.get>(); + auto m5 = j5.get>(); + + SECTION("std::array is larger than JSON") + { + std::array arr6 = {1, 2, 3, 4, 5, 6}; + CHECK_THROWS_AS(arr6 = j1, json::out_of_range); + CHECK_THROWS_WITH(arr6 = j1, "[json.exception.out_of_range.401] array index 4 is out of range"); + } + + SECTION("std::array is smaller than JSON") + { + std::array arr2 = {8, 9}; + arr2 = j1; + CHECK(arr2[0] == 1); + CHECK(arr2[1] == 2); + } + } + SECTION("std::valarray") { auto m1 = j1.get>(); diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 3b9f6b4a..b6f314c7 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -1305,4 +1305,12 @@ TEST_CASE("regression tests") j = {{"nocopy", n}}; CHECK(j["nocopy"]["val"] == 0); } + + SECTION("issue #843 - converting to array not working") + { + json j; + std::array ar = {1, 1, 1, 1}; + j = ar; + ar = j; + } }