Commit 032bcf64 authored by Niels's avatar Niels

more test cases (unexpected ends)

parent 1d177f82
...@@ -4147,6 +4147,7 @@ TEST_CASE("parser class") ...@@ -4147,6 +4147,7 @@ TEST_CASE("parser class")
SECTION("without exponent") SECTION("without exponent")
{ {
CHECK(json::parser("-128").parse() == json(-128)); CHECK(json::parser("-128").parse() == json(-128));
CHECK(json::parser("-0").parse() == json(-0));
CHECK(json::parser("0").parse() == json(0)); CHECK(json::parser("0").parse() == json(0));
CHECK(json::parser("128").parse() == json(128)); CHECK(json::parser("128").parse() == json(128));
} }
...@@ -4197,7 +4198,34 @@ TEST_CASE("parser class") ...@@ -4197,7 +4198,34 @@ TEST_CASE("parser class")
SECTION("parse errors") SECTION("parse errors")
{ {
// unexpected end of number
CHECK_THROWS_AS(json::parser("0.A").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("-,").parse(), std::invalid_argument); CHECK_THROWS_AS(json::parser("-,").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("-A").parse(), std::invalid_argument); CHECK_THROWS_AS(json::parser("-A").parse(), std::invalid_argument);
// unexpected end of null
CHECK_THROWS_AS(json::parser("n").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("nA").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("nuA").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("nulA").parse(), std::invalid_argument);
// unexpected end of true
CHECK_THROWS_AS(json::parser("t").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("tA").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("trA").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("truA").parse(), std::invalid_argument);
// unexpected end of false
CHECK_THROWS_AS(json::parser("f").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("faA").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("falA").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("falsA").parse(), std::invalid_argument);
// unexpected end of array
CHECK_THROWS_AS(json::parser("[1,]").parse(), std::invalid_argument);
// unexpected end of object
CHECK_THROWS_AS(json::parser("{\"foo\":}").parse(), std::invalid_argument);
CHECK_THROWS_AS(json::parser("{\"foo\":1,}").parse(), std::invalid_argument);
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment