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/SimplifyFindNext_Test.cpp b/experimental/Intersection/SimplifyFindNext_Test.cpp
new file mode 100644
index 0000000..6d47a93
--- /dev/null
+++ b/experimental/Intersection/SimplifyFindNext_Test.cpp
@@ -0,0 +1,83 @@
+/*
+ * 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 "Simplify.h"
+
+namespace SimplifyFindNextTest {
+
+#include "Simplify.cpp"
+
+} // end of SimplifyFindNextTest namespace
+
+#include "Intersection_Tests.h"
+
+static const SimplifyFindNextTest::Segment* testCommon(
+        int start, int winding, int step,
+        SkTArray<SimplifyFindNextTest::Contour>& contours,
+        SimplifyFindNextTest::EdgeBuilder& builder, const SkPath& path) {
+    SkTDArray<SimplifyFindNextTest::Contour*> contourList;
+    SimplifyFindNextTest::Contour sentinel;
+    sentinel.reset();
+    makeContourList(contours, sentinel, contourList);
+    addIntersectTs(contourList[0], contourList[0], -1);
+    if (contours.count() > 1) {
+        SkASSERT(contours.count() == 2);
+        addIntersectTs(contourList[0], contourList[1], -1);
+        addIntersectTs(contourList[1], contourList[1], -1);
+    }
+    fixOtherTIndex(contourList);
+    SimplifyFindNextTest::Segment& segment = contours[0].fSegments[0];
+    int spanIndex;
+    SimplifyFindNextTest::Segment* next = segment.findNext(start, winding,
+            step, spanIndex);
+    SkASSERT(spanIndex == 1);
+    return next;
+}
+
+static void test(const SkPath& path) {
+    SkTArray<SimplifyFindNextTest::Contour> contours;
+    SimplifyFindNextTest::EdgeBuilder builder(path, contours);
+    int start = 0;
+    int winding = 0;
+    int step = 1;
+    testCommon(start, winding, step, contours, builder, path);
+}
+
+static void testLine1() {
+    SkPath path;
+    path.moveTo(2,0);
+    path.lineTo(1,1);
+    path.lineTo(0,0);
+    path.close();
+    test(path);
+}
+
+static void (*tests[])() = {
+    testLine1,
+};
+
+static const size_t testCount = sizeof(tests) / sizeof(tests[0]);
+
+static void (*firstTest)() = 0;
+static bool skipAll = false;
+
+void SimplifyFindNext_Test() {
+    if (skipAll) {
+        return;
+    }
+    size_t index = 0;
+    if (firstTest) {
+        while (index < testCount && tests[index] != firstTest) {
+            ++index;
+        }
+    }
+    bool firstTestComplete = false;
+    for ( ; index < testCount; ++index) {
+        (*tests[index])();
+        firstTestComplete = true;
+    }
+}