aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/PathOpsQuadReduceOrderTest.cpp
diff options
context:
space:
mode:
authorGravatar caryclark@google.com <caryclark@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-04-08 20:37:35 +0000
committerGravatar caryclark@google.com <caryclark@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-04-08 20:37:35 +0000
commit496120185c7baed4edf1c110f4f5b43f29bab1c0 (patch)
tree6df2b411a74522a8543b1e8fd0def3680bb46892 /tests/PathOpsQuadReduceOrderTest.cpp
parent7e0274e80bf87a923cb56f7febb44be36bd8b987 (diff)
saving the old before blowing away
git-svn-id: http://skia.googlecode.com/svn/trunk@8565 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests/PathOpsQuadReduceOrderTest.cpp')
-rw-r--r--tests/PathOpsQuadReduceOrderTest.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/PathOpsQuadReduceOrderTest.cpp b/tests/PathOpsQuadReduceOrderTest.cpp
new file mode 100644
index 0000000000..8ee817b627
--- /dev/null
+++ b/tests/PathOpsQuadReduceOrderTest.cpp
@@ -0,0 +1,71 @@
+/*
+ * 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 "PathOpsQuadIntersectionTestData.h"
+#include "SkIntersections.h"
+#include "SkPathOpsRect.h"
+#include "SkReduceOrder.h"
+#include "Test.h"
+
+static const SkDQuad testSet[] = {
+ {{{1, 1}, {2, 2}, {1, 1.000003}}},
+ {{{1, 0}, {2, 6}, {3, 0}}}
+};
+
+static const size_t testSetCount = sizeof(testSet) / sizeof(testSet[0]);
+
+static void oneOffTest(skiatest::Reporter* reporter) {
+ for (size_t index = 0; index < testSetCount; ++index) {
+ const SkDQuad& quad = testSet[index];
+ SkReduceOrder reducer;
+ SkDEBUGCODE(int result = ) reducer.reduce(quad, SkReduceOrder::kFill_Style);
+ 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 SkDQuad& quad = quadraticLines[index];
+ order = reducer.reduce(quad, SkReduceOrder::kFill_Style);
+ if (order != 2) {
+ printf("[%d] line quad order=%d\n", (int) index, order);
+ }
+ }
+ for (index = firstQuadraticModLineTest; index < quadraticModEpsilonLines_count; ++index) {
+ const SkDQuad& quad = quadraticModEpsilonLines[index];
+ order = reducer.reduce(quad, SkReduceOrder::kFill_Style);
+ if (order != 3) {
+ printf("[%d] line mod quad order=%d\n", (int) index, order);
+ }
+ }
+}
+
+void QuadReduceOrderTest(skiatest::Reporter* reporter) {
+ oneOffTest(reporter);
+ standardTestCases(reporter);
+}
+
+#include "TestClassDef.h"
+DEFINE_TESTCLASS("PathOpsReduceOrderQuad", ReduceOrderQuadTestClass, QuadReduceOrderTest)