| OLD | NEW |
| 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 #include "PathOpsQuadIntersectionTestData.h" | 7 #include "PathOpsQuadIntersectionTestData.h" |
| 8 #include "PathOpsTestCommon.h" | 8 #include "PathOpsTestCommon.h" |
| 9 #include "SkIntersections.h" | 9 #include "SkIntersections.h" |
| 10 #include "SkPathOpsRect.h" | 10 #include "SkPathOpsRect.h" |
| 11 #include "SkReduceOrder.h" | 11 #include "SkReduceOrder.h" |
| 12 #include "Test.h" | 12 #include "Test.h" |
| 13 #include "TestClassDef.h" |
| 13 | 14 |
| 14 static void standardTestCases(skiatest::Reporter* reporter) { | 15 static void standardTestCases(skiatest::Reporter* reporter) { |
| 15 bool showSkipped = false; | 16 bool showSkipped = false; |
| 16 for (size_t index = 0; index < quadraticTests_count; ++index) { | 17 for (size_t index = 0; index < quadraticTests_count; ++index) { |
| 17 const SkDQuad& quad1 = quadraticTests[index][0]; | 18 const SkDQuad& quad1 = quadraticTests[index][0]; |
| 18 SkASSERT(ValidQuad(quad1)); | 19 SkASSERT(ValidQuad(quad1)); |
| 19 const SkDQuad& quad2 = quadraticTests[index][1]; | 20 const SkDQuad& quad2 = quadraticTests[index][1]; |
| 20 SkASSERT(ValidQuad(quad2)); | 21 SkASSERT(ValidQuad(quad2)); |
| 21 SkReduceOrder reduce1, reduce2; | 22 SkReduceOrder reduce1, reduce2; |
| 22 int order1 = reduce1.reduce(quad1); | 23 int order1 = reduce1.reduce(quad1); |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 tt1, xy1.fX, xy1.fY, tt2, xy2.fX, xy2.fY); | 277 tt1, xy1.fX, xy1.fY, tt2, xy2.fX, xy2.fY); |
| 277 REPORTER_ASSERT(reporter, 0); | 278 REPORTER_ASSERT(reporter, 0); |
| 278 } | 279 } |
| 279 #if ONE_OFF_DEBUG | 280 #if ONE_OFF_DEBUG |
| 280 SkDebugf("%s [%d][%d] t1=%1.9g (%1.9g, %1.9g) t2=%1.9g\n", __FUNCTION__, | 281 SkDebugf("%s [%d][%d] t1=%1.9g (%1.9g, %1.9g) t2=%1.9g\n", __FUNCTION__, |
| 281 outer, inner, tt1, xy1.fX, xy1.fY, tt2); | 282 outer, inner, tt1, xy1.fX, xy1.fY, tt2); |
| 282 #endif | 283 #endif |
| 283 } | 284 } |
| 284 } | 285 } |
| 285 | 286 |
| 286 static void PathOpsQuadIntersectionOneOffTest(skiatest::Reporter* reporter) { | 287 DEF_TEST(PathOpsQuadIntersectionOneOff, reporter) { |
| 287 oneOffTest1(reporter, 0, 1); | 288 oneOffTest1(reporter, 0, 1); |
| 288 } | 289 } |
| 289 | 290 |
| 290 static void oneOffTests(skiatest::Reporter* reporter) { | 291 static void oneOffTests(skiatest::Reporter* reporter) { |
| 291 for (size_t outer = 0; outer < testSetCount - 1; ++outer) { | 292 for (size_t outer = 0; outer < testSetCount - 1; ++outer) { |
| 292 for (size_t inner = outer + 1; inner < testSetCount; ++inner) { | 293 for (size_t inner = outer + 1; inner < testSetCount; ++inner) { |
| 293 oneOffTest1(reporter, outer, inner); | 294 oneOffTest1(reporter, outer, inner); |
| 294 } | 295 } |
| 295 } | 296 } |
| 296 } | 297 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 325 REPORTER_ASSERT(reporter, pt1.approximatelyEqual(pt2)); | 326 REPORTER_ASSERT(reporter, pt1.approximatelyEqual(pt2)); |
| 326 } | 327 } |
| 327 } | 328 } |
| 328 | 329 |
| 329 static void coincidentTest(skiatest::Reporter* reporter) { | 330 static void coincidentTest(skiatest::Reporter* reporter) { |
| 330 for (size_t testIndex = 0; testIndex < coincidentTestSetCount - 1; testIndex
+= 2) { | 331 for (size_t testIndex = 0; testIndex < coincidentTestSetCount - 1; testIndex
+= 2) { |
| 331 coincidentTestOne(reporter, testIndex, testIndex + 1); | 332 coincidentTestOne(reporter, testIndex, testIndex + 1); |
| 332 } | 333 } |
| 333 } | 334 } |
| 334 | 335 |
| 335 static void PathOpsQuadIntersectionCoincidenceOneOffTest(skiatest::Reporter* rep
orter) { | 336 DEF_TEST(PathOpsQuadIntersectionCoincidenceOneOff, reporter) { |
| 336 coincidentTestOne(reporter, 0, 1); | 337 coincidentTestOne(reporter, 0, 1); |
| 337 } | 338 } |
| 338 | 339 |
| 339 static int floatSign(double x) { | 340 static int floatSign(double x) { |
| 340 return x < 0 ? -1 : x > 0 ? 1 : 0; | 341 return x < 0 ? -1 : x > 0 ? 1 : 0; |
| 341 } | 342 } |
| 342 | 343 |
| 343 static const SkDQuad pointFinderTestSet[] = { | 344 static const SkDQuad pointFinderTestSet[] = { |
| 344
//>=0.633974464 0.633974
846 <= | 345
//>=0.633974464 0.633974
846 <= |
| 345 {{{1.2071879545809394, 0.82163474041730045}, {1.1534203513372994, 0.527908700699
30229}, | 346 {{{1.2071879545809394, 0.82163474041730045}, {1.1534203513372994, 0.527908700699
30229}, |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 SkDPoint p22 = quad2.ptAtT(t22); | 493 SkDPoint p22 = quad2.ptAtT(t22); |
| 493 SkDebugf("%s p2=(%1.9g,%1.9g)<(%1.9g,%1.9g)<(%1.9g,%1.9g)\n", __FUNCTION__, | 494 SkDebugf("%s p2=(%1.9g,%1.9g)<(%1.9g,%1.9g)<(%1.9g,%1.9g)\n", __FUNCTION__, |
| 494 p20.fX, p20.fY, p2Seed.fX, p2Seed.fY, p22.fX, p22.fY); | 495 p20.fX, p20.fY, p2Seed.fX, p2Seed.fY, p22.fX, p22.fY); |
| 495 #endif | 496 #endif |
| 496 } | 497 } |
| 497 | 498 |
| 498 static void QuadraticIntersection_IntersectionFinder() { | 499 static void QuadraticIntersection_IntersectionFinder() { |
| 499 intersectionFinder(0, 1); | 500 intersectionFinder(0, 1); |
| 500 } | 501 } |
| 501 | 502 |
| 502 static void PathOpsQuadIntersectionTest(skiatest::Reporter* reporter) { | 503 DEF_TEST(PathOpsQuadIntersection, reporter) { |
| 503 oneOffTests(reporter); | 504 oneOffTests(reporter); |
| 504 coincidentTest(reporter); | 505 coincidentTest(reporter); |
| 505 standardTestCases(reporter); | 506 standardTestCases(reporter); |
| 506 if (false) QuadraticIntersection_IntersectionFinder(); | 507 if (false) QuadraticIntersection_IntersectionFinder(); |
| 507 if (false) QuadraticIntersection_PointFinder(); | 508 if (false) QuadraticIntersection_PointFinder(); |
| 508 } | 509 } |
| 509 | |
| 510 | |
| 511 #include "TestClassDef.h" | |
| 512 DEFINE_TESTCLASS_SHORT(PathOpsQuadIntersectionTest) | |
| 513 | |
| 514 DEFINE_TESTCLASS_SHORT(PathOpsQuadIntersectionOneOffTest) | |
| 515 | |
| 516 DEFINE_TESTCLASS_SHORT(PathOpsQuadIntersectionCoincidenceOneOffTest) | |
| OLD | NEW |