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

Side by Side 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: Moar export. 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "core/svg/SVGPathParser.h"
7
8 #include "core/svg/SVGPathStringBuilder.h"
9 #include "core/svg/SVGPathStringSource.h"
10
11 #include <gtest/gtest.h>
12
13 namespace blink {
14
15 namespace {
16
17 bool parsePath(const char* input, String& output)
18 {
19 String inputString(input);
20 SVGPathStringSource source(inputString);
21 SVGPathStringBuilder builder; \
pdr. 2015/10/19 18:02:23 Nit: \
22 SVGPathParser parser(&source, &builder);
23 bool hadError = parser.parsePathDataFromSource(UnalteredParsing, true);
24 output = builder.result();
25 // Coerce a null result to empty.
26 if (output.isNull())
27 output = emptyString();
28 return hadError;
29 }
30
31 #define VALID(input, expected) \
32 { \
33 String output; \
34 EXPECT_TRUE(parsePath(input, output)); \
35 EXPECT_EQ(expected, output); \
36 }
37
38 #define MALFORMED(input, expected) \
39 { \
40 String output; \
41 EXPECT_FALSE(parsePath(input, output)); \
42 EXPECT_EQ(expected, output); \
43 }
44
45 TEST(SVGPathParserTest, Simple)
46 {
47 VALID("M1,2", "M 1 2");
48 VALID("m1,2", "m 1 2");
49 VALID("M100,200 m3,4", "M 100 200 m 3 4");
50 VALID("M100,200 L3,4", "M 100 200 L 3 4");
51 VALID("M100,200 l3,4", "M 100 200 l 3 4");
52 VALID("M100,200 H3", "M 100 200 H 3");
53 VALID("M100,200 h3", "M 100 200 h 3");
54 VALID("M100,200 V3", "M 100 200 V 3");
55 VALID("M100,200 v3", "M 100 200 v 3");
56 VALID("M100,200 Z", "M 100 200 Z");
57 VALID("M100,200 z", "M 100 200 Z");
58 VALID("M100,200 C3,4,5,6,7,8", "M 100 200 C 3 4 5 6 7 8");
59 VALID("M100,200 c3,4,5,6,7,8", "M 100 200 c 3 4 5 6 7 8");
60 VALID("M100,200 S3,4,5,6", "M 100 200 S 3 4 5 6");
61 VALID("M100,200 s3,4,5,6", "M 100 200 s 3 4 5 6");
62 VALID("M100,200 Q3,4,5,6", "M 100 200 Q 3 4 5 6");
63 VALID("M100,200 q3,4,5,6", "M 100 200 q 3 4 5 6");
64 VALID("M100,200 T3,4", "M 100 200 T 3 4");
65 VALID("M100,200 t3,4", "M 100 200 t 3 4");
66 VALID("M100,200 A3,4,5,0,0,6,7", "M 100 200 A 3 4 5 0 0 6 7");
67 VALID("M100,200 A3,4,5,1,0,6,7", "M 100 200 A 3 4 5 1 0 6 7");
68 VALID("M100,200 A3,4,5,0,1,6,7", "M 100 200 A 3 4 5 0 1 6 7");
69 VALID("M100,200 A3,4,5,1,1,6,7", "M 100 200 A 3 4 5 1 1 6 7");
70 VALID("M100,200 a3,4,5,0,0,6,7", "M 100 200 a 3 4 5 0 0 6 7");
71 VALID("M100,200 a3,4,5,0,1,6,7", "M 100 200 a 3 4 5 0 1 6 7");
72 VALID("M100,200 a3,4,5,1,0,6,7", "M 100 200 a 3 4 5 1 0 6 7");
73 VALID("M100,200 a3,4,5,1,1,6,7", "M 100 200 a 3 4 5 1 1 6 7");
74 VALID("M100,200 a3,4,5,006,7", "M 100 200 a 3 4 5 0 0 6 7");
75 VALID("M100,200 a3,4,5,016,7", "M 100 200 a 3 4 5 0 1 6 7");
76 VALID("M100,200 a3,4,5,106,7", "M 100 200 a 3 4 5 1 0 6 7");
77 VALID("M100,200 a3,4,5,116,7", "M 100 200 a 3 4 5 1 1 6 7");
78 MALFORMED("M100,200 a3,4,5,2,1,6,7", "M 100 200");
79 MALFORMED("M100,200 a3,4,5,1,2,6,7", "M 100 200");
80
81 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");
82
83 VALID("M1,2,3,4", "M 1 2 L 3 4");
84 VALID("m100,200,3,4", "m 100 200 l 3 4");
85
86 VALID("M 100-200", "M 100 -200");
87 VALID("M 0.6.5", "M 0.6 0.5");
88
89 VALID(" M1,2", "M 1 2");
90 VALID(" M1,2", "M 1 2");
91 VALID("\tM1,2", "M 1 2");
92 VALID("\nM1,2", "M 1 2");
93 VALID("\rM1,2", "M 1 2");
94 MALFORMED("\vM1,2", "");
95 MALFORMED("xM1,2", "");
96 VALID("M1,2 ", "M 1 2");
97 VALID("M1,2\t", "M 1 2");
98 VALID("M1,2\n", "M 1 2");
99 VALID("M1,2\r", "M 1 2");
100 MALFORMED("M1,2\v", "M 1 2");
101 MALFORMED("M1,2x", "M 1 2");
102 MALFORMED("M1,2 L40,0#90", "M 1 2 L 40 0");
103
104 VALID("", "");
105 VALID(" ", "");
106 MALFORMED("x", "");
107 MALFORMED("L1,2", "");
108 VALID("M.1 .2 L.3 .4 .5 .6", "M 0.1 0.2 L 0.3 0.4 L 0.5 0.6");
109
110 MALFORMED("M", "");
111 MALFORMED("M\0", "");
112
113 MALFORMED("M1,1Z0", "M 1 1 Z");
114 }
115
116 #undef MALFORMED
117 #undef VALID
118
119 }
120
121 } // namespace blink
OLDNEW
« 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