diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/base/json/json_parser_unittest.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/base/json/json_parser_unittest.cc')
-rw-r--r-- | chromium/base/json/json_parser_unittest.cc | 161 |
1 files changed, 94 insertions, 67 deletions
diff --git a/chromium/base/json/json_parser_unittest.cc b/chromium/base/json/json_parser_unittest.cc index c4926423433..9e89afe3f7d 100644 --- a/chromium/base/json/json_parser_unittest.cc +++ b/chromium/base/json/json_parser_unittest.cc @@ -210,76 +210,103 @@ TEST_F(JSONParserTest, ConsumeNumbers) { } TEST_F(JSONParserTest, ErrorMessages) { - JSONReader::ValueWithError root = - JSONReader::ReadAndReturnValueWithError("[42]", JSON_PARSE_RFC); - EXPECT_TRUE(root.error_message.empty()); - EXPECT_EQ(0, root.error_code); + { + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse("[42]"); + EXPECT_TRUE(value); + EXPECT_TRUE(parser.GetErrorMessage().empty()); + EXPECT_EQ(0, parser.error_code()); + } // Test each of the error conditions - root = JSONReader::ReadAndReturnValueWithError("{},{}", JSON_PARSE_RFC); - EXPECT_FALSE(root.value); - EXPECT_EQ(JSONParser::FormatErrorMessage( - 1, 3, JSONReader::kUnexpectedDataAfterRoot), - root.error_message); - EXPECT_EQ(JSONReader::JSON_UNEXPECTED_DATA_AFTER_ROOT, root.error_code); - - std::string nested_json; - for (int i = 0; i < 201; ++i) { - nested_json.insert(nested_json.begin(), '['); - nested_json.append(1, ']'); + { + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse("{},{}"); + EXPECT_FALSE(value); + EXPECT_EQ(JSONParser::FormatErrorMessage( + 1, 3, JSONParser::kUnexpectedDataAfterRoot), + parser.GetErrorMessage()); + EXPECT_EQ(JSONParser::JSON_UNEXPECTED_DATA_AFTER_ROOT, parser.error_code()); + } + + { + std::string nested_json; + for (int i = 0; i < 201; ++i) { + nested_json.insert(nested_json.begin(), '['); + nested_json.append(1, ']'); + } + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse(nested_json); + EXPECT_FALSE(value); + EXPECT_EQ( + JSONParser::FormatErrorMessage(1, 200, JSONParser::kTooMuchNesting), + parser.GetErrorMessage()); + EXPECT_EQ(JSONParser::JSON_TOO_MUCH_NESTING, parser.error_code()); + } + + { + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse("[1,]"); + EXPECT_FALSE(value); + EXPECT_EQ(JSONParser::FormatErrorMessage(1, 4, JSONParser::kTrailingComma), + parser.GetErrorMessage()); + EXPECT_EQ(JSONParser::JSON_TRAILING_COMMA, parser.error_code()); + } + + { + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse("{foo:\"bar\"}"); + EXPECT_FALSE(value); + EXPECT_EQ(JSONParser::FormatErrorMessage( + 1, 2, JSONParser::kUnquotedDictionaryKey), + parser.GetErrorMessage()); + EXPECT_EQ(JSONParser::JSON_UNQUOTED_DICTIONARY_KEY, parser.error_code()); + } + + { + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse("{\"foo\":\"bar\",}"); + EXPECT_FALSE(value); + EXPECT_EQ(JSONParser::FormatErrorMessage(1, 14, JSONParser::kTrailingComma), + parser.GetErrorMessage()); + EXPECT_EQ(JSONParser::JSON_TRAILING_COMMA, parser.error_code()); + } + + { + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse("[nu]"); + EXPECT_FALSE(value); + EXPECT_EQ(JSONParser::FormatErrorMessage(1, 2, JSONParser::kSyntaxError), + parser.GetErrorMessage()); + EXPECT_EQ(JSONParser::JSON_SYNTAX_ERROR, parser.error_code()); + } + + { + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse("[\"xxx\\xq\"]"); + EXPECT_FALSE(value); + EXPECT_EQ(JSONParser::FormatErrorMessage(1, 7, JSONParser::kInvalidEscape), + parser.GetErrorMessage()); + EXPECT_EQ(JSONParser::JSON_INVALID_ESCAPE, parser.error_code()); + } + + { + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse("[\"xxx\\uq\"]"); + EXPECT_FALSE(value); + EXPECT_EQ(JSONParser::FormatErrorMessage(1, 7, JSONParser::kInvalidEscape), + parser.GetErrorMessage()); + EXPECT_EQ(JSONParser::JSON_INVALID_ESCAPE, parser.error_code()); + } + + { + JSONParser parser(JSON_PARSE_RFC); + Optional<Value> value = parser.Parse("[\"xxx\\q\"]"); + EXPECT_FALSE(value); + EXPECT_EQ(JSONParser::FormatErrorMessage(1, 7, JSONParser::kInvalidEscape), + parser.GetErrorMessage()); + EXPECT_EQ(JSONParser::JSON_INVALID_ESCAPE, parser.error_code()); } - root = JSONReader::ReadAndReturnValueWithError(nested_json, JSON_PARSE_RFC); - EXPECT_FALSE(root.value); - EXPECT_EQ(JSONParser::FormatErrorMessage(1, 200, JSONReader::kTooMuchNesting), - root.error_message); - EXPECT_EQ(JSONReader::JSON_TOO_MUCH_NESTING, root.error_code); - - root = JSONReader::ReadAndReturnValueWithError("[1,]", JSON_PARSE_RFC); - EXPECT_FALSE(root.value); - EXPECT_EQ(JSONParser::FormatErrorMessage(1, 4, JSONReader::kTrailingComma), - root.error_message); - EXPECT_EQ(JSONReader::JSON_TRAILING_COMMA, root.error_code); - - root = - JSONReader::ReadAndReturnValueWithError("{foo:\"bar\"}", JSON_PARSE_RFC); - EXPECT_FALSE(root.value); - EXPECT_EQ( - JSONParser::FormatErrorMessage(1, 2, JSONReader::kUnquotedDictionaryKey), - root.error_message); - EXPECT_EQ(JSONReader::JSON_UNQUOTED_DICTIONARY_KEY, root.error_code); - - root = JSONReader::ReadAndReturnValueWithError("{\"foo\":\"bar\",}", - JSON_PARSE_RFC); - EXPECT_FALSE(root.value); - EXPECT_EQ(JSONParser::FormatErrorMessage(1, 14, JSONReader::kTrailingComma), - root.error_message); - - root = JSONReader::ReadAndReturnValueWithError("[nu]", JSON_PARSE_RFC); - EXPECT_FALSE(root.value); - EXPECT_EQ(JSONParser::FormatErrorMessage(1, 2, JSONReader::kSyntaxError), - root.error_message); - EXPECT_EQ(JSONReader::JSON_SYNTAX_ERROR, root.error_code); - - root = - JSONReader::ReadAndReturnValueWithError("[\"xxx\\xq\"]", JSON_PARSE_RFC); - EXPECT_FALSE(root.value); - EXPECT_EQ(JSONParser::FormatErrorMessage(1, 7, JSONReader::kInvalidEscape), - root.error_message); - EXPECT_EQ(JSONReader::JSON_INVALID_ESCAPE, root.error_code); - - root = - JSONReader::ReadAndReturnValueWithError("[\"xxx\\uq\"]", JSON_PARSE_RFC); - EXPECT_FALSE(root.value); - EXPECT_EQ(JSONParser::FormatErrorMessage(1, 7, JSONReader::kInvalidEscape), - root.error_message); - EXPECT_EQ(JSONReader::JSON_INVALID_ESCAPE, root.error_code); - - root = - JSONReader::ReadAndReturnValueWithError("[\"xxx\\q\"]", JSON_PARSE_RFC); - EXPECT_FALSE(root.value); - EXPECT_EQ(JSONParser::FormatErrorMessage(1, 7, JSONReader::kInvalidEscape), - root.error_message); - EXPECT_EQ(JSONReader::JSON_INVALID_ESCAPE, root.error_code); } } // namespace internal |