mirror of
https://github.com/nlohmann/json.git
synced 2024-08-23 21:42:29 +02:00
✅ improved test coverage
This commit is contained in:
parent
e2e0ecd867
commit
b90529c36d
|
@ -205,6 +205,18 @@ TEST_CASE("parser class")
|
||||||
CHECK_THROWS_WITH(parser_helper("\"\x1d\""), "[json.exception.parse_error.101] parse error at 2: syntax error - invalid string: control character must be escaped; last read: '\"<U+001D>'");
|
CHECK_THROWS_WITH(parser_helper("\"\x1d\""), "[json.exception.parse_error.101] parse error at 2: syntax error - invalid string: control character must be escaped; last read: '\"<U+001D>'");
|
||||||
CHECK_THROWS_WITH(parser_helper("\"\x1e\""), "[json.exception.parse_error.101] parse error at 2: syntax error - invalid string: control character must be escaped; last read: '\"<U+001E>'");
|
CHECK_THROWS_WITH(parser_helper("\"\x1e\""), "[json.exception.parse_error.101] parse error at 2: syntax error - invalid string: control character must be escaped; last read: '\"<U+001E>'");
|
||||||
CHECK_THROWS_WITH(parser_helper("\"\x1f\""), "[json.exception.parse_error.101] parse error at 2: syntax error - invalid string: control character must be escaped; last read: '\"<U+001F>'");
|
CHECK_THROWS_WITH(parser_helper("\"\x1f\""), "[json.exception.parse_error.101] parse error at 2: syntax error - invalid string: control character must be escaped; last read: '\"<U+001F>'");
|
||||||
|
|
||||||
|
SECTION("additional test for null byte")
|
||||||
|
{
|
||||||
|
// The test above for the null byte is wrong, because passing
|
||||||
|
// a string to the parser only reads int until it encounters
|
||||||
|
// a null byte. This test inserts the null byte later on and
|
||||||
|
// uses an iterator range.
|
||||||
|
std::string s = "\"1\"";
|
||||||
|
s[1] = '\0';
|
||||||
|
CHECK_THROWS_AS(json::parse(s.begin(), s.end()), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::parse(s.begin(), s.end()), "[json.exception.parse_error.101] parse error at 2: syntax error - invalid string: control character must be escaped; last read: '\"'");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("escaped")
|
SECTION("escaped")
|
||||||
|
|
|
@ -924,6 +924,40 @@ TEST_CASE("Unicode", "[hide]")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("incorrect sequences")
|
||||||
|
{
|
||||||
|
SECTION("incorrect surrogate values")
|
||||||
|
{
|
||||||
|
CHECK_THROWS_AS(json::parse("\"\\uDC00\\uDC00\""), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::parse("\"\\uDC00\\uDC00\""),
|
||||||
|
"[json.exception.parse_error.101] parse error at 7: syntax error - invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF; last read: '\"\\uDC00'");
|
||||||
|
|
||||||
|
CHECK_THROWS_AS(json::parse("\"\\uD7FF\\uDC00\""), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::parse("\"\\uD7FF\\uDC00\""),
|
||||||
|
"[json.exception.parse_error.101] parse error at 13: syntax error - invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF; last read: '\"\\uD7FF\\uDC00'");
|
||||||
|
|
||||||
|
CHECK_THROWS_AS(json::parse("\"\\uD800]\""), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::parse("\"\\uD800]\""),
|
||||||
|
"[json.exception.parse_error.101] parse error at 8: syntax error - invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF; last read: '\"\\uD800]'");
|
||||||
|
|
||||||
|
CHECK_THROWS_AS(json::parse("\"\\uD800\\v\""), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::parse("\"\\uD800\\v\""),
|
||||||
|
"[json.exception.parse_error.101] parse error at 9: syntax error - invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF; last read: '\"\\uD800\\v'");
|
||||||
|
|
||||||
|
CHECK_THROWS_AS(json::parse("\"\\uD800\\u123\""), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::parse("\"\\uD800\\u123\""),
|
||||||
|
"[json.exception.parse_error.101] parse error at 13: syntax error - invalid string: '\\u' must be followed by 4 hex digits; last read: '\"\\uD800\\u123\"'");
|
||||||
|
|
||||||
|
CHECK_THROWS_AS(json::parse("\"\\uD800\\uDBFF\""), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::parse("\"\\uD800\\uDBFF\""),
|
||||||
|
"[json.exception.parse_error.101] parse error at 13: syntax error - invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF; last read: '\"\\uD800\\uDBFF'");
|
||||||
|
|
||||||
|
CHECK_THROWS_AS(json::parse("\"\\uD800\\uE000\""), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::parse("\"\\uD800\\uE000\""),
|
||||||
|
"[json.exception.parse_error.101] parse error at 13: syntax error - invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF; last read: '\"\\uD800\\uE000'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
SECTION("incorrect sequences")
|
SECTION("incorrect sequences")
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue