1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "src/pathops/SkIntersections.h"
- #include "src/pathops/SkPathOpsRect.h"
- #include "src/pathops/SkReduceOrder.h"
- #include "tests/PathOpsQuadIntersectionTestData.h"
- #include "tests/Test.h"
- static const QuadPts testSet[] = {
- {{{1, 1}, {2, 2}, {1, 1.000003}}},
- {{{1, 0}, {2, 6}, {3, 0}}}
- };
- static const size_t testSetCount = SK_ARRAY_COUNT(testSet);
- static void oneOffTest(skiatest::Reporter* reporter) {
- for (size_t index = 0; index < testSetCount; ++index) {
- const QuadPts& q = testSet[index];
- SkDQuad quad;
- quad.debugSet(q.fPts);
- SkReduceOrder reducer;
- SkDEBUGCODE(int result = ) reducer.reduce(quad);
- SkASSERT(result == 3);
- }
- }
- static void standardTestCases(skiatest::Reporter* reporter) {
- size_t index;
- SkReduceOrder reducer;
- int order;
- enum {
- RunAll,
- RunQuadraticLines,
- RunQuadraticModLines,
- RunNone
- } run = RunAll;
- int firstTestIndex = 0;
- #if 0
- run = RunQuadraticLines;
- firstTestIndex = 1;
- #endif
- int firstQuadraticLineTest = run == RunAll ? 0 : run == RunQuadraticLines ? firstTestIndex
- : SK_MaxS32;
- int firstQuadraticModLineTest = run == RunAll ? 0 : run == RunQuadraticModLines ? firstTestIndex
- : SK_MaxS32;
- for (index = firstQuadraticLineTest; index < quadraticLines_count; ++index) {
- const QuadPts& q = quadraticLines[index];
- SkDQuad quad;
- quad.debugSet(q.fPts);
- order = reducer.reduce(quad);
- if (order != 2) {
- SkDebugf("[%d] line quad order=%d\n", (int) index, order);
- }
- }
- for (index = firstQuadraticModLineTest; index < quadraticModEpsilonLines_count; ++index) {
- const QuadPts& q = quadraticModEpsilonLines[index];
- SkDQuad quad;
- quad.debugSet(q.fPts);
- order = reducer.reduce(quad);
- if (order != 2 && order != 3) { // FIXME: data probably is not good
- SkDebugf("[%d] line mod quad order=%d\n", (int) index, order);
- }
- }
- }
- DEF_TEST(PathOpsReduceOrderQuad, reporter) {
- oneOffTest(reporter);
- standardTestCases(reporter);
- }
|