shape ops work in progress

git-svn-id: http://skia.googlecode.com/svn/trunk@4006 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/Intersection/QuadraticIntersection_Test.cpp b/experimental/Intersection/QuadraticIntersection_Test.cpp
index 63b7338..582b195 100644
--- a/experimental/Intersection/QuadraticIntersection_Test.cpp
+++ b/experimental/Intersection/QuadraticIntersection_Test.cpp
@@ -3,10 +3,11 @@
 #include "Intersections.h"
 #include "QuadraticIntersection_TestData.h"
 #include "TestUtilities.h"
+#include "SkTypes.h"
 
 const int firstQuadIntersectionTest = 9;
 
-void QuadraticIntersection_Test() {
+static void standardTestCases() {
     for (size_t index = firstQuadIntersectionTest; index < quadraticTests_count; ++index) {
         const Quadratic& quad1 = quadraticTests[index][0];
         const Quadratic& quad2 = quadraticTests[index][1];
@@ -44,3 +45,49 @@
     }
 }
 
+static const Quadratic testSet[] = {
+    {{8, 8}, {10, 10}, {8, -10}},
+    {{8, 8}, {12, 12}, {14, 4}},
+    {{8, 8}, {9, 9}, {10, 8}}
+};
+
+const size_t testSetCount = sizeof(testSet) / sizeof(testSet[0]);
+
+static void oneOffTest() {
+    for (int outer = 0; outer < testSetCount - 1; ++outer) {
+        for (int inner = outer + 1; inner < testSetCount; ++inner) {
+            const Quadratic& quad1 = testSet[outer];
+            const Quadratic& quad2 = testSet[inner];
+            Intersections intersections;
+            intersect(quad1, quad2, intersections);
+            if (!intersections.intersected()) {
+                SkDebugf("%s no intersection!\n", __FUNCTION__);
+            }
+            for (int pt = 0; pt < intersections.used(); ++pt) {
+                double tt1 = intersections.fT[0][pt];
+                double tx1, ty1;
+                xy_at_t(quad1, tt1, tx1, ty1);
+                double tt2 = intersections.fT[1][pt];
+                double tx2, ty2;
+                xy_at_t(quad2, tt2, tx2, ty2);
+                if (!approximately_equal(tx1, tx2)) {
+                    SkDebugf("%s [%d,%d] x!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+                        __FUNCTION__, (int)index, pt, tt1, tx1, ty1, tt2, tx2, ty2);
+                    SkASSERT(0);
+                }
+                if (!approximately_equal(ty1, ty2)) {
+                    SkDebugf("%s [%d,%d] y!= t1=%g (%g,%g) t2=%g (%g,%g)\n",
+                        __FUNCTION__, (int)index, pt, tt1, tx1, ty1, tt2, tx2, ty2);
+                    SkASSERT(0);
+                }
+                SkDebugf("%s [%d][%d] t1=%1.9g (%1.9g, %1.9g) t2=%1.9g\n", __FUNCTION__,
+                    outer, inner, tt1, tx1, tx2, tt2);
+            }
+        }
+    }
+}
+
+void QuadraticIntersection_Test() {
+    oneOffTest();
+    standardTestCases();
+}
\ No newline at end of file