diff --git a/src/json.hpp b/src/json.hpp index 0c524c89..c405ba0c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -3207,7 +3207,6 @@ json_parser_62: // check if strtod read beyond the end of the lexem if (endptr != m_cursor) { - std::cerr << get_string_value() << std::endl; return NAN; } else diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 3b697faa..1bfe3a2d 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -2566,7 +2566,6 @@ class basic_json // check if strtod read beyond the end of the lexem if (endptr != m_cursor) { - std::cerr << get_string_value() << std::endl; return NAN; } else diff --git a/test/unit.cpp b/test/unit.cpp index c7f2a8b8..f475bdfe 100644 --- a/test/unit.cpp +++ b/test/unit.cpp @@ -3799,8 +3799,6 @@ TEST_CASE("lexicographical comparison operators") { for (size_t j = 0; j < j_values.size(); ++j) { - CAPTURE(i); - CAPTURE(j); // check precomputed values CHECK( (j_values[i] < j_values[j]) == expected[i][j] ); } @@ -4044,9 +4042,6 @@ TEST_CASE("lexer class") { auto s = std::string(1, c); - CAPTURE(c); - CAPTURE(s); - switch (c) { // characters that are prefixes of reasonable json @@ -4116,5 +4111,36 @@ TEST_CASE("parser class") { CHECK(json::parser("false").parse() == json(false)); } + + SECTION("number") + { + SECTION("integers") + { + SECTION("without exponent") + { + CHECK(json::parser("-128").parse() == json(-128)); + CHECK(json::parser("0").parse() == json(0)); + CHECK(json::parser("128").parse() == json(128)); + } + + SECTION("with exponent") + { + CHECK(json::parser("10000E-4").parse() == json(10000e-4)); + CHECK(json::parser("10000E-3").parse() == json(10000e-3)); + CHECK(json::parser("10000E-2").parse() == json(10000e-2)); + CHECK(json::parser("10000E-1").parse() == json(10000e-1)); + CHECK(json::parser("10000E0").parse() == json(10000e0)); + CHECK(json::parser("10000E1").parse() == json(10000e1)); + CHECK(json::parser("10000E2").parse() == json(10000e2)); + CHECK(json::parser("10000E3").parse() == json(10000e3)); + CHECK(json::parser("10000E4").parse() == json(10000e4)); + } + } + + SECTION("invalid numbers") + { + CHECK_THROWS_AS(json::parser("01").parse(), std::invalid_argument); + } + } } }