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

Side by Side Diff: tests/PathOpsExtendedTest.cpp

Issue 1111333002: compute initial winding from projected rays (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: add missing test reference Created 5 years, 7 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
« no previous file with comments | « tests/PathOpsExtendedTest.h ('k') | tests/PathOpsFuzz763Test.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 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 7
8 #include "PathOpsExtendedTest.h" 8 #include "PathOpsExtendedTest.h"
9 #include "PathOpsThreadedCommon.h" 9 #include "PathOpsThreadedCommon.h"
10 #include "SkBitmap.h" 10 #include "SkBitmap.h"
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 for (int x = gTestFirst; x < gTestNo; ++x) { 319 for (int x = gTestFirst; x < gTestNo; ++x) {
320 SkDebugf(" TEST(%s%d%s),\n", testName, x, opSuffixes[gTestOp[x - gTes tFirst]]); 320 SkDebugf(" TEST(%s%d%s),\n", testName, x, opSuffixes[gTestOp[x - gTes tFirst]]);
321 } 321 }
322 } 322 }
323 323
324 SK_DECLARE_STATIC_MUTEX(compareDebugOut3); 324 SK_DECLARE_STATIC_MUTEX(compareDebugOut3);
325 SK_DECLARE_STATIC_MUTEX(compareDebugOut4); 325 SK_DECLARE_STATIC_MUTEX(compareDebugOut4);
326 static int comparePaths(skiatest::Reporter* reporter, const char* testName, cons t SkPath& one, 326 static int comparePaths(skiatest::Reporter* reporter, const char* testName, cons t SkPath& one,
327 const SkPath& scaledOne, const SkPath& two, const SkPath& scaledTwo, SkB itmap& bitmap, 327 const SkPath& scaledOne, const SkPath& two, const SkPath& scaledTwo, SkB itmap& bitmap,
328 const SkPath& a, const SkPath& b, const SkPathOp shapeOp, const SkMatrix & scale, 328 const SkPath& a, const SkPath& b, const SkPathOp shapeOp, const SkMatrix & scale,
329 bool expectSuccess) { 329 bool expectSuccess, bool flaky) {
330 int errors2x2; 330 int errors2x2;
331 const int MAX_ERRORS = 8; 331 const int MAX_ERRORS = 8;
332 (void) pathsDrawTheSame(bitmap, scaledOne, scaledTwo, errors2x2); 332 (void) pathsDrawTheSame(bitmap, scaledOne, scaledTwo, errors2x2);
333 if (!expectSuccess) { 333 if (!expectSuccess) {
334 if (errors2x2 <= MAX_ERRORS) { 334 if (errors2x2 <= MAX_ERRORS) {
335 REPORTER_ASSERT(reporter, 0); 335 REPORTER_ASSERT(reporter, 0);
336 } 336 }
337 return 0; 337 return 0;
338 } 338 }
339 if (errors2x2 == 0) { 339 if (errors2x2 == 0) {
340 return 0; 340 return 0;
341 } 341 }
342 if (flaky) {
343 return 0;
344 }
342 if (errors2x2 > MAX_ERRORS) { 345 if (errors2x2 > MAX_ERRORS) {
343 SkAutoMutexAcquire autoM(compareDebugOut3); 346 SkAutoMutexAcquire autoM(compareDebugOut3);
344 showPathOpPath(testName, one, two, a, b, scaledOne, scaledTwo, shapeOp, scale); 347 showPathOpPath(testName, one, two, a, b, scaledOne, scaledTwo, shapeOp, scale);
345 SkDebugf("\n/*"); 348 SkDebugf("\n/*");
346 REPORTER_ASSERT(reporter, 0); 349 REPORTER_ASSERT(reporter, 0);
347 SkDebugf(" */\n"); 350 SkDebugf(" */\n");
348 } else if (errors2x2 == MAX_ERRORS || errors2x2 == MAX_ERRORS - 1) { 351 } else if (errors2x2 == MAX_ERRORS || errors2x2 == MAX_ERRORS - 1) {
349 SkAutoMutexAcquire autoM(compareDebugOut4); 352 SkAutoMutexAcquire autoM(compareDebugOut4);
350 showPathOpPath(testName, one, two, a, b, scaledOne, scaledTwo, shapeOp, scale); 353 showPathOpPath(testName, one, two, a, b, scaledOne, scaledTwo, shapeOp, scale);
351 } 354 }
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 488
486 #if DEBUG_SHOW_TEST_NAME 489 #if DEBUG_SHOW_TEST_NAME
487 static void showName(const SkPath& a, const SkPath& b, const SkPathOp shapeOp) { 490 static void showName(const SkPath& a, const SkPath& b, const SkPathOp shapeOp) {
488 SkDebugf("\n"); 491 SkDebugf("\n");
489 showPathData(a); 492 showPathData(a);
490 showOp(shapeOp); 493 showOp(shapeOp);
491 showPathData(b); 494 showPathData(b);
492 } 495 }
493 #endif 496 #endif
494 497
498 bool OpDebug(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result, bool expectSuccess);
499
495 static bool innerPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkP ath& b, 500 static bool innerPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkP ath& b,
496 const SkPathOp shapeOp, const char* testName, bool threaded, bool expect Success) { 501 const SkPathOp shapeOp, const char* testName, bool threaded, bool expect Success,
502 bool flaky) {
497 #if 0 && DEBUG_SHOW_TEST_NAME 503 #if 0 && DEBUG_SHOW_TEST_NAME
498 showName(a, b, shapeOp); 504 showName(a, b, shapeOp);
499 #endif 505 #endif
500 SkPath out; 506 SkPath out;
501 if (!Op(a, b, shapeOp, &out) ) { 507 if (!OpDebug(a, b, shapeOp, &out, expectSuccess)) {
502 SkDebugf("%s did not expect failure\n", __FUNCTION__); 508 SkDebugf("%s did not expect failure\n", __FUNCTION__);
503 REPORTER_ASSERT(reporter, 0); 509 REPORTER_ASSERT(reporter, 0);
504 return false; 510 return false;
505 } 511 }
506 if (!reporter->verbose()) { 512 if (!reporter->verbose()) {
507 return true; 513 return true;
508 } 514 }
509 SkPath pathOut, scaledPathOut; 515 SkPath pathOut, scaledPathOut;
510 SkRegion rgnA, rgnB, openClip, rgnOut; 516 SkRegion rgnA, rgnB, openClip, rgnOut;
511 openClip.setRect(-16000, -16000, 16000, 16000); 517 openClip.setRect(-16000, -16000, 16000, 16000);
(...skipping 12 matching lines...) Expand all
524 scaledB.setFillType(b.getFillType()); 530 scaledB.setFillType(b.getFillType());
525 scaledRgnA.setPath(scaledA, openClip); 531 scaledRgnA.setPath(scaledA, openClip);
526 scaledRgnB.setPath(scaledB, openClip); 532 scaledRgnB.setPath(scaledB, openClip);
527 scaledRgnOut.op(scaledRgnA, scaledRgnB, (SkRegion::Op) shapeOp); 533 scaledRgnOut.op(scaledRgnA, scaledRgnB, (SkRegion::Op) shapeOp);
528 scaledRgnOut.getBoundaryPath(&scaledPathOut); 534 scaledRgnOut.getBoundaryPath(&scaledPathOut);
529 SkBitmap bitmap; 535 SkBitmap bitmap;
530 SkPath scaledOut; 536 SkPath scaledOut;
531 scaledOut.addPath(out, scale); 537 scaledOut.addPath(out, scale);
532 scaledOut.setFillType(out.getFillType()); 538 scaledOut.setFillType(out.getFillType());
533 int result = comparePaths(reporter, testName, pathOut, scaledPathOut, out, s caledOut, bitmap, 539 int result = comparePaths(reporter, testName, pathOut, scaledPathOut, out, s caledOut, bitmap,
534 a, b, shapeOp, scale, expectSuccess); 540 a, b, shapeOp, scale, expectSuccess, flaky);
535 reporter->bumpTestCount(); 541 reporter->bumpTestCount();
536 return result == 0; 542 return result == 0;
537 } 543 }
538 544
539 bool testPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b, 545 bool testPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
540 const SkPathOp shapeOp, const char* testName) { 546 const SkPathOp shapeOp, const char* testName) {
541 return innerPathOp(reporter, a, b, shapeOp, testName, false, true); 547 return innerPathOp(reporter, a, b, shapeOp, testName, false, true, false);
548 }
549
550 bool testPathOpFlaky(skiatest::Reporter* reporter, const SkPath& a, const SkPath & b,
551 const SkPathOp shapeOp, const char* testName) {
552 return innerPathOp(reporter, a, b, shapeOp, testName, false, true, true);
542 } 553 }
543 554
544 bool testPathOpCheck(skiatest::Reporter* reporter, const SkPath& a, const SkPath & b, 555 bool testPathOpCheck(skiatest::Reporter* reporter, const SkPath& a, const SkPath & b,
545 const SkPathOp shapeOp, const char* testName, bool checkFail) { 556 const SkPathOp shapeOp, const char* testName, bool checkFail) {
546 return innerPathOp(reporter, a, b, shapeOp, testName, false, checkFail); 557 return innerPathOp(reporter, a, b, shapeOp, testName, false, checkFail, fals e);
547 } 558 }
548 559
549 bool testPathOpFailCheck(skiatest::Reporter* reporter, const SkPath& a, const Sk Path& b, 560 bool testPathOpFailCheck(skiatest::Reporter* reporter, const SkPath& a, const Sk Path& b,
550 const SkPathOp shapeOp, const char* testName) { 561 const SkPathOp shapeOp, const char* testName) {
551 return innerPathOp(reporter, a, b, shapeOp, testName, false, false); 562 return innerPathOp(reporter, a, b, shapeOp, testName, false, false, false);
552 } 563 }
553 564
554 bool testPathFailOp(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b, 565 bool testPathFailOp(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
555 const SkPathOp shapeOp, const char* testName) { 566 const SkPathOp shapeOp, const char* testName) {
556 #if DEBUG_SHOW_TEST_NAME 567 #if DEBUG_SHOW_TEST_NAME
557 showName(a, b, shapeOp); 568 showName(a, b, shapeOp);
558 #endif 569 #endif
559 SkPath orig; 570 SkPath orig;
560 orig.lineTo(54, 43); 571 orig.lineTo(54, 43);
561 SkPath out = orig; 572 SkPath out = orig;
562 if (Op(a, b, shapeOp, &out) ) { 573 if (Op(a, b, shapeOp, &out) ) {
563 SkDebugf("%s test is expected to fail\n", __FUNCTION__); 574 SkDebugf("%s test is expected to fail\n", __FUNCTION__);
564 REPORTER_ASSERT(reporter, 0); 575 REPORTER_ASSERT(reporter, 0);
565 return false; 576 return false;
566 } 577 }
567 SkASSERT(out == orig); 578 SkASSERT(out == orig);
568 return true; 579 return true;
569 } 580 }
570 581
571 bool testThreadedPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkP ath& b, 582 bool testThreadedPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkP ath& b,
572 const SkPathOp shapeOp, const char* testName) { 583 const SkPathOp shapeOp, const char* testName) {
573 return innerPathOp(reporter, a, b, shapeOp, testName, true, true); 584 return innerPathOp(reporter, a, b, shapeOp, testName, true, true, false);
574 } 585 }
575 586
576 SK_DECLARE_STATIC_MUTEX(gMutex); 587 SK_DECLARE_STATIC_MUTEX(gMutex);
577 588
578 void initializeTests(skiatest::Reporter* reporter, const char* test) { 589 void initializeTests(skiatest::Reporter* reporter, const char* test) {
579 #if 0 // doesn't work yet 590 #if 0 // doesn't work yet
580 SK_CONF_SET("images.jpeg.suppressDecoderWarnings", true); 591 SK_CONF_SET("images.jpeg.suppressDecoderWarnings", true);
581 SK_CONF_SET("images.png.suppressDecoderWarnings", true); 592 SK_CONF_SET("images.png.suppressDecoderWarnings", true);
582 #endif 593 #endif
583 if (reporter->verbose()) { 594 if (reporter->verbose()) {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 if (foundSkip && tests[index].fun != firstTest) { 687 if (foundSkip && tests[index].fun != firstTest) {
677 SkDebugf(" %s,\n", tests[index].str); 688 SkDebugf(" %s,\n", tests[index].str);
678 } 689 }
679 if (tests[index].fun == stopTest || index == last) { 690 if (tests[index].fun == stopTest || index == last) {
680 break; 691 break;
681 } 692 }
682 index += reverse ? -1 : 1; 693 index += reverse ? -1 : 1;
683 } while (true); 694 } while (true);
684 #endif 695 #endif
685 } 696 }
OLDNEW
« no previous file with comments | « tests/PathOpsExtendedTest.h ('k') | tests/PathOpsFuzz763Test.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698