| Index: third_party/WebKit/Source/core/svg/SVGPathParserTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/svg/SVGPathParserTest.cpp b/third_party/WebKit/Source/core/svg/SVGPathParserTest.cpp
|
| index 8cfa4de2bfc2d72409068d5bcbf7b7cf56b118c8..3a27ca62b37ecc2830272683e95adc79357a8dbc 100644
|
| --- a/third_party/WebKit/Source/core/svg/SVGPathParserTest.cpp
|
| +++ b/third_party/WebKit/Source/core/svg/SVGPathParserTest.cpp
|
| @@ -141,6 +141,49 @@ TEST(SVGPathParserTest, Simple)
|
| #undef MALFORMED
|
| #undef VALID
|
|
|
| +SVGParsingError parsePathWithError(const char* input)
|
| +{
|
| + String inputString(input);
|
| + SVGPathStringSource source(inputString);
|
| + SVGPathStringBuilder builder;
|
| + SVGPathParser parser(&source, &builder);
|
| + parser.parsePathDataFromSource();
|
| + return source.parseError();
|
| +}
|
| +
|
| +#define EXPECT_ERROR(input, expectedLocus, expectedError) \
|
| + { \
|
| + SVGParsingError error = parsePathWithError(input); \
|
| + EXPECT_EQ(expectedError, error.status()); \
|
| + EXPECT_TRUE(error.hasLocus()); \
|
| + EXPECT_EQ(expectedLocus, error.locus()); \
|
| + }
|
| +
|
| +TEST(SVGPathParserTest, ErrorReporting)
|
| +{
|
| + // Missing initial moveto.
|
| + EXPECT_ERROR(" 10 10", 1u, SVGParseStatus::ExpectedMoveToCommand);
|
| + EXPECT_ERROR("L 10 10", 0u, SVGParseStatus::ExpectedMoveToCommand);
|
| + // Invalid command letter.
|
| + EXPECT_ERROR("M 10 10 #", 8u, SVGParseStatus::ExpectedPathCommand);
|
| + EXPECT_ERROR("M 10 10 E 100 100", 8u, SVGParseStatus::ExpectedPathCommand);
|
| + // Invalid number.
|
| + EXPECT_ERROR("M 10 10 L100 ", 13u, SVGParseStatus::ExpectedNumber);
|
| + EXPECT_ERROR("M 10 10 L100 #", 13u, SVGParseStatus::ExpectedNumber);
|
| + EXPECT_ERROR("M 10 10 L100#100", 12u, SVGParseStatus::ExpectedNumber);
|
| + EXPECT_ERROR("M0,0 A#,10 0 0,0 20,20", 6u, SVGParseStatus::ExpectedNumber);
|
| + EXPECT_ERROR("M0,0 A10,# 0 0,0 20,20", 9u, SVGParseStatus::ExpectedNumber);
|
| + EXPECT_ERROR("M0,0 A10,10 # 0,0 20,20", 12u, SVGParseStatus::ExpectedNumber);
|
| + EXPECT_ERROR("M0,0 A10,10 0 0,0 #,20", 18u, SVGParseStatus::ExpectedNumber);
|
| + EXPECT_ERROR("M0,0 A10,10 0 0,0 20,#", 21u, SVGParseStatus::ExpectedNumber);
|
| + // Invalid arc-flag.
|
| + EXPECT_ERROR("M0,0 A10,10 0 #,0 20,20", 14u, SVGParseStatus::ExpectedArcFlag);
|
| + EXPECT_ERROR("M0,0 A10,10 0 0,# 20,20", 16u, SVGParseStatus::ExpectedArcFlag);
|
| + EXPECT_ERROR("M0,0 A10,10 0 0,2 20,20", 16u, SVGParseStatus::ExpectedArcFlag);
|
| +}
|
| +
|
| +#undef EXPECT_ERROR
|
| +
|
| } // namespace
|
|
|
| } // namespace blink
|
|
|