@@ -25,5 +25,256 @@ TEST_F(EntityTest, CanDrawRect) {
2525 ASSERT_TRUE (OpenPlaygroundHere (entity));
2626}
2727
28+ TEST_F (EntityTest, DISABLED_BadCubicCurveTest) {
29+ // Compare with https://fiddle.skia.org/c/b3625f26122c9de7afe7794fcf25ead3
30+ Path path =
31+ PathBuilder{}
32+ .MoveTo ({237.164 , 125.003 })
33+ .CubicCurveTo ({236.709 , 125.184 }, {236.262 , 125.358 },
34+ {235.81 , 125.538 })
35+ .CubicCurveTo ({235.413 , 125.68 }, {234.994 , 125.832 },
36+ {234.592 , 125.977 })
37+ .CubicCurveTo ({234.592 , 125.977 }, {234.591 , 125.977 },
38+ {234.59 , 125.977 })
39+ .CubicCurveTo ({222.206 , 130.435 }, {207.708 , 135.753 },
40+ {192.381 , 141.429 })
41+ .CubicCurveTo ({162.77 , 151.336 }, {122.17 , 156.894 }, {84.1123 , 160 })
42+ .Close ()
43+ .TakePath ();
44+ Entity entity;
45+ entity.SetPath (path);
46+ entity.SetContents (SolidColorContents::Make (Color::Red ()));
47+ ASSERT_TRUE (OpenPlaygroundHere (entity));
48+
49+ }
50+
51+ TEST_F (EntityTest, DISABLED_BadCubicCurveAndOverlapTest) {
52+ // Compare with https://fiddle.skia.org/c/7a05a3e186c65a8dfb732f68020aae06
53+ Path path =
54+ PathBuilder{}
55+ .MoveTo ({359.934 , 96.6335 })
56+ .CubicCurveTo ({358.189 , 96.7055 }, {356.436 , 96.7908 },
57+ {354.673 , 96.8895 })
58+ .CubicCurveTo ({354.571 , 96.8953 }, {354.469 , 96.9016 },
59+ {354.367 , 96.9075 })
60+ .CubicCurveTo ({352.672 , 97.0038 }, {350.969 , 97.113 },
61+ {349.259 , 97.2355 })
62+ .CubicCurveTo ({349.048 , 97.2506 }, {348.836 , 97.2678 },
63+ {348.625 , 97.2834 })
64+ .CubicCurveTo ({347.019 , 97.4014 }, {345.407 , 97.5299 },
65+ {343.789 , 97.6722 })
66+ .CubicCurveTo ({343.428 , 97.704 }, {343.065 , 97.7402 },
67+ {342.703 , 97.7734 })
68+ .CubicCurveTo ({341.221 , 97.9086 }, {339.736 , 98.0505 },
69+ {338.246 , 98.207 })
70+ .CubicCurveTo ({337.702 , 98.2642 }, {337.156 , 98.3292 },
71+ {336.612 , 98.3894 })
72+ .CubicCurveTo ({335.284 , 98.5356 }, {333.956 , 98.6837 },
73+ {332.623 , 98.8476 })
74+ .CubicCurveTo ({332.495 , 98.8635 }, {332.366 , 98.8818 },
75+ {332.237 , 98.8982 })
76+ .LineTo ({332.237 , 102.601 })
77+ .LineTo ({321.778 , 102.601 })
78+ .LineTo ({321.778 , 100.382 })
79+ .CubicCurveTo ({321.572 , 100.413 }, {321.367 , 100.442 },
80+ {321.161 , 100.476 })
81+ .CubicCurveTo ({319.22 , 100.79 }, {317.277 , 101.123 },
82+ {315.332 , 101.479 })
83+ .CubicCurveTo ({315.322 , 101.481 }, {315.311 , 101.482 },
84+ {315.301 , 101.484 })
85+ .LineTo ({310.017 , 105.94 })
86+ .LineTo ({309.779 , 105.427 })
87+ .LineTo ({314.403 , 101.651 })
88+ .CubicCurveTo ({314.391 , 101.653 }, {314.379 , 101.656 },
89+ {314.368 , 101.658 })
90+ .CubicCurveTo ({312.528 , 102.001 }, {310.687 , 102.366 },
91+ {308.846 , 102.748 })
92+ .CubicCurveTo ({307.85 , 102.955 }, {306.855 , 103.182 }, {305.859 , 103.4 })
93+ .CubicCurveTo ({305.048 , 103.579 }, {304.236 , 103.75 },
94+ {303.425 , 103.936 })
95+ .LineTo ({299.105 , 107.578 })
96+ .LineTo ({298.867 , 107.065 })
97+ .LineTo ({302.394 , 104.185 })
98+ .LineTo ({302.412 , 104.171 })
99+ .CubicCurveTo ({301.388 , 104.409 }, {300.366 , 104.67 },
100+ {299.344 , 104.921 })
101+ .CubicCurveTo ({298.618 , 105.1 }, {297.89 , 105.269 }, {297.165 , 105.455 })
102+ .CubicCurveTo ({295.262 , 105.94 }, {293.36 , 106.445 },
103+ {291.462 , 106.979 })
104+ .CubicCurveTo ({291.132 , 107.072 }, {290.802 , 107.163 },
105+ {290.471 , 107.257 })
106+ .CubicCurveTo ({289.463 , 107.544 }, {288.455 , 107.839 },
107+ {287.449 , 108.139 })
108+ .CubicCurveTo ({286.476 , 108.431 }, {285.506 , 108.73 },
109+ {284.536 , 109.035 })
110+ .CubicCurveTo ({283.674 , 109.304 }, {282.812 , 109.579 },
111+ {281.952 , 109.859 })
112+ .CubicCurveTo ({281.177 , 110.112 }, {280.406 , 110.377 },
113+ {279.633 , 110.638 })
114+ .CubicCurveTo ({278.458 , 111.037 }, {277.256 , 111.449 },
115+ {276.803 , 111.607 })
116+ .CubicCurveTo ({276.76 , 111.622 }, {276.716 , 111.637 },
117+ {276.672 , 111.653 })
118+ .CubicCurveTo ({275.017 , 112.239 }, {273.365 , 112.836 },
119+ {271.721 , 113.463 })
120+ .LineTo ({271.717 , 113.449 })
121+ .CubicCurveTo ({271.496 , 113.496 }, {271.238 , 113.559 },
122+ {270.963 , 113.628 })
123+ .CubicCurveTo ({270.893 , 113.645 }, {270.822 , 113.663 },
124+ {270.748 , 113.682 })
125+ .CubicCurveTo ({270.468 , 113.755 }, {270.169 , 113.834 },
126+ {269.839 , 113.926 })
127+ .CubicCurveTo ({269.789 , 113.94 }, {269.732 , 113.957 },
128+ {269.681 , 113.972 })
129+ .CubicCurveTo ({269.391 , 114.053 }, {269.081 , 114.143 },
130+ {268.756 , 114.239 })
131+ .CubicCurveTo ({268.628 , 114.276 }, {268.5 , 114.314 },
132+ {268.367 , 114.354 })
133+ .CubicCurveTo ({268.172 , 114.412 }, {267.959 , 114.478 },
134+ {267.752 , 114.54 })
135+ .CubicCurveTo ({263.349 , 115.964 }, {258.058 , 117.695 },
136+ {253.564 , 119.252 })
137+ .CubicCurveTo ({253.556 , 119.255 }, {253.547 , 119.258 },
138+ {253.538 , 119.261 })
139+ .CubicCurveTo ({251.844 , 119.849 }, {250.056 , 120.474 },
140+ {248.189 , 121.131 })
141+ .CubicCurveTo ({248 , 121.197 }, {247.812 , 121.264 }, {247.621 , 121.331 })
142+ .CubicCurveTo ({247.079 , 121.522 }, {246.531 , 121.715 },
143+ {245.975 , 121.912 })
144+ .CubicCurveTo ({245.554 , 122.06 }, {245.126 , 122.212 },
145+ {244.698 , 122.364 })
146+ .CubicCurveTo ({244.071 , 122.586 }, {243.437 , 122.811 },
147+ {242.794 , 123.04 })
148+ .CubicCurveTo ({242.189 , 123.255 }, {241.58 , 123.472 },
149+ {240.961 , 123.693 })
150+ .CubicCurveTo ({240.659 , 123.801 }, {240.357 , 123.909 },
151+ {240.052 , 124.018 })
152+ .CubicCurveTo ({239.12 , 124.351 }, {238.18 , 124.687 }, {237.22 , 125.032 })
153+ .LineTo ({237.164 , 125.003 })
154+ .CubicCurveTo ({236.709 , 125.184 }, {236.262 , 125.358 },
155+ {235.81 , 125.538 })
156+ .CubicCurveTo ({235.413 , 125.68 }, {234.994 , 125.832 },
157+ {234.592 , 125.977 })
158+ .CubicCurveTo ({234.592 , 125.977 }, {234.591 , 125.977 },
159+ {234.59 , 125.977 })
160+ .CubicCurveTo ({222.206 , 130.435 }, {207.708 , 135.753 },
161+ {192.381 , 141.429 })
162+ .CubicCurveTo ({162.77 , 151.336 }, {122.17 , 156.894 }, {84.1123 , 160 })
163+ .LineTo ({360 , 160 })
164+ .LineTo ({360 , 119.256 })
165+ .LineTo ({360 , 106.332 })
166+ .LineTo ({360 , 96.6307 })
167+ .CubicCurveTo ({359.978 , 96.6317 }, {359.956 , 96.6326 },
168+ {359.934 , 96.6335 })
169+ .Close ()
170+ .MoveTo ({337.336 , 124.143 })
171+ .CubicCurveTo ({337.274 , 122.359 }, {338.903 , 121.511 },
172+ {338.903 , 121.511 })
173+ .CubicCurveTo ({338.903 , 121.511 }, {338.96 , 123.303 },
174+ {337.336 , 124.143 })
175+ .Close ()
176+ .MoveTo ({340.082 , 121.849 })
177+ .CubicCurveTo ({340.074 , 121.917 }, {340.062 , 121.992 },
178+ {340.046 , 122.075 })
179+ .CubicCurveTo ({340.039 , 122.109 }, {340.031 , 122.142 },
180+ {340.023 , 122.177 })
181+ .CubicCurveTo ({340.005 , 122.26 }, {339.98 , 122.346 },
182+ {339.952 , 122.437 })
183+ .CubicCurveTo ({339.941 , 122.473 }, {339.931 , 122.507 },
184+ {339.918 , 122.544 })
185+ .CubicCurveTo ({339.873 , 122.672 }, {339.819 , 122.804 },
186+ {339.75 , 122.938 })
187+ .CubicCurveTo ({339.747 , 122.944 }, {339.743 , 122.949 },
188+ {339.74 , 122.955 })
189+ .CubicCurveTo ({339.674 , 123.08 }, {339.593 , 123.205 },
190+ {339.501 , 123.328 })
191+ .CubicCurveTo ({339.473 , 123.366 }, {339.441 , 123.401 },
192+ {339.41 , 123.438 })
193+ .CubicCurveTo ({339.332 , 123.534 }, {339.243 , 123.625 },
194+ {339.145 , 123.714 })
195+ .CubicCurveTo ({339.105 , 123.75 }, {339.068 , 123.786 },
196+ {339.025 , 123.821 })
197+ .CubicCurveTo ({338.881 , 123.937 }, {338.724 , 124.048 },
198+ {338.539 , 124.143 })
199+ .CubicCurveTo ({338.532 , 123.959 }, {338.554 , 123.79 },
200+ {338.58 , 123.626 })
201+ .CubicCurveTo ({338.58 , 123.625 }, {338.58 , 123.625 }, {338.58 , 123.625 })
202+ .CubicCurveTo ({338.607 , 123.455 }, {338.65 , 123.299 },
203+ {338.704 , 123.151 })
204+ .CubicCurveTo ({338.708 , 123.14 }, {338.71 , 123.127 },
205+ {338.714 , 123.117 })
206+ .CubicCurveTo ({338.769 , 122.971 }, {338.833 , 122.838 },
207+ {338.905 , 122.712 })
208+ .CubicCurveTo ({338.911 , 122.702 }, {338.916 , 122.69200000000001 },
209+ {338.922 , 122.682 })
210+ .CubicCurveTo ({338.996 , 122.557 }, {339.072 , 122.444 },
211+ {339.155 , 122.34 })
212+ .CubicCurveTo ({339.161 , 122.333 }, {339.166 , 122.326 },
213+ {339.172 , 122.319 })
214+ .CubicCurveTo ({339.256 , 122.215 }, {339.339 , 122.12 },
215+ {339.425 , 122.037 })
216+ .CubicCurveTo ({339.428 , 122.033 }, {339.431 , 122.03 },
217+ {339.435 , 122.027 })
218+ .CubicCurveTo ({339.785 , 121.687 }, {340.106 , 121.511 },
219+ {340.106 , 121.511 })
220+ .CubicCurveTo ({340.106 , 121.511 }, {340.107 , 121.645 },
221+ {340.082 , 121.849 })
222+ .Close ()
223+ .MoveTo ({340.678 , 113.245 })
224+ .CubicCurveTo ({340.594 , 113.488 }, {340.356 , 113.655 },
225+ {340.135 , 113.775 })
226+ .CubicCurveTo ({339.817 , 113.948 }, {339.465 , 114.059 },
227+ {339.115 , 114.151 })
228+ .CubicCurveTo ({338.251 , 114.379 }, {337.34 , 114.516 },
229+ {336.448 , 114.516 })
230+ .CubicCurveTo ({335.761 , 114.516 }, {335.072 , 114.527 },
231+ {334.384 , 114.513 })
232+ .CubicCurveTo ({334.125 , 114.508 }, {333.862 , 114.462 },
233+ {333.605 , 114.424 })
234+ .CubicCurveTo ({332.865 , 114.318 }, {332.096 , 114.184 },
235+ {331.41 , 113.883 })
236+ .CubicCurveTo ({330.979 , 113.695 }, {330.442 , 113.34 },
237+ {330.672 , 112.813 })
238+ .CubicCurveTo ({331.135 , 111.755 }, {333.219 , 112.946 },
239+ {334.526 , 113.833 })
240+ .CubicCurveTo ({334.54 , 113.816 }, {334.554 , 113.8 }, {334.569 , 113.784 })
241+ .CubicCurveTo ({333.38 , 112.708 }, {331.749 , 110.985 },
242+ {332.76 , 110.402 })
243+ .CubicCurveTo ({333.769 , 109.82 }, {334.713 , 111.93 },
244+ {335.228 , 113.395 })
245+ .CubicCurveTo ({334.915 , 111.889 }, {334.59 , 109.636 },
246+ {335.661 , 109.592 })
247+ .CubicCurveTo ({336.733 , 109.636 }, {336.408 , 111.889 },
248+ {336.07 , 113.389 })
249+ .CubicCurveTo ({336.609 , 111.93 }, {337.553 , 109.82 },
250+ {338.563 , 110.402 })
251+ .CubicCurveTo ({339.574 , 110.984 }, {337.942 , 112.708 },
252+ {336.753 , 113.784 })
253+ .CubicCurveTo ({336.768 , 113.8 }, {336.782 , 113.816 },
254+ {336.796 , 113.833 })
255+ .CubicCurveTo ({338.104 , 112.946 }, {340.187 , 111.755 },
256+ {340.65 , 112.813 })
257+ .CubicCurveTo ({340.71 , 112.95 }, {340.728 , 113.102 },
258+ {340.678 , 113.245 })
259+ .Close ()
260+ .MoveTo ({346.357 , 106.771 })
261+ .CubicCurveTo ({346.295 , 104.987 }, {347.924 , 104.139 },
262+ {347.924 , 104.139 })
263+ .CubicCurveTo ({347.924 , 104.139 }, {347.982 , 105.931 },
264+ {346.357 , 106.771 })
265+ .Close ()
266+ .MoveTo ({347.56 , 106.771 })
267+ .CubicCurveTo ({347.498 , 104.987 }, {349.127 , 104.139 },
268+ {349.127 , 104.139 })
269+ .CubicCurveTo ({349.127 , 104.139 }, {349.185 , 105.931 },
270+ {347.56 , 106.771 })
271+ .Close ()
272+ .TakePath ();
273+ Entity entity;
274+ entity.SetPath (path);
275+ entity.SetContents (SolidColorContents::Make (Color::Red ()));
276+ ASSERT_TRUE (OpenPlaygroundHere (entity));
277+ }
278+
28279} // namespace testing
29280} // namespace impeller
0 commit comments