Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(809)

Unified Diff: third_party/WebKit/Source/core/svg/SVGPathParserTest.cpp

Issue 1413953002: Add unit test for SVG path parsing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Drop line-wrap. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
new file mode 100644
index 0000000000000000000000000000000000000000..510898ddb6785e69facc26dea714ceb614f80491
--- /dev/null
+++ b/third_party/WebKit/Source/core/svg/SVGPathParserTest.cpp
@@ -0,0 +1,121 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "config.h"
+#include "core/svg/SVGPathParser.h"
+
+#include "core/svg/SVGPathStringBuilder.h"
+#include "core/svg/SVGPathStringSource.h"
+
+#include <gtest/gtest.h>
+
+namespace blink {
+
+namespace {
+
+bool parsePath(const char* input, String& output)
+{
+ String inputString(input);
+ SVGPathStringSource source(inputString);
+ SVGPathStringBuilder builder;
+ SVGPathParser parser(&source, &builder);
+ bool hadError = parser.parsePathDataFromSource(UnalteredParsing, true);
+ output = builder.result();
+ // Coerce a null result to empty.
+ if (output.isNull())
+ output = emptyString();
+ return hadError;
+}
+
+#define VALID(input, expected) \
+ { \
+ String output; \
+ EXPECT_TRUE(parsePath(input, output)); \
+ EXPECT_EQ(expected, output); \
+ }
+
+#define MALFORMED(input, expected) \
+ { \
+ String output; \
+ EXPECT_FALSE(parsePath(input, output)); \
+ EXPECT_EQ(expected, output); \
+ }
+
+TEST(SVGPathParserTest, Simple)
+{
+ VALID("M1,2", "M 1 2");
+ VALID("m1,2", "m 1 2");
+ VALID("M100,200 m3,4", "M 100 200 m 3 4");
+ VALID("M100,200 L3,4", "M 100 200 L 3 4");
+ VALID("M100,200 l3,4", "M 100 200 l 3 4");
+ VALID("M100,200 H3", "M 100 200 H 3");
+ VALID("M100,200 h3", "M 100 200 h 3");
+ VALID("M100,200 V3", "M 100 200 V 3");
+ VALID("M100,200 v3", "M 100 200 v 3");
+ VALID("M100,200 Z", "M 100 200 Z");
+ VALID("M100,200 z", "M 100 200 Z");
+ VALID("M100,200 C3,4,5,6,7,8", "M 100 200 C 3 4 5 6 7 8");
+ VALID("M100,200 c3,4,5,6,7,8", "M 100 200 c 3 4 5 6 7 8");
+ VALID("M100,200 S3,4,5,6", "M 100 200 S 3 4 5 6");
+ VALID("M100,200 s3,4,5,6", "M 100 200 s 3 4 5 6");
+ VALID("M100,200 Q3,4,5,6", "M 100 200 Q 3 4 5 6");
+ VALID("M100,200 q3,4,5,6", "M 100 200 q 3 4 5 6");
+ VALID("M100,200 T3,4", "M 100 200 T 3 4");
+ VALID("M100,200 t3,4", "M 100 200 t 3 4");
+ VALID("M100,200 A3,4,5,0,0,6,7", "M 100 200 A 3 4 5 0 0 6 7");
+ VALID("M100,200 A3,4,5,1,0,6,7", "M 100 200 A 3 4 5 1 0 6 7");
+ VALID("M100,200 A3,4,5,0,1,6,7", "M 100 200 A 3 4 5 0 1 6 7");
+ VALID("M100,200 A3,4,5,1,1,6,7", "M 100 200 A 3 4 5 1 1 6 7");
+ VALID("M100,200 a3,4,5,0,0,6,7", "M 100 200 a 3 4 5 0 0 6 7");
+ VALID("M100,200 a3,4,5,0,1,6,7", "M 100 200 a 3 4 5 0 1 6 7");
+ VALID("M100,200 a3,4,5,1,0,6,7", "M 100 200 a 3 4 5 1 0 6 7");
+ VALID("M100,200 a3,4,5,1,1,6,7", "M 100 200 a 3 4 5 1 1 6 7");
+ VALID("M100,200 a3,4,5,006,7", "M 100 200 a 3 4 5 0 0 6 7");
+ VALID("M100,200 a3,4,5,016,7", "M 100 200 a 3 4 5 0 1 6 7");
+ VALID("M100,200 a3,4,5,106,7", "M 100 200 a 3 4 5 1 0 6 7");
+ VALID("M100,200 a3,4,5,116,7", "M 100 200 a 3 4 5 1 1 6 7");
+ MALFORMED("M100,200 a3,4,5,2,1,6,7", "M 100 200");
+ MALFORMED("M100,200 a3,4,5,1,2,6,7", "M 100 200");
+
+ VALID("M100,200 a0,4,5,0,0,10,0 a4,0,5,0,0,0,10 a0,0,5,0,0,-10,0 z", "M 100 200 a 0 4 5 0 0 10 0 a 4 0 5 0 0 0 10 a 0 0 5 0 0 -10 0 Z");
+
+ VALID("M1,2,3,4", "M 1 2 L 3 4");
+ VALID("m100,200,3,4", "m 100 200 l 3 4");
+
+ VALID("M 100-200", "M 100 -200");
+ VALID("M 0.6.5", "M 0.6 0.5");
+
+ VALID(" M1,2", "M 1 2");
+ VALID(" M1,2", "M 1 2");
+ VALID("\tM1,2", "M 1 2");
+ VALID("\nM1,2", "M 1 2");
+ VALID("\rM1,2", "M 1 2");
+ MALFORMED("\vM1,2", "");
+ MALFORMED("xM1,2", "");
+ VALID("M1,2 ", "M 1 2");
+ VALID("M1,2\t", "M 1 2");
+ VALID("M1,2\n", "M 1 2");
+ VALID("M1,2\r", "M 1 2");
+ MALFORMED("M1,2\v", "M 1 2");
+ MALFORMED("M1,2x", "M 1 2");
+ MALFORMED("M1,2 L40,0#90", "M 1 2 L 40 0");
+
+ VALID("", "");
+ VALID(" ", "");
+ MALFORMED("x", "");
+ MALFORMED("L1,2", "");
+ VALID("M.1 .2 L.3 .4 .5 .6", "M 0.1 0.2 L 0.3 0.4 L 0.5 0.6");
+
+ MALFORMED("M", "");
+ MALFORMED("M\0", "");
+
+ MALFORMED("M1,1Z0", "M 1 1 Z");
+}
+
+#undef MALFORMED
+#undef VALID
+
+}
+
+} // namespace blink
« no previous file with comments | « third_party/WebKit/Source/core/svg/SVGPathParser.h ('k') | third_party/WebKit/Source/core/svg/SVGPathSource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698