SimplifyNew_Test.cpp revision 200c211d34b11a4a988fc2549df3c17ae6875899
1/* 2 * Copyright 2012 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#include "EdgeWalker_Test.h" 9#include "Intersection_Tests.h" 10#include "ShapeOps.h" 11 12#define TEST(name) { name, #name } 13 14static void testLine1() { 15 SkPath path, simple; 16 path.moveTo(2,0); 17 path.lineTo(1,1); 18 path.lineTo(0,0); 19 path.close(); 20 testSimplifyx(path); 21} 22 23static void addInnerCWTriangle(SkPath& path) { 24 path.moveTo(3,0); 25 path.lineTo(4,1); 26 path.lineTo(2,1); 27 path.close(); 28} 29 30static void addInnerCCWTriangle(SkPath& path) { 31 path.moveTo(3,0); 32 path.lineTo(2,1); 33 path.lineTo(4,1); 34 path.close(); 35} 36 37static void addOuterCWTriangle(SkPath& path) { 38 path.moveTo(3,0); 39 path.lineTo(6,2); 40 path.lineTo(0,2); 41 path.close(); 42} 43 44static void addOuterCCWTriangle(SkPath& path) { 45 path.moveTo(3,0); 46 path.lineTo(0,2); 47 path.lineTo(6,2); 48 path.close(); 49} 50 51static void testLine2() { 52 SkPath path, simple; 53 addInnerCWTriangle(path); 54 addOuterCWTriangle(path); 55 testSimplifyx(path); 56} 57 58static void testLine3() { 59 SkPath path, simple; 60 addInnerCCWTriangle(path); 61 addOuterCWTriangle(path); 62 testSimplifyx(path); 63} 64 65static void testLine3a() { 66 SkPath path, simple; 67 addInnerCWTriangle(path); 68 addOuterCCWTriangle(path); 69 testSimplifyx(path); 70} 71 72static void testLine3b() { 73 SkPath path, simple; 74 addInnerCCWTriangle(path); 75 addOuterCCWTriangle(path); 76 testSimplifyx(path); 77} 78 79static void testLine4() { 80 SkPath path, simple; 81 addOuterCCWTriangle(path); 82 addOuterCWTriangle(path); 83 testSimplifyx(path); 84} 85 86static void testLine5() { 87 SkPath path, simple; 88 addOuterCWTriangle(path); 89 addOuterCWTriangle(path); 90 testSimplifyx(path); 91} 92 93static void testLine6() { 94 SkPath path, simple; 95 path.moveTo(0,0); 96 path.lineTo(4,0); 97 path.lineTo(2,2); 98 path.close(); 99 path.moveTo(2,0); 100 path.lineTo(6,0); 101 path.lineTo(4,2); 102 path.close(); 103 testSimplifyx(path); 104} 105 106static void testLine7() { 107 SkPath path, simple; 108 path.moveTo(0,0); 109 path.lineTo(4,0); 110 path.lineTo(2,2); 111 path.close(); 112 path.moveTo(6,0); 113 path.lineTo(2,0); 114 path.lineTo(4,2); 115 path.close(); 116 testSimplifyx(path); 117} 118 119static void testLine7a() { 120 SkPath path, simple; 121 path.moveTo(0,0); 122 path.lineTo(4,0); 123 path.lineTo(2,2); 124 path.close(); 125 testSimplifyx(path); 126} 127 128static void testLine7b() { 129 SkPath path, simple; 130 path.moveTo(0,0); 131 path.lineTo(4,0); 132 path.close(); 133 path.moveTo(6,0); 134 path.lineTo(2,0); 135 path.lineTo(4,2); 136 path.close(); 137 testSimplifyx(path); 138} 139 140static void testLine8() { 141 SkPath path, simple; 142 path.moveTo(0,4); 143 path.lineTo(4,4); 144 path.lineTo(2,2); 145 path.close(); 146 path.moveTo(2,4); 147 path.lineTo(6,4); 148 path.lineTo(4,2); 149 path.close(); 150 testSimplifyx(path); 151} 152 153static void testLine9() { 154 SkPath path, simple; 155 path.moveTo(0,4); 156 path.lineTo(4,4); 157 path.lineTo(2,2); 158 path.close(); 159 path.moveTo(6,4); 160 path.lineTo(2,4); 161 path.lineTo(4,2); 162 path.close(); 163 testSimplifyx(path); 164} 165 166static void testLine10() { 167 SkPath path, simple; 168 path.moveTo(0,4); 169 path.lineTo(4,4); 170 path.lineTo(2,2); 171 path.close(); 172 path.moveTo(2,1); 173 path.lineTo(3,4); 174 path.lineTo(6,1); 175 path.close(); 176 testSimplifyx(path); 177} 178 179static void testLine10a() { 180 SkPath path, simple; 181 path.moveTo(0,4); 182 path.lineTo(8,4); 183 path.lineTo(4,0); 184 path.close(); 185 path.moveTo(2,2); 186 path.lineTo(3,3); 187 path.lineTo(4,2); 188 path.close(); 189 testSimplifyx(path); 190} 191 192static void addCWContainer(SkPath& path) { 193 path.moveTo(6,4); 194 path.lineTo(0,4); 195 path.lineTo(3,1); 196 path.close(); 197} 198 199static void addCCWContainer(SkPath& path) { 200 path.moveTo(0,4); 201 path.lineTo(6,4); 202 path.lineTo(3,1); 203 path.close(); 204} 205 206static void addCWContents(SkPath& path) { 207 path.moveTo(2,3); 208 path.lineTo(3,2); 209 path.lineTo(4,3); 210 path.close(); 211} 212 213static void addCCWContents(SkPath& path) { 214 path.moveTo(3,2); 215 path.lineTo(2,3); 216 path.lineTo(4,3); 217 path.close(); 218} 219 220static void testLine11() { 221 SkPath path, simple; 222 addCWContainer(path); 223 addCWContents(path); 224 testSimplifyx(path); 225} 226 227static void testLine12() { 228 SkPath path, simple; 229 addCCWContainer(path); 230 addCWContents(path); 231 testSimplifyx(path); 232} 233 234static void testLine13() { 235 SkPath path, simple; 236 addCWContainer(path); 237 addCCWContents(path); 238 testSimplifyx(path); 239} 240 241static void testLine14() { 242 SkPath path, simple; 243 addCCWContainer(path); 244 addCCWContents(path); 245 testSimplifyx(path); 246} 247 248static void testLine15() { 249 SkPath path, simple; 250 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0); 251 testSimplifyx(path); 252} 253 254static void testLine16() { 255 SkPath path, simple; 256 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 257 path.addRect(0, 4, 9, 9, (SkPath::Direction) 0); 258 testSimplifyx(path); 259} 260 261static void testLine17() { 262 SkPath path, simple; 263 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 264 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); 265 testSimplifyx(path); 266} 267 268static void testLine18() { 269 SkPath path, simple; 270 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 271 path.addRect(12, 4, 21, 21, (SkPath::Direction) 0); 272 testSimplifyx(path); 273} 274 275static void testLine19() { 276 SkPath path, simple; 277 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 278 path.addRect(12, 16, 21, 21, (SkPath::Direction) 0); 279 testSimplifyx(path); 280} 281 282static void testLine20() { 283 SkPath path, simple; 284 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0); 285 path.addRect(0, 12, 9, 9, (SkPath::Direction) 0); 286 testSimplifyx(path); 287} 288 289static void testLine21() { 290 SkPath path, simple; 291 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0); 292 path.addRect(0, 16, 9, 9, (SkPath::Direction) 0); 293 testSimplifyx(path); 294} 295 296static void testLine22() { 297 SkPath path, simple; 298 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0); 299 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); 300 testSimplifyx(path); 301} 302 303static void testLine23() { 304 SkPath path, simple; 305 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0); 306 path.addRect(12, 0, 21, 21, (SkPath::Direction) 0); 307 testSimplifyx(path); 308} 309 310 311 312static void testLine24a() { 313 SkPath path, simple; 314 path.moveTo(2,0); 315 path.lineTo(4,4); 316 path.lineTo(0,4); 317 path.close(); 318 path.moveTo(2,0); 319 path.lineTo(1,2); 320 path.lineTo(2,2); 321 path.close(); 322 testSimplifyx(path); 323} 324 325static void testLine24() { 326 SkPath path, simple; 327 path.addRect(0, 18, 12, 12, (SkPath::Direction) 0); 328 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); 329 testSimplifyx(path); 330} 331 332static void testLine25() { 333 SkPath path, simple; 334 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0); 335 path.addRect(12, 0, 21, 21, (SkPath::Direction) 0); 336 testSimplifyx(path); 337} 338 339static void testLine26() { 340 SkPath path, simple; 341 path.addRect(0, 18, 12, 12, (SkPath::Direction) 0); 342 path.addRect(0, 12, 9, 9, (SkPath::Direction) 0); 343 testSimplifyx(path); 344} 345 346static void testLine27() { 347 SkPath path, simple; 348 path.addRect(0, 18, 12, 12, (SkPath::Direction) 0); 349 path.addRect(12, 8, 21, 21, (SkPath::Direction) 0); 350 testSimplifyx(path); 351} 352 353static void testLine28() { 354 SkPath path, simple; 355 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0); 356 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0); 357 testSimplifyx(path); 358} 359 360static void testLine29() { 361 SkPath path, simple; 362 path.addRect(0, 18, 12, 12, (SkPath::Direction) 0); 363 path.addRect(12, 12, 21, 21, (SkPath::Direction) 0); 364 testSimplifyx(path); 365} 366 367static void testLine30() { 368 SkPath path, simple; 369 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 370 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 371 path.addRect(4, 4, 13, 13, (SkPath::Direction) 0); 372 testSimplifyx(path); 373} 374 375static void testLine31() { 376 SkPath path, simple; 377 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 378 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 379 path.addRect(0, 4, 9, 9, (SkPath::Direction) 0); 380 testSimplifyx(path); 381} 382 383static void testLine32() { 384 SkPath path, simple; 385 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 386 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 387 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); 388 testSimplifyx(path); 389} 390 391static void testLine33() { 392 SkPath path, simple; 393 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 394 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 395 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0); 396 testSimplifyx(path); 397} 398 399static void testLine34() { 400 SkPath path, simple; 401 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 402 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0); 403 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); 404 testSimplifyx(path); 405} 406 407static void testLine35() { 408 SkPath path, simple; 409 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 410 path.addRect(6, 0, 18, 18, (SkPath::Direction) 0); 411 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0); 412 testSimplifyx(path); 413} 414 415static void testLine36() { 416 SkPath path, simple; 417 path.addRect(0, 10, 20, 20, (SkPath::Direction) 0); 418 path.addRect(6, 12, 18, 18, (SkPath::Direction) 0); 419 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0); 420 testSimplifyx(path); 421} 422 423static void testLine37() { 424 SkPath path, simple; 425 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0); 426 path.addRect(18, 24, 30, 30, (SkPath::Direction) 0); 427 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0); 428 testSimplifyx(path); 429} 430 431static void testLine38() { 432 SkPath path, simple; 433 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0); 434 path.addRect(6, 12, 18, 18, (SkPath::Direction) 0); 435 path.addRect(12, 12, 21, 21, (SkPath::Direction) 0); 436 testSimplifyx(path); 437} 438 439static void testLine40() { 440 SkPath path, simple; 441 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0); 442 path.addRect(12, 18, 24, 24, (SkPath::Direction) 0); 443 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0); 444 testSimplifyx(path); 445} 446 447static void testLine41() { 448 SkPath path, simple; 449 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 450 path.addRect(18, 24, 30, 30, (SkPath::Direction) 0); 451 path.addRect(12, 0, 21, 21, (SkPath::Direction) 0); 452 testSimplifyx(path); 453} 454 455static void testLine42() { 456 SkPath path, simple; 457 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 458 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 459 path.addRect(8, 16, 17, 17, (SkPath::Direction) 0); 460 testSimplifyx(path); 461} 462 463static void testLine43() { 464 SkPath path, simple; 465 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 466 path.addRect(6, 24, 18, 18, (SkPath::Direction) 0); 467 path.addRect(0, 32, 9, 36, (SkPath::Direction) 1); 468 testSimplifyx(path); 469} 470 471static void testLine44() { 472 SkPath path, simple; 473 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); 474 path.addRect(18, 0, 30, 30, (SkPath::Direction) 0); 475 path.addRect(18, 32, 27, 36, (SkPath::Direction) 1); 476 testSimplifyx(path); 477} 478 479static void testLine45() { 480 SkPath path, simple; 481 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0); 482 path.addRect(18, 0, 30, 30, (SkPath::Direction) 0); 483 path.addRect(24, 32, 33, 36, (SkPath::Direction) 0); 484 testSimplifyx(path); 485} 486 487static void testLine46() { 488 SkPath path, simple; 489 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); 490 path.addRect(24, 0, 36, 36, (SkPath::Direction) 0); 491 path.addRect(24, 32, 33, 36, (SkPath::Direction) 0); 492 testSimplifyx(path); 493} 494 495static void testLine47() { 496 SkPath path, simple; 497 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 498 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 499 path.addRect(0, 0, 9, 9, (SkPath::Direction) 1); 500 testSimplifyx(path); 501} 502 503static void testLine48() { 504 SkPath path, simple; 505 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 506 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0); 507 path.addRect(0, 0, 9, 9, (SkPath::Direction) 1); 508 testSimplifyx(path); 509} 510 511static void testLine49() { 512 SkPath path, simple; 513 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 514 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); 515 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0); 516 testSimplifyx(path); 517} 518 519static void testLine50() { 520 SkPath path, simple; 521 path.addRect(10, 30, 30, 30, (SkPath::Direction) 0); 522 path.addRect(24, 20, 36, 30, (SkPath::Direction) 0); 523 testSimplifyx(path); 524} 525 526 527static void testLine51() { 528 SkPath path, simple; 529 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 530 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0); 531 path.addRect(4, 12, 13, 13, (SkPath::Direction) 1); 532 testSimplifyx(path); 533} 534 535static void testLine52() { 536 SkPath path, simple; 537 path.addRect(0, 30, 20, 20, (SkPath::Direction) 0); 538 path.addRect(6, 20, 18, 30, (SkPath::Direction) 0); 539 path.addRect(32, 0, 36, 41, (SkPath::Direction) 0); 540 testSimplifyx(path); 541} 542 543static void testLine53() { 544 SkPath path, simple; 545 path.addRect(10, 30, 30, 30, (SkPath::Direction) 0); 546 path.addRect(12, 20, 24, 30, (SkPath::Direction) 0); 547 path.addRect(12, 32, 21, 36, (SkPath::Direction) 1); 548 testSimplifyx(path); 549} 550 551static void testLine54() { 552 SkPath path, simple; 553 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 554 path.addRect(6, 0, 18, 18, (SkPath::Direction) 0); 555 path.addRect(8, 4, 17, 17, (SkPath::Direction) 1); 556 testSimplifyx(path); 557} 558 559static void testLine55() { 560 SkPath path, simple; 561 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 562 path.addRect(6, 6, 18, 18, (SkPath::Direction) 0); 563 path.addRect(4, 4, 13, 13, (SkPath::Direction) 1); 564 testSimplifyx(path); 565} 566 567static void testLine56() { 568 SkPath path, simple; 569 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0); 570 path.addRect(18, 20, 30, 30, (SkPath::Direction) 0); 571 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1); 572 testSimplifyx(path); 573} 574 575static void testLine57() { 576 SkPath path, simple; 577 path.addRect(20, 0, 40, 40, (SkPath::Direction) 0); 578 path.addRect(20, 0, 30, 40, (SkPath::Direction) 0); 579 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1); 580 testSimplifyx(path); 581} 582 583static void testLine58() { 584 SkPath path, simple; 585 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 586 path.addRect(0, 0, 12, 12, (SkPath::Direction) 1); 587 path.addRect(0, 12, 9, 9, (SkPath::Direction) 1); 588 testSimplifyx(path); 589} 590 591static void testLine59() { 592 SkPath path, simple; 593 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 594 path.addRect(6, 6, 18, 18, (SkPath::Direction) 1); 595 path.addRect(4, 4, 13, 13, (SkPath::Direction) 1); 596 testSimplifyx(path); 597} 598 599static void testLine60() { 600 SkPath path, simple; 601 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 602 path.addRect(6, 12, 18, 18, (SkPath::Direction) 1); 603 path.addRect(4, 12, 13, 13, (SkPath::Direction) 1); 604 testSimplifyx(path); 605} 606 607static void testLine61() { 608 SkPath path, simple; 609 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 610 path.addRect(12, 0, 24, 24, (SkPath::Direction) 1); 611 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1); 612 testSimplifyx(path); 613} 614 615static void testLine62() { 616 SkPath path, simple; 617 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); 618 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 619 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0); 620 path.addRect(4, 12, 13, 13, (SkPath::Direction) 1); 621 testSimplifyx(path); 622} 623 624static void testLine63() { 625 SkPath path, simple; 626 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); 627 path.addRect(0, 10, 20, 20, (SkPath::Direction) 0); 628 path.addRect(0, 6, 12, 12, (SkPath::Direction) 1); 629 path.addRect(0, 32, 9, 36, (SkPath::Direction) 1); 630 testSimplifyx(path); 631} 632 633static void testLine64() { 634 SkPath path, simple; 635 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); 636 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); 637 path.addRect(18, 6, 30, 30, (SkPath::Direction) 0); 638 testSimplifyx(path); 639} 640 641static void testLine65() { 642 SkPath path, simple; 643 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); 644 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0); 645 path.addRect(24, 0, 36, 36, (SkPath::Direction) 0); 646 path.addRect(32, 6, 36, 41, (SkPath::Direction) 1); 647 testSimplifyx(path); 648} 649 650static void testLine66() { 651 SkPath path, simple; 652 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); 653 path.addRect(0, 30, 20, 20, (SkPath::Direction) 0); 654 path.addRect(12, 20, 24, 30, (SkPath::Direction) 0); 655 testSimplifyx(path); 656} 657 658static void testLine67() { 659 SkPath path, simple; 660 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); 661 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); 662 path.addRect(24, 20, 36, 30, (SkPath::Direction) 0); 663 path.addRect(32, 0, 36, 41, (SkPath::Direction) 0); 664 testSimplifyx(path); 665} 666 667static void testLine68a() { 668 SkPath path, simple; 669 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); 670 path.addRect(2, 2, 6, 6, (SkPath::Direction) 0); 671 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0); 672 testSimplifyx(path); 673} 674 675static void testLine68b() { 676 SkPath path, simple; 677 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); 678 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 679 path.addRect(1, 2, 2, 2, (SkPath::Direction) 0); 680 testSimplifyx(path); 681} 682 683static void testLine68c() { 684 SkPath path, simple; 685 path.addRect(0, 0, 8, 8, (SkPath::Direction) 1); 686 path.addRect(2, 2, 6, 6, (SkPath::Direction) 0); 687 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0); 688 testSimplifyx(path); 689} 690 691static void testLine68d() { 692 SkPath path, simple; 693 path.addRect(0, 0, 8, 8, (SkPath::Direction) 1); 694 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 695 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0); 696 testSimplifyx(path); 697} 698 699static void testLine68e() { 700 SkPath path, simple; 701 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); 702 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); 703 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 704 path.addRect(1, 2, 2, 2, (SkPath::Direction) 0); 705 testSimplifyx(path); 706} 707 708static void testLine68f() { 709 SkPath path, simple; 710 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); 711 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 712 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 713 path.addRect(1, 2, 2, 2, (SkPath::Direction) 0); 714 testSimplifyx(path); 715} 716 717static void testLine68g() { 718 SkPath path, simple; 719 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); 720 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); 721 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 722 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 723 path.addRect(1, 2, 2, 2, (SkPath::Direction) 0); 724 testSimplifyx(path); 725} 726 727static void testLine68h() { 728 SkPath path, simple; 729 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); 730 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 731 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 732 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); 733 path.addRect(1, 2, 2, 2, (SkPath::Direction) 0); 734 testSimplifyx(path); 735} 736 737static void testLine69() { 738 SkPath path, simple; 739 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0); 740 path.addRect(0, 20, 12, 30, (SkPath::Direction) 0); 741 path.addRect(12, 32, 21, 36, (SkPath::Direction) 0); 742 testSimplifyx(path); 743} 744 745static void testLine70() { 746 SkPath path, simple; 747 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 748 path.addRect(0, 24, 12, 12, (SkPath::Direction) 0); 749 path.addRect(12, 32, 21, 36, (SkPath::Direction) 1); 750 testSimplifyx(path); 751} 752 753static void testLine71() { 754 SkPath path, simple; 755 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); 756 path.addRect(12, 0, 24, 24, (SkPath::Direction) 0); 757 path.addRect(12, 32, 21, 36, (SkPath::Direction) 0); 758 testSimplifyx(path); 759} 760 761static void testLine72() { 762 SkPath path, simple; 763 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); 764 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); 765 path.addRect(6, 20, 18, 30, (SkPath::Direction) 0); 766 testSimplifyx(path); 767} 768 769static void testLine73() { 770 SkPath path, simple; 771 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); 772 path.addRect(0, 40, 20, 20, (SkPath::Direction) 0); 773 path.addRect(0, 20, 12, 30, (SkPath::Direction) 0); 774 path.addRect(0, 0, 9, 9, (SkPath::Direction) 1); 775 testSimplifyx(path); 776} 777 778static void (*firstTest)() = testLine51; 779 780static struct { 781 void (*fun)(); 782 const char* str; 783} tests[] = { 784 TEST(testLine73), 785 TEST(testLine72), 786 TEST(testLine71), 787 TEST(testLine70), 788 TEST(testLine69), 789 TEST(testLine68h), 790 TEST(testLine68g), 791 TEST(testLine68f), 792 TEST(testLine68e), 793 TEST(testLine68d), 794 TEST(testLine68c), 795 TEST(testLine68b), 796 TEST(testLine68a), 797 TEST(testLine67), 798 TEST(testLine66), 799 TEST(testLine65), 800 TEST(testLine64), 801 TEST(testLine63), 802 TEST(testLine62), 803 TEST(testLine61), 804 TEST(testLine60), 805 TEST(testLine59), 806 TEST(testLine58), 807 TEST(testLine57), 808 TEST(testLine56), 809 TEST(testLine55), 810 TEST(testLine54), 811 TEST(testLine53), 812 TEST(testLine52), 813 TEST(testLine51), 814 TEST(testLine50), 815 TEST(testLine49), 816 TEST(testLine48), 817 TEST(testLine47), 818 TEST(testLine46), 819 TEST(testLine45), 820 TEST(testLine44), 821 TEST(testLine43), 822 TEST(testLine42), 823 TEST(testLine41), 824 TEST(testLine40), 825 TEST(testLine38), 826 TEST(testLine37), 827 TEST(testLine36), 828 TEST(testLine35), 829 TEST(testLine34), 830 TEST(testLine33), 831 TEST(testLine32), 832 TEST(testLine31), 833 TEST(testLine30), 834 TEST(testLine29), 835 TEST(testLine28), 836 TEST(testLine27), 837 TEST(testLine26), 838 TEST(testLine25), 839 TEST(testLine24a), 840 TEST(testLine24), 841 TEST(testLine23), 842 TEST(testLine22), 843 TEST(testLine21), 844 TEST(testLine20), 845 TEST(testLine19), 846 TEST(testLine18), 847 TEST(testLine17), 848 TEST(testLine16), 849 TEST(testLine15), 850 TEST(testLine14), 851 TEST(testLine13), 852 TEST(testLine12), 853 TEST(testLine11), 854 TEST(testLine10a), 855 TEST(testLine10), 856 TEST(testLine9), 857 TEST(testLine8), 858 TEST(testLine7b), 859 TEST(testLine7a), 860 TEST(testLine7), 861 TEST(testLine6), 862 TEST(testLine5), 863 TEST(testLine4), 864 TEST(testLine3b), 865 TEST(testLine3a), 866 TEST(testLine3), 867 TEST(testLine2), 868 TEST(testLine1), 869}; 870 871static const size_t testCount = sizeof(tests) / sizeof(tests[0]); 872 873static struct { 874 void (*fun)(); 875 const char* str; 876} subTests[] = { 877 TEST(testLine68h), 878 TEST(testLine68g), 879 TEST(testLine68f), 880 TEST(testLine68e), 881 TEST(testLine68d), 882 TEST(testLine68c), 883 TEST(testLine68b), 884 TEST(testLine68a), 885}; 886 887static const size_t subTestCount = sizeof(subTests) / sizeof(subTests[0]); 888 889static bool skipAll = false; 890static bool runSubTests = false; 891 892void SimplifyNew_Test() { 893 if (skipAll) { 894 return; 895 } 896#ifdef SK_DEBUG 897 gDebugMaxWindSum = 4; 898 gDebugMaxWindValue = 4; 899 size_t index; 900#endif 901 if (runSubTests) { 902 index = subTestCount - 1; 903 do { 904 SkDebugf(" %s [%s]\n", __FUNCTION__, subTests[index].str); 905 (*subTests[index].fun)(); 906 } while (index--); 907 } 908 index = testCount - 1; 909 if (firstTest) { 910 while (index > 0 && tests[index].fun != firstTest) { 911 --index; 912 } 913 } 914 bool firstTestComplete = false; 915 do { 916 SkDebugf(" %s [%s]\n", __FUNCTION__, tests[index].str); 917 (*tests[index].fun)(); 918 firstTestComplete = true; 919 } while (index--); 920#ifdef SK_DEBUG 921 gDebugMaxWindSum = SK_MaxS32; 922 gDebugMaxWindValue = SK_MaxS32; 923#endif 924} 925