OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 #include "PathOpsExtendedTest.h" | 7 #include "PathOpsExtendedTest.h" |
8 #include "SkPath.h" | 8 #include "SkPath.h" |
9 #include "SkPathOps.h" | 9 #include "SkPathOps.h" |
10 #include "SkPoint.h" | 10 #include "SkPoint.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 path.moveTo(SkBits2Float(0xe9b6b6b6), SkBits2Float(0xe9b6b8e9)); // -2.76109e+2
5f, -2.76122e+25f | 148 path.moveTo(SkBits2Float(0xe9b6b6b6), SkBits2Float(0xe9b6b8e9)); // -2.76109e+2
5f, -2.76122e+25f |
149 path.close(); | 149 path.close(); |
150 path.moveTo(SkBits2Float(0xe9b6b6b6), SkBits2Float(0xe9b6b8e9)); // -2.76109e+2
5f, -2.76122e+25f | 150 path.moveTo(SkBits2Float(0xe9b6b6b6), SkBits2Float(0xe9b6b8e9)); // -2.76109e+2
5f, -2.76122e+25f |
151 path.quadTo(SkBits2Float(0xe93ae9e9), SkBits2Float(0xe964b6e9), SkBits2Float(0x0
000203a), SkBits2Float(0xb6000000)); // -1.41228e+25f, -1.72812e+25f, 1.15607e-
41f, -1.90735e-06f | 151 path.quadTo(SkBits2Float(0xe93ae9e9), SkBits2Float(0xe964b6e9), SkBits2Float(0x0
000203a), SkBits2Float(0xb6000000)); // -1.41228e+25f, -1.72812e+25f, 1.15607e-
41f, -1.90735e-06f |
152 path.moveTo(SkBits2Float(0x64b6b6b6), SkBits2Float(0xe9e9e900)); // 2.69638e+22
f, -3.53475e+25f | 152 path.moveTo(SkBits2Float(0x64b6b6b6), SkBits2Float(0xe9e9e900)); // 2.69638e+22
f, -3.53475e+25f |
153 path.quadTo(SkBits2Float(0xb6b6b6e9), SkBits2Float(0xb6b6b6b6), SkBits2Float(0xe
9e9b6ce), SkBits2Float(0xe9e93ae9)); // -5.44532e-06f, -5.44529e-06f, -3.53179e
+25f, -3.52447e+25f | 153 path.quadTo(SkBits2Float(0xb6b6b6e9), SkBits2Float(0xb6b6b6b6), SkBits2Float(0xe
9e9b6ce), SkBits2Float(0xe9e93ae9)); // -5.44532e-06f, -5.44529e-06f, -3.53179e
+25f, -3.52447e+25f |
154 | 154 |
155 testSimplifyFuzz(reporter, path, filename); | 155 testSimplifyFuzz(reporter, path, filename); |
156 } | 156 } |
157 | 157 |
| 158 static void fuzz763_2(skiatest::Reporter* reporter, const char* filename) { |
| 159 SkPath path; |
| 160 path.setFillType((SkPath::FillType) 0); |
| 161 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0 |
| 162 path.cubicTo(SkBits2Float(0x76773011), SkBits2Float(0x5d66fe78), SkBits2Float(0x
bbeeff66), SkBits2Float(0x637677a2), SkBits2Float(0x205266fe), SkBits2Float(0xec
296fdf)); // 1.25339e+33f, 1.0403e+18f, -0.00729363f, 4.54652e+21f, 1.78218e-19
f, -8.19347e+26f |
| 163 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0 |
| 164 path.close(); |
| 165 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0 |
| 166 path.quadTo(SkBits2Float(0xec4eecec), SkBits2Float(0x6e6f10ec), SkBits2Float(0xb
6b6ecf7), SkBits2Float(0xb6b6b6b6)); // -1.00063e+27f, 1.84968e+28f, -5.45161e-
06f, -5.44529e-06f |
| 167 path.moveTo(SkBits2Float(0x002032b8), SkBits2Float(0xecfeb6b6)); // 2.95693e-39
f, -2.46344e+27f |
| 168 path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f
, 1.9278e+31f |
| 169 path.cubicTo(SkBits2Float(0x1616ece4), SkBits2Float(0xdf020018), SkBits2Float(0x
77772965), SkBits2Float(0x1009db73), SkBits2Float(0x80ececec), SkBits2Float(0xf7
ffffff)); // 1.21917e-25f, -9.36751e+18f, 5.01303e+33f, 2.71875e-29f, -2.17582e
-38f, -1.03846e+34f |
| 170 path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f
, 1.9278e+31f |
| 171 path.close(); |
| 172 path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f
, 1.9278e+31f |
| 173 path.conicTo(SkBits2Float(0xec0700ec), SkBits2Float(0xecececec), SkBits2Float(0x
ececccec), SkBits2Float(0x772965ec), SkBits2Float(0x77777377)); // -6.52837e+26
f, -2.2914e+27f, -2.29019e+27f, 3.4358e+33f, 5.0189e+33f |
| 174 path.moveTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 175 path.close(); |
| 176 path.moveTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 177 path.quadTo(SkBits2Float(0x29ec02ec), SkBits2Float(0x1009ecec), SkBits2Float(0x8
0ececec), SkBits2Float(0xf7ffffff)); // 1.0481e-13f, 2.7201e-29f, -2.17582e-38f
, -1.03846e+34f |
| 178 path.lineTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 179 path.close(); |
| 180 path.moveTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 181 path.conicTo(SkBits2Float(0xff003aff), SkBits2Float(0xdbec2300), SkBits2Float(0x
ecececec), SkBits2Float(0x6fdf6052), SkBits2Float(0x41ecec29)); // -1.70448e+38
f, -1.32933e+17f, -2.2914e+27f, 1.38263e+29f, 29.6153f |
| 182 path.lineTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 183 path.close(); |
| 184 path.moveTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 185 path.quadTo(SkBits2Float(0xecf76e6f), SkBits2Float(0xeccfddec), SkBits2Float(0xe
cececcc), SkBits2Float(0x66000066)); // -2.39301e+27f, -2.01037e+27f, -2.2914e+
27f, 1.51118e+23f |
| 186 path.lineTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 187 path.close(); |
| 188 path.moveTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 189 path.cubicTo(SkBits2Float(0x772965df), SkBits2Float(0x77777377), SkBits2Float(0x
77777876), SkBits2Float(0x665266fe), SkBits2Float(0xecececdf), SkBits2Float(0x02
85806e)); // 3.4358e+33f, 5.0189e+33f, 5.0193e+33f, 2.48399e+23f, -2.2914e+27f,
1.96163e-37f |
| 190 path.lineTo(SkBits2Float(0xecececeb), SkBits2Float(0xecec0700)); // -2.2914e+27
f, -2.28272e+27f |
| 191 path.lineTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 192 path.close(); |
| 193 path.moveTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 194 path.lineTo(SkBits2Float(0x65ecfaec), SkBits2Float(0xde777729)); // 1.39888e+23
f, -4.45794e+18f |
| 195 path.conicTo(SkBits2Float(0x74777777), SkBits2Float(0x66fe7876), SkBits2Float(0x
ecdf6660), SkBits2Float(0x726eecec), SkBits2Float(0x29d610ec)); // 7.84253e+31f
, 6.00852e+23f, -2.16059e+27f, 4.73241e+30f, 9.50644e-14f |
| 196 path.lineTo(SkBits2Float(0xfe817477), SkBits2Float(0xdf665266)); // -8.60376e+3
7f, -1.65964e+19f |
| 197 path.close(); |
| 198 path.moveTo(SkBits2Float(0xd0ecec10), SkBits2Float(0x6e6eecdb)); // -3.17991e+1
0f, 1.84859e+28f |
| 199 path.quadTo(SkBits2Float(0x003affec), SkBits2Float(0xec2300ef), SkBits2Float(0xe
cececdb), SkBits2Float(0xcfececec)); // 5.41827e-39f, -7.88237e+26f, -2.2914e+2
7f, -7.9499e+09f |
| 200 path.lineTo(SkBits2Float(0xd0ecec10), SkBits2Float(0x6e6eecdb)); // -3.17991e+1
0f, 1.84859e+28f |
| 201 path.close(); |
| 202 path.moveTo(SkBits2Float(0xd0ecec10), SkBits2Float(0x6e6eecdb)); // -3.17991e+1
0f, 1.84859e+28f |
| 203 path.quadTo(SkBits2Float(0xecccec80), SkBits2Float(0xfa66ecec), SkBits2Float(0x6
6fa0000), SkBits2Float(0x772965df)); // -1.9819e+27f, -2.99758e+35f, 5.90296e+2
3f, 3.4358e+33f |
| 204 path.moveTo(SkBits2Float(0x77777790), SkBits2Float(0x00807677)); // 5.01923e+33
f, 1.17974e-38f |
| 205 path.close(); |
| 206 path.moveTo(SkBits2Float(0x77777790), SkBits2Float(0x00807677)); // 5.01923e+33
f, 1.17974e-38f |
| 207 path.cubicTo(SkBits2Float(0xecececec), SkBits2Float(0xfe66eaec), SkBits2Float(0x
ecdf1452), SkBits2Float(0x806eecec), SkBits2Float(0x10ececec), SkBits2Float(0xec
000000)); // -2.2914e+27f, -7.67356e+37f, -2.15749e+27f, -1.01869e-38f, 9.34506
e-29f, -6.1897e+26f |
| 208 path.lineTo(SkBits2Float(0x77777790), SkBits2Float(0x00807677)); // 5.01923e+33
f, 1.17974e-38f |
| 209 path.close(); |
| 210 path.moveTo(SkBits2Float(0x77777790), SkBits2Float(0x00807677)); // 5.01923e+33
f, 1.17974e-38f |
| 211 path.cubicTo(SkBits2Float(0x52668062), SkBits2Float(0x2965df66), SkBits2Float(0x
77777377), SkBits2Float(0x76777773), SkBits2Float(0x1697fe78), SkBits2Float(0xee
bfff00)); // 2.47499e+11f, 5.1042e-14f, 5.0189e+33f, 1.2548e+33f, 2.4556e-25f,
-2.971e+28f |
| 212 path.lineTo(SkBits2Float(0x77777790), SkBits2Float(0x00807677)); // 5.01923e+33
f, 1.17974e-38f |
| 213 path.close(); |
| 214 |
| 215 testSimplifyFuzz(reporter, path, filename); |
| 216 } |
| 217 |
158 | 218 |
159 #define TEST(test) test(reporter, #test) | 219 #define TEST(test) test(reporter, #test) |
160 | 220 |
161 DEF_TEST(PathOpsSimplifyFail, reporter) { | 221 DEF_TEST(PathOpsSimplifyFail, reporter) { |
| 222 TEST(fuzz763_2); |
162 TEST(fuzz763_1); | 223 TEST(fuzz763_1); |
163 TEST(fuzz_x2); | 224 TEST(fuzz_x2); |
164 TEST(fuzz_x1); | 225 TEST(fuzz_x1); |
165 TEST(fuzz_59); | 226 TEST(fuzz_59); |
166 for (int index = 0; index < (int) (13 * nonFinitePtsCount * finitePtsCount);
++index) { | 227 for (int index = 0; index < (int) (13 * nonFinitePtsCount * finitePtsCount);
++index) { |
167 failOne(reporter, index); | 228 failOne(reporter, index); |
168 } | 229 } |
169 for (int index = 0; index < (int) (11 * finitePtsCount); ++index) { | 230 for (int index = 0; index < (int) (11 * finitePtsCount); ++index) { |
170 dontFailOne(reporter, index); | 231 dontFailOne(reporter, index); |
171 } | 232 } |
172 } | 233 } |
173 | 234 |
174 #undef TEST | 235 #undef TEST |
175 | 236 |
176 DEF_TEST(PathOpsSimplifyFailOne, reporter) { | 237 DEF_TEST(PathOpsSimplifyFailOne, reporter) { |
177 int index = 0; | 238 int index = 0; |
178 failOne(reporter, index); | 239 failOne(reporter, index); |
179 } | 240 } |
180 | 241 |
181 DEF_TEST(PathOpsSimplifyDontFailOne, reporter) { | 242 DEF_TEST(PathOpsSimplifyDontFailOne, reporter) { |
182 int index = 17; | 243 int index = 17; |
183 dontFailOne(reporter, index); | 244 dontFailOne(reporter, index); |
184 } | 245 } |
OLD | NEW |