| Index: tests/PathOpsOpTest.cpp
|
| diff --git a/tests/PathOpsOpTest.cpp b/tests/PathOpsOpTest.cpp
|
| index 5ba54f3e3fabbce5a22a51a5218cf0eba4f4785f..1861afa3f977192e41badb2a54c0e32d61a0abff 100644
|
| --- a/tests/PathOpsOpTest.cpp
|
| +++ b/tests/PathOpsOpTest.cpp
|
| @@ -3257,10 +3257,70 @@ static void findFirst1(skiatest::Reporter* reporter, const char* filename) {
|
| testPathOp(reporter, path, pathB, kDifference_PathOp, filename);
|
| }
|
|
|
| +// triggers addSimpleAngle with non-zero argument
|
| +static void cubicOp112(skiatest::Reporter* reporter, const char* filename) {
|
| + SkPath path, pathB;
|
| + path.setFillType(SkPath::kWinding_FillType);
|
| + path.moveTo(2,4);
|
| + path.cubicTo(2,3, 6,4, 1,0);
|
| + path.close();
|
| + pathB.setFillType(SkPath::kWinding_FillType);
|
| + pathB.moveTo(4,6);
|
| + pathB.cubicTo(0,1, 4,2, 3,2);
|
| + pathB.close();
|
| + testPathOp(reporter, path, pathB, kDifference_PathOp, filename);
|
| +}
|
| +
|
| +// triggers untested calcLoopSpanCount code path
|
| +#if 0
|
| +static void cubicOp113(skiatest::Reporter* reporter, const char* filename) {
|
| + SkPath path, pathB;
|
| + path.moveTo(2,4);
|
| + path.cubicTo(3,5, 2.33333325f,4.33333349f, 3.83333325f,3.83333349f);
|
| + path.close();
|
| + pathB.moveTo(3,5);
|
| + pathB.cubicTo(2.33333325f,4.33333349f, 3.83333325f,3.83333349f, 2,4);
|
| + pathB.close();
|
| + testPathOp(reporter, path, pathB, kDifference_PathOp, filename);
|
| +}
|
| +#endif
|
| +
|
| +static void cubicOp114(skiatest::Reporter* reporter, const char* filename) {
|
| + SkPath path, pathB;
|
| + path.setFillType(SkPath::kWinding_FillType);
|
| + path.moveTo(0, 1);
|
| + path.cubicTo(1, 3, -1, 2, 3.5f, 1.33333337f);
|
| + path.close();
|
| + pathB.setFillType(SkPath::kWinding_FillType);
|
| + pathB.moveTo(1, 3);
|
| + pathB.cubicTo(-1, 2, 3.5f, 1.33333337f, 0, 1);
|
| + pathB.close();
|
| + testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
|
| +}
|
| +
|
| +static void quadOp10i(skiatest::Reporter* reporter, const char* filename) {
|
| + SkPath path, pathB;
|
| + path.moveTo(0, 0);
|
| + path.quadTo(1, 8, 3, 5);
|
| + path.lineTo(8, 1);
|
| + path.close();
|
| + pathB.moveTo(0, 0);
|
| + pathB.quadTo(8, 1, 4, 8);
|
| + pathB.close();
|
| + testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
|
| +}
|
| +
|
| static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0;
|
| static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0;
|
|
|
| static struct TestDesc tests[] = {
|
| + TEST(quadOp10i),
|
| +#if 0 // FIXME: serpentine curve is ordered the wrong way
|
| + TEST(cubicOp114),
|
| +#endif
|
| +#if 0 // FIXME: currently failing
|
| + TEST(cubicOp113),
|
| +#endif
|
| #if SKPS_WORKING
|
| // fails because a cubic/quadratic intersection is missed
|
| // the internal quad/quad is far enough away from the real cubic/quad that it is rejected
|
| @@ -3269,6 +3329,7 @@ static struct TestDesc tests[] = {
|
| #if ISSUE_1417_WORKING_ON_LINUX_32
|
| TEST(issue1417),
|
| #endif
|
| + TEST(cubicOp112),
|
| TEST(skpadspert_net23),
|
| TEST(skpadspert_de11),
|
| TEST(findFirst1),
|
| @@ -3467,11 +3528,9 @@ static struct TestDesc tests[] = {
|
| static const size_t testCount = SK_ARRAY_COUNT(tests);
|
|
|
| static struct TestDesc subTests[] = {
|
| - TEST(cubicOp6d),
|
| - TEST(cubicOp8d),
|
| - TEST(cubicOp70d),
|
| - TEST(cubicOp16d),
|
| - TEST(skp5),
|
| + TEST(cubicOp114),
|
| + TEST(cubicOp58d),
|
| + TEST(cubicOp53d),
|
| };
|
|
|
| static const size_t subTestCount = SK_ARRAY_COUNT(subTests);
|
| @@ -3483,10 +3542,6 @@ static bool runSubTestsFirst = false;
|
| static bool runReverse = false;
|
|
|
| DEF_TEST(PathOpsOp, reporter) {
|
| -#ifdef SK_DEBUG
|
| - SkPathOpsDebug::gMaxWindSum = 4;
|
| - SkPathOpsDebug::gMaxWindValue = 4;
|
| -#endif
|
| #if DEBUG_SHOW_TEST_NAME
|
| strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
|
| #endif
|
| @@ -3497,10 +3552,6 @@ DEF_TEST(PathOpsOp, reporter) {
|
| if (runSubTests && !runSubTestsFirst) {
|
| RunTestSet(reporter, subTests, subTestCount, firstSubTest, stopTest, runReverse);
|
| }
|
| -#ifdef SK_DEBUG
|
| - SkPathOpsDebug::gMaxWindSum = SK_MaxS32;
|
| - SkPathOpsDebug::gMaxWindValue = SK_MaxS32;
|
| -#endif
|
| }
|
|
|
| static void bufferOverflow(skiatest::Reporter* reporter, const char* filename) {
|
| @@ -3518,10 +3569,6 @@ static struct TestDesc failTests[] = {
|
| static const size_t failTestCount = SK_ARRAY_COUNT(failTests);
|
|
|
| DEF_TEST(PathOpsFailOp, reporter) {
|
| -#ifdef SK_DEBUG
|
| - SkPathOpsDebug::gMaxWindSum = 4;
|
| - SkPathOpsDebug::gMaxWindValue = 4;
|
| -#endif
|
| #if DEBUG_SHOW_TEST_NAME
|
| strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
|
| #endif
|
|
|