shape ops work in progress
add xor spot tests
rewrite path compare
work on quadratic, angle, tooCloseToCall code

git-svn-id: http://skia.googlecode.com/svn/trunk@5255 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/Intersection/SimplifyNew_Test.cpp b/experimental/Intersection/SimplifyNew_Test.cpp
index 828da54..8d6bb50 100644
--- a/experimental/Intersection/SimplifyNew_Test.cpp
+++ b/experimental/Intersection/SimplifyNew_Test.cpp
@@ -20,6 +20,16 @@
     testSimplifyx(path);
 }
 
+static void testLine1x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(2,0);
+    path.lineTo(1,1);
+    path.lineTo(0,0);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void addInnerCWTriangle(SkPath& path) {
     path.moveTo(3,0);
     path.lineTo(4,1);
@@ -50,6 +60,15 @@
 
 static void testLine2() {
     SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addInnerCWTriangle(path);
+    addOuterCWTriangle(path);
+    testSimplifyx(path);
+}
+
+static void testLine2x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
     addInnerCWTriangle(path);
     addOuterCWTriangle(path);
     testSimplifyx(path);
@@ -57,6 +76,15 @@
 
 static void testLine3() {
     SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addInnerCCWTriangle(path);
+    addOuterCWTriangle(path);
+    testSimplifyx(path);
+}
+
+static void testLine3x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
     addInnerCCWTriangle(path);
     addOuterCWTriangle(path);
     testSimplifyx(path);
@@ -69,6 +97,14 @@
     testSimplifyx(path);
 }
 
+static void testLine3ax() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addInnerCWTriangle(path);
+    addOuterCCWTriangle(path);
+    testSimplifyx(path);
+}
+
 static void testLine3b() {
     SkPath path;
     addInnerCCWTriangle(path);
@@ -76,6 +112,14 @@
     testSimplifyx(path);
 }
 
+static void testLine3bx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addInnerCCWTriangle(path);
+    addOuterCCWTriangle(path);
+    testSimplifyx(path);
+}
+
 static void testLine4() {
     SkPath path;
     addOuterCCWTriangle(path);
@@ -83,6 +127,14 @@
     testSimplifyx(path);
 }
 
+static void testLine4x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addOuterCCWTriangle(path);
+    addOuterCWTriangle(path);
+    testSimplifyx(path);
+}
+
 static void testLine5() {
     SkPath path;
     addOuterCWTriangle(path);
@@ -90,6 +142,14 @@
     testSimplifyx(path);
 }
 
+static void testLine5x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addOuterCWTriangle(path);
+    addOuterCWTriangle(path);
+    testSimplifyx(path);
+}
+
 static void testLine6() {
     SkPath path;
     path.moveTo(0,0);
@@ -103,6 +163,20 @@
     testSimplifyx(path);
 }
 
+static void testLine6x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0,0);
+    path.lineTo(4,0);
+    path.lineTo(2,2);
+    path.close();
+    path.moveTo(2,0);
+    path.lineTo(6,0);
+    path.lineTo(4,2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testLine7() {
     SkPath path;
     path.moveTo(0,0);
@@ -116,6 +190,20 @@
     testSimplifyx(path);
 }
 
+static void testLine7x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0,0);
+    path.lineTo(4,0);
+    path.lineTo(2,2);
+    path.close();
+    path.moveTo(6,0);
+    path.lineTo(2,0);
+    path.lineTo(4,2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testLine7a() {
     SkPath path;
     path.moveTo(0,0);
@@ -125,6 +213,16 @@
     testSimplifyx(path);
 }
 
+static void testLine7ax() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0,0);
+    path.lineTo(4,0);
+    path.lineTo(2,2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testLine7b() {
     SkPath path;
     path.moveTo(0,0);
@@ -137,6 +235,19 @@
     testSimplifyx(path);
 }
 
+static void testLine7bx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0,0);
+    path.lineTo(4,0);
+    path.close();
+    path.moveTo(6,0);
+    path.lineTo(2,0);
+    path.lineTo(4,2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testLine8() {
     SkPath path;
     path.moveTo(0,4);
@@ -150,6 +261,20 @@
     testSimplifyx(path);
 }
 
+static void testLine8x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0,4);
+    path.lineTo(4,4);
+    path.lineTo(2,2);
+    path.close();
+    path.moveTo(2,4);
+    path.lineTo(6,4);
+    path.lineTo(4,2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testLine9() {
     SkPath path;
     path.moveTo(0,4);
@@ -163,6 +288,20 @@
     testSimplifyx(path);
 }
 
+static void testLine9x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0,4);
+    path.lineTo(4,4);
+    path.lineTo(2,2);
+    path.close();
+    path.moveTo(6,4);
+    path.lineTo(2,4);
+    path.lineTo(4,2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testLine10() {
     SkPath path;
     path.moveTo(0,4);
@@ -176,6 +315,20 @@
     testSimplifyx(path);
 }
 
+static void testLine10x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0,4);
+    path.lineTo(4,4);
+    path.lineTo(2,2);
+    path.close();
+    path.moveTo(2,1);
+    path.lineTo(3,4);
+    path.lineTo(6,1);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testLine10a() {
     SkPath path;
     path.moveTo(0,4);
@@ -189,6 +342,20 @@
     testSimplifyx(path);
 }
 
+static void testLine10ax() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0,4);
+    path.lineTo(8,4);
+    path.lineTo(4,0);
+    path.close();
+    path.moveTo(2,2);
+    path.lineTo(3,3);
+    path.lineTo(4,2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void addCWContainer(SkPath& path) {
     path.moveTo(6,4);
     path.lineTo(0,4);
@@ -224,6 +391,14 @@
     testSimplifyx(path);
 }
 
+static void testLine11x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addCWContainer(path);
+    addCWContents(path);
+    testSimplifyx(path);
+}
+
 static void testLine12() {
     SkPath path;
     addCCWContainer(path);
@@ -231,6 +406,14 @@
     testSimplifyx(path);
 }
 
+static void testLine12x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addCCWContainer(path);
+    addCWContents(path);
+    testSimplifyx(path);
+}
+
 static void testLine13() {
     SkPath path;
     addCWContainer(path);
@@ -238,6 +421,14 @@
     testSimplifyx(path);
 }
 
+static void testLine13x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addCWContainer(path);
+    addCCWContents(path);
+    testSimplifyx(path);
+}
+
 static void testLine14() {
     SkPath path;
     addCCWContainer(path);
@@ -245,12 +436,27 @@
     testSimplifyx(path);
 }
 
+static void testLine14x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    addCCWContainer(path);
+    addCCWContents(path);
+    testSimplifyx(path);
+}
+
 static void testLine15() {
     SkPath path;
     path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
     testSimplifyx(path);
 }
 
+static void testLine15x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine16() {
     SkPath path;
     path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -258,6 +464,14 @@
     testSimplifyx(path);
 }
 
+static void testLine16x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(0, 4, 9, 9, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine17() {
     SkPath path;
     path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -265,6 +479,14 @@
     testSimplifyx(path);
 }
 
+static void testLine17x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine18() {
     SkPath path;
     path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -272,6 +494,14 @@
     testSimplifyx(path);
 }
 
+static void testLine18x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(12, 4, 21, 21, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine19() {
     SkPath path;
     path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -279,6 +509,14 @@
     testSimplifyx(path);
 }
 
+static void testLine19x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(12, 16, 21, 21, (SkPath::Direction) 0);    
+    testSimplifyx(path);
+}
+
 static void testLine20() {
     SkPath path;
     path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
@@ -286,6 +524,14 @@
     testSimplifyx(path);
 }
 
+static void testLine20x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+    path.addRect(0, 12, 9, 9, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine21() {
     SkPath path;
     path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
@@ -293,6 +539,14 @@
     testSimplifyx(path);
 }
 
+static void testLine21x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+    path.addRect(0, 16, 9, 9, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine22() {
     SkPath path;
     path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
@@ -300,6 +554,14 @@
     testSimplifyx(path);
 }
 
+static void testLine22x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+    path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine23() {
     SkPath path;
     path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
@@ -307,7 +569,13 @@
     testSimplifyx(path);
 }
 
-
+static void testLine23x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+    path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
 
 static void testLine24a() {
     SkPath path;
@@ -322,6 +590,20 @@
     testSimplifyx(path);
 }
 
+static void testLine24ax() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(2,0);
+    path.lineTo(4,4);
+    path.lineTo(0,4);
+    path.close();
+    path.moveTo(2,0);
+    path.lineTo(1,2);
+    path.lineTo(2,2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testLine24() {
     SkPath path;
     path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
@@ -329,6 +611,14 @@
     testSimplifyx(path);
 }
 
+static void testLine24x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
+    path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine25() {
     SkPath path;
     path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
@@ -336,6 +626,14 @@
     testSimplifyx(path);
 }
 
+static void testLine25x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
+    path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine26() {
     SkPath path;
     path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
@@ -343,6 +641,14 @@
     testSimplifyx(path);
 }
 
+static void testLine26x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
+    path.addRect(0, 12, 9, 9, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine27() {
     SkPath path;
     path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
@@ -350,6 +656,14 @@
     testSimplifyx(path);
 }
 
+static void testLine27x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
+    path.addRect(12, 8, 21, 21, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine28() {
     SkPath path;
     path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
@@ -357,6 +671,14 @@
     testSimplifyx(path);
 }
 
+static void testLine28x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
+    path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine29() {
     SkPath path;
     path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
@@ -364,6 +686,14 @@
     testSimplifyx(path);
 }
 
+static void testLine29x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
+    path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine30() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -372,6 +702,15 @@
     testSimplifyx(path);
 }
 
+static void testLine30x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(4, 4, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine31() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -380,6 +719,15 @@
     testSimplifyx(path);
 }
 
+static void testLine31x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(0, 4, 9, 9, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine32() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -388,6 +736,15 @@
     testSimplifyx(path);
 }
 
+static void testLine32x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine33() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -396,6 +753,15 @@
     testSimplifyx(path);
 }
 
+static void testLine33x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine34() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -404,6 +770,15 @@
     testSimplifyx(path);
 }
 
+static void testLine34x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
+    path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine35() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -412,6 +787,15 @@
     testSimplifyx(path);
 }
 
+static void testLine35x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
+    path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine36() {
     SkPath path;
     path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
@@ -420,6 +804,15 @@
     testSimplifyx(path);
 }
 
+static void testLine36x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
+    path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
+    path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine37() {
     SkPath path;
     path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
@@ -428,6 +821,15 @@
     testSimplifyx(path);
 }
 
+static void testLine37x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
+    path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
+    path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine38() {
     SkPath path;
     path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
@@ -436,6 +838,15 @@
     testSimplifyx(path);
 }
 
+static void testLine38x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
+    path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
+    path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine40() {
     SkPath path;
     path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
@@ -444,6 +855,15 @@
     testSimplifyx(path);
 }
 
+static void testLine40x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
+    path.addRect(12, 18, 24, 24, (SkPath::Direction) 0);
+    path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine41() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -452,6 +872,15 @@
     testSimplifyx(path);
 }
 
+static void testLine41x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
+    path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine42() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -460,6 +889,15 @@
     testSimplifyx(path);
 }
 
+static void testLine42x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(8, 16, 17, 17, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine43() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -468,6 +906,15 @@
     testSimplifyx(path);
 }
 
+static void testLine43x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(6, 24, 18, 18, (SkPath::Direction) 0);
+    path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine44() {
     SkPath path;
     path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
@@ -476,6 +923,15 @@
     testSimplifyx(path);
 }
 
+static void testLine44x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+    path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
+    path.addRect(18, 32, 27, 36, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine45() {
     SkPath path;
     path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
@@ -484,6 +940,15 @@
     testSimplifyx(path);
 }
 
+static void testLine45x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
+    path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
+    path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine46() {
     SkPath path;
     path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
@@ -492,6 +957,15 @@
     testSimplifyx(path);
 }
 
+static void testLine46x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+    path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
+    path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine47() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -500,6 +974,15 @@
     testSimplifyx(path);
 }
 
+static void testLine47x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine48() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -508,6 +991,15 @@
     testSimplifyx(path);
 }
 
+static void testLine48x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
+    path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine49() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -516,6 +1008,15 @@
     testSimplifyx(path);
 }
 
+static void testLine49x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
+    path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine50() {
     SkPath path;
     path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
@@ -523,6 +1024,13 @@
     testSimplifyx(path);
 }
 
+static void testLine50x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
+    path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
 
 static void testLine51() {
     SkPath path;
@@ -532,6 +1040,15 @@
     testSimplifyx(path);
 }
 
+static void testLine51x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+    path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine52() {
     SkPath path;
     path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
@@ -540,6 +1057,15 @@
     testSimplifyx(path);
 }
 
+static void testLine52x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
+    path.addRect(6, 20, 18, 30, (SkPath::Direction) 0);
+    path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine53() {
     SkPath path;
     path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
@@ -548,6 +1074,15 @@
     testSimplifyx(path);
 }
 
+static void testLine53x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
+    path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
+    path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine54() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -556,6 +1091,15 @@
     testSimplifyx(path);
 }
 
+static void testLine54x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
+    path.addRect(8, 4, 17, 17, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine55() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -564,6 +1108,15 @@
     testSimplifyx(path);
 }
 
+static void testLine55x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(6, 6, 18, 18, (SkPath::Direction) 0);
+    path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine56() {
     SkPath path;
     path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
@@ -572,6 +1125,15 @@
     testSimplifyx(path);
 }
 
+static void testLine56x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
+    path.addRect(18, 20, 30, 30, (SkPath::Direction) 0);
+    path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine57() {
     SkPath path;
     path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
@@ -580,6 +1142,15 @@
     testSimplifyx(path);
 }
 
+static void testLine57x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
+    path.addRect(20, 0, 30, 40, (SkPath::Direction) 0);
+    path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine58() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -588,6 +1159,15 @@
     testSimplifyx(path);
 }
 
+static void testLine58x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 0, 12, 12, (SkPath::Direction) 1);
+    path.addRect(0, 12, 9, 9, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine59() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -596,6 +1176,15 @@
     testSimplifyx(path);
 }
 
+static void testLine59x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(6, 6, 18, 18, (SkPath::Direction) 1);
+    path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine60() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -604,6 +1193,15 @@
     testSimplifyx(path);
 }
 
+static void testLine60x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(6, 12, 18, 18, (SkPath::Direction) 1);
+    path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine61() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -612,6 +1210,15 @@
     testSimplifyx(path);
 }
 
+static void testLine61x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(12, 0, 24, 24, (SkPath::Direction) 1);
+    path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine62() {
     SkPath path;
     path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -621,6 +1228,16 @@
     testSimplifyx(path);
 }
 
+static void testLine62x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
+    path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine63() {
     SkPath path;
     path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -630,6 +1247,16 @@
     testSimplifyx(path);
 }
 
+static void testLine63x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+    path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 6, 12, 12, (SkPath::Direction) 1);
+    path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine64() {
     SkPath path;
     path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -638,6 +1265,15 @@
     testSimplifyx(path);
 }
 
+static void testLine64x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+    path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+    path.addRect(18, 6, 30, 30, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine65() {
     SkPath path;
     path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -647,6 +1283,16 @@
     testSimplifyx(path);
 }
 
+static void testLine65x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+    path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
+    path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
+    path.addRect(32, 6, 36, 41, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine66() {
     SkPath path;
     path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -655,6 +1301,15 @@
     testSimplifyx(path);
 }
 
+static void testLine66x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+    path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
+    path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine67() {
     SkPath path;
     path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -664,6 +1319,16 @@
     testSimplifyx(path);
 }
 
+static void testLine67x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+    path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+    path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
+    path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine68a() {
     SkPath path;
     path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -672,6 +1337,15 @@
     testSimplifyx(path);
 }
 
+static void testLine68ax() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
+    path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine68b() {
     SkPath path;
     path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -680,6 +1354,15 @@
     testSimplifyx(path);
 }
 
+static void testLine68bx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine68c() {
     SkPath path;
     path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
@@ -688,6 +1371,15 @@
     testSimplifyx(path);
 }
 
+static void testLine68cx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
+    path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine68d() {
     SkPath path;
     path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
@@ -696,6 +1388,15 @@
     testSimplifyx(path);
 }
 
+static void testLine68dx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine68e() {
     SkPath path;
     path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -705,6 +1406,16 @@
     testSimplifyx(path);
 }
 
+static void testLine68ex() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine68f() {
     SkPath path;
     path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -714,6 +1425,16 @@
     testSimplifyx(path);
 }
 
+static void testLine68fx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine68g() {
     SkPath path;
     path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -724,6 +1445,17 @@
     testSimplifyx(path);
 }
 
+static void testLine68gx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine68h() {
     SkPath path;
     path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
@@ -734,6 +1466,17 @@
     testSimplifyx(path);
 }
 
+static void testLine68hx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
+    path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine69() {
     SkPath path;
     path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
@@ -742,6 +1485,15 @@
     testSimplifyx(path);
 }
 
+static void testLine69x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
+    path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine70() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -750,6 +1502,15 @@
     testSimplifyx(path);
 }
 
+static void testLine70x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 24, 12, 12, (SkPath::Direction) 0);
+    path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine71() {
     SkPath path;
     path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
@@ -758,6 +1519,15 @@
     testSimplifyx(path);
 }
 
+static void testLine71x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
+    path.addRect(12, 0, 24, 24, (SkPath::Direction) 0);
+    path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine72() {
     SkPath path;
     path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -766,6 +1536,15 @@
     testSimplifyx(path);
 }
 
+static void testLine72x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+    path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
+    path.addRect(6, 20, 18, 30, (SkPath::Direction) 0);
+    testSimplifyx(path);
+}
+
 static void testLine73() {
     SkPath path;
     path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -775,6 +1554,16 @@
     testSimplifyx(path);
 }
 
+static void testLine73x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+    path.addRect(0, 40, 20, 20, (SkPath::Direction) 0);
+    path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
+    path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine74() {
     SkPath path;
     path.addRect(20, 30, 40, 40, (SkPath::Direction) 0);
@@ -783,6 +1572,15 @@
     testSimplifyx(path);
 }
 
+static void testLine74x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(20, 30, 40, 40, (SkPath::Direction) 0);
+    path.addRect(24, 20, 36, 30, (SkPath::Direction) 1);
+    path.addRect(32, 24, 36, 41, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine75() {
     SkPath path;
     path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
@@ -792,6 +1590,16 @@
     testSimplifyx(path);
 }
 
+static void testLine75x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
+    path.addRect(10, 0, 30, 30, (SkPath::Direction) 1);
+    path.addRect(18, 0, 30, 30, (SkPath::Direction) 1);
+    path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine76() {
     SkPath path;
     path.addRect(36, 0, 66, 60, (SkPath::Direction) 0);
@@ -801,6 +1609,16 @@
     testSimplifyx(path);
 }
 
+static void testLine76x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(36, 0, 66, 60, (SkPath::Direction) 0);
+    path.addRect(10, 20, 40, 30, (SkPath::Direction) 0);
+    path.addRect(24, 20, 36, 30, (SkPath::Direction) 1);
+    path.addRect(32, 6, 36, 41, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine77() {
     SkPath path;
     path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
@@ -809,6 +1627,15 @@
     testSimplifyx(path);
 }
 
+static void testLine77x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
+    path.addRect(24, 6, 36, 36, (SkPath::Direction) 1);
+    path.addRect(24, 32, 33, 36, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine78() {
     SkPath path;
     path.addRect(0, 0, 30, 60, (SkPath::Direction) 0);
@@ -818,6 +1645,16 @@
     testSimplifyx(path);
 }
 
+static void testLine78x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 0, 30, 60, (SkPath::Direction) 0);
+    path.addRect(10, 20, 30, 30, (SkPath::Direction) 1);
+    path.addRect(18, 20, 30, 30, (SkPath::Direction) 1);
+    path.addRect(32, 0, 36, 41, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testLine79() {
     SkPath path;
     path.addRect(0, 36, 60, 30, (SkPath::Direction) 0);
@@ -827,6 +1664,16 @@
     testSimplifyx(path);
 }
 
+static void testLine79x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.addRect(0, 36, 60, 30, (SkPath::Direction) 0);
+    path.addRect(10, 30, 40, 30, (SkPath::Direction) 0);
+    path.addRect(0, 20, 12, 30, (SkPath::Direction) 1);
+    path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
+    testSimplifyx(path);
+}
+
 static void testDegenerate1() {
     SkPath path;
     path.moveTo(0, 0);
@@ -840,6 +1687,20 @@
     testSimplifyx(path);
 }
 
+static void testDegenerate1x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.lineTo(2, 0);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.lineTo(2, 0);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testDegenerate2() {
     SkPath path;
     path.moveTo(0, 0);
@@ -853,6 +1714,20 @@
     testSimplifyx(path);
 }
 
+static void testDegenerate2x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.lineTo(0, 0);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.lineTo(0, 1);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testDegenerate3() {
     SkPath path;
     path.moveTo(0, 0);
@@ -866,6 +1741,20 @@
     testSimplifyx(path);
 }
 
+static void testDegenerate3x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(2, 0);
+    path.lineTo(1, 0);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.lineTo(3, 0);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testDegenerate4() {
     SkPath path;
     path.moveTo(0, 0);
@@ -879,6 +1768,20 @@
     testSimplifyx(path);
 }
 
+static void testDegenerate4x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.lineTo(1, 3);
+    path.close();
+    path.moveTo(1, 0);
+    path.lineTo(1, 1);
+    path.lineTo(1, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testNondegenerate1() {
     SkPath path;
     path.moveTo(0, 0);
@@ -892,6 +1795,20 @@
     testSimplifyx(path);
 }
 
+static void testNondegenerate1x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(3, 0);
+    path.lineTo(1, 3);
+    path.close();
+    path.moveTo(1, 1);
+    path.lineTo(2, 1);
+    path.lineTo(1, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testNondegenerate2() {
     SkPath path;
     path.moveTo(1, 0);
@@ -905,6 +1822,20 @@
     testSimplifyx(path);
 }
 
+static void testNondegenerate2x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(1, 0);
+    path.lineTo(0, 1);
+    path.lineTo(1, 1);
+    path.close();
+    path.moveTo(0, 2);
+    path.lineTo(0, 3);
+    path.lineTo(1, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testNondegenerate3() {
     SkPath path;
     path.moveTo(0, 0);
@@ -918,6 +1849,20 @@
     testSimplifyx(path);
 }
 
+static void testNondegenerate3x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.lineTo(2, 1);
+    path.close();
+    path.moveTo(0, 1);
+    path.lineTo(1, 1);
+    path.lineTo(0, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testNondegenerate4() {
     SkPath path;
     path.moveTo(1, 0);
@@ -931,6 +1876,20 @@
     testSimplifyx(path);
 }
 
+static void testNondegenerate4x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(1, 0);
+    path.lineTo(0, 1);
+    path.lineTo(1, 2);
+    path.close();
+    path.moveTo(0, 2);
+    path.lineTo(0, 3);
+    path.lineTo(1, 3);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testQuadralateral5() {
     SkPath path;
     path.moveTo(0, 0);
@@ -946,6 +1905,22 @@
     testSimplifyx(path);
 }
 
+static void testQuadralateral5x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.lineTo(1, 0);
+    path.lineTo(1, 1);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(2, 2);
+    path.lineTo(3, 2);
+    path.lineTo(3, 3);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testQuadralateral6() {
     SkPath path;
     path.moveTo(0, 0);
@@ -961,6 +1936,22 @@
     testSimplifyx(path);
 }
 
+static void testQuadralateral6x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.lineTo(1, 0);
+    path.lineTo(1, 1);
+    path.close();
+    path.moveTo(1, 0);
+    path.lineTo(2, 0);
+    path.lineTo(0, 2);
+    path.lineTo(2, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testFauxQuadralateral6() {
     SkPath path;
     path.moveTo(0, 0);
@@ -978,6 +1969,24 @@
     testSimplifyx(path);
 }
 
+static void testFauxQuadralateral6x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.lineTo(1, 1);
+    path.close();
+    path.moveTo(1, 0);
+    path.lineTo(2, 0);
+    path.lineTo(1 + 1.0f/3, 2.0f/3);
+    path.close();
+    path.moveTo(1 + 1.0f/3, 2.0f/3);
+    path.lineTo(0, 2);
+    path.lineTo(2, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testFauxQuadralateral6a() {
     SkPath path;
     path.moveTo(0, 0);
@@ -995,6 +2004,24 @@
     testSimplifyx(path);
 }
 
+static void testFauxQuadralateral6ax() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(3, 0);
+    path.lineTo(3, 3);
+    path.close();
+    path.moveTo(3, 0);
+    path.lineTo(6, 0);
+    path.lineTo(4, 2);
+    path.close();
+    path.moveTo(4, 2);
+    path.lineTo(0, 6);
+    path.lineTo(6, 6);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testFauxQuadralateral6b() {
     SkPath path;
     path.moveTo(0, 0);
@@ -1012,6 +2039,24 @@
     testSimplifyx(path);
 }
 
+static void testFauxQuadralateral6bx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(3, 0);
+    path.lineTo(3, 3);
+    path.close();
+    path.moveTo(3, 0);
+    path.lineTo(6, 0);
+    path.lineTo(4, 2);
+    path.close();
+    path.moveTo(4, 2);
+    path.lineTo(6, 6);
+    path.lineTo(0, 6);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testFauxQuadralateral6c() {
     SkPath path;
     path.moveTo(0, 0);
@@ -1029,6 +2074,24 @@
     testSimplifyx(path);
 }
 
+static void testFauxQuadralateral6cx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(3, 3);
+    path.lineTo(3, 0);
+    path.close();
+    path.moveTo(3, 0);
+    path.lineTo(6, 0);
+    path.lineTo(4, 2);
+    path.close();
+    path.moveTo(4, 2);
+    path.lineTo(0, 6);
+    path.lineTo(6, 6);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testFauxQuadralateral6d() {
     SkPath path;
     path.moveTo(0, 0);
@@ -1046,6 +2109,24 @@
     testSimplifyx(path);
 }
 
+static void testFauxQuadralateral6dx() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(3, 3);
+    path.lineTo(3, 0);
+    path.close();
+    path.moveTo(3, 0);
+    path.lineTo(6, 0);
+    path.lineTo(4, 2);
+    path.close();
+    path.moveTo(4, 2);
+    path.lineTo(6, 6);
+    path.lineTo(0, 6);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testQuadralateral6a() {
     SkPath path;
     path.moveTo(0, 0);
@@ -1061,6 +2142,22 @@
     testSimplifyx(path);
 }
 
+static void testQuadralateral6ax() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.lineTo(3, 0);
+    path.lineTo(3, 3);
+    path.close();
+    path.moveTo(3, 0);
+    path.lineTo(6, 0);
+    path.lineTo(0, 6);
+    path.lineTo(6, 6);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testQuadralateral7() {
     SkPath path;
     path.moveTo(0, 0);
@@ -1076,6 +2173,22 @@
     testSimplifyx(path);
 }
 
+static void testQuadralateral7x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.lineTo(1, 0);
+    path.lineTo(2, 1);
+    path.close();
+    path.moveTo(1, 0);
+    path.lineTo(1, 1);
+    path.lineTo(2, 2);
+    path.lineTo(1, 3);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testQuadralateral8() {
     SkPath path;
     path.moveTo(0, 0);
@@ -1091,6 +2204,22 @@
     testSimplifyx(path);
 }
 
+static void testQuadralateral8x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(3, 1);
+    path.lineTo(1, 3);
+    path.lineTo(3, 3);
+    path.close();
+    path.moveTo(2, 1);
+    path.lineTo(0, 2);
+    path.lineTo(3, 2);
+    path.lineTo(2, 3);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testQuadralateral9() {
     SkPath path;
     path.moveTo(0, 0);
@@ -1106,7 +2235,23 @@
     testSimplifyx(path);
 }
 
-static void testLine1x() {
+static void testQuadralateral9x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.lineTo(1, 2);
+    path.lineTo(2, 2);
+    path.close();
+    path.moveTo(1, 1);
+    path.lineTo(2, 1);
+    path.lineTo(1, 3);
+    path.lineTo(2, 3);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void testLine1ax() {
     SkPath path;
     path.setFillType(SkPath::kEvenOdd_FillType);
     path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
@@ -1114,7 +2259,7 @@
     testSimplifyx(path);
 }
 
-static void testLine2x() {
+static void testLine2ax() {
     SkPath path;
     path.setFillType(SkPath::kEvenOdd_FillType);
     path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
@@ -1123,7 +2268,7 @@
     testSimplifyx(path);
 }
 
-static void testLine3x() {
+static void testLine3aax() {
     SkPath path;
     path.setFillType(SkPath::kEvenOdd_FillType);
     path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
@@ -1132,7 +2277,7 @@
     testSimplifyx(path);
 }
 
-static void testLine4x() {
+static void testLine4ax() {
     SkPath path;
     path.setFillType(SkPath::kEvenOdd_FillType);
     path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
@@ -1154,6 +2299,20 @@
     testSimplifyx(path);
 }
 
+static void testQuadratic1x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 0, 0);
+    path.lineTo(1, 0);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.quadTo(0, 0, 0, 0);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testQuadratic2() {
     SkPath path;
     path.moveTo(0, 0);
@@ -1167,6 +2326,20 @@
     testSimplifyx(path);
 }
 
+static void testQuadratic2x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 0, 0);
+    path.lineTo(3, 0);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.quadTo(1, 0, 0, 1);
+    path.close();
+    testSimplifyx(path);
+}
+
 static void testQuadratic3() {
     SkPath path;
     path.moveTo(0, 0);
@@ -1180,38 +2353,278 @@
     testSimplifyx(path);
 }
 
-static void (*firstTest)() = testQuadratic3;
+static void testQuadratic3x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 1, 0);
+    path.lineTo(0, 2);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.quadTo(1, 0, 0, 1);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void testQuadratic4() {
+    SkPath path;
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 1, 0);
+    path.lineTo(0, 2);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.quadTo(1, 0, 0, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void testQuadratic4x() {
+    SkPath path;
+    path.setFillType(SkPath::kEvenOdd_FillType);
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 1, 0);
+    path.lineTo(0, 2);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.quadTo(1, 0, 0, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void testQuadratic5() {
+    SkPath path;
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 0, 0);
+    path.lineTo(0, 1);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.quadTo(0, 1, 0, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void testQuadratic6() {
+    SkPath path;
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 1, 0);
+    path.lineTo(2, 1);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.quadTo(2, 0, 0, 1);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void testQuadratic7() {
+    SkPath path;
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 1, 0);
+    path.lineTo(3, 1);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(0, 0);
+    path.quadTo(3, 0, 1, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void testQuadratic8() {
+    SkPath path;
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 1, 0);
+    path.lineTo(0, 2);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.quadTo(0, 1, 1, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void testQuadratic9() {
+    SkPath path;
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 1, 0);
+    path.lineTo(3, 1);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.quadTo(1, 2, 3, 2);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void testQuadratic14() {
+    SkPath path;
+    path.moveTo(0, 0);
+    path.quadTo(0, 0, 1, 0);
+    path.lineTo(3, 2);
+    path.close();
+    path.moveTo(0, 0);
+    path.lineTo(1, 0);
+    path.quadTo(3, 2, 3, 3);
+    path.close();
+    testSimplifyx(path);
+}
+
+static void (*firstTest)() = testQuadratic14;
 
 static struct {
     void (*fun)();
     const char* str;
 } tests[] = {
+    TEST(testQuadratic14),
+    TEST(testQuadratic9),
+    TEST(testQuadratic8),
+    TEST(testQuadratic7),
+    TEST(testQuadratic6),
+    TEST(testQuadratic5),
+    TEST(testQuadratic4x),
+    TEST(testQuadratic3x),
+    TEST(testQuadratic2x),
+    TEST(testQuadratic1x),
+    TEST(testQuadratic4),
     TEST(testQuadratic3),
     TEST(testQuadratic2),
     TEST(testQuadratic1),
-    TEST(testLine4x),
-    TEST(testLine3x),
-    TEST(testLine2x),
-    TEST(testLine1x),
+    TEST(testLine4ax),
+    TEST(testLine3aax),
+    TEST(testLine2ax),
+    TEST(testLine1ax),
+    TEST(testQuadralateral9x),
+    TEST(testQuadralateral8x),
+    TEST(testQuadralateral7x),
+    TEST(testQuadralateral6x),
+    TEST(testQuadralateral6ax),
     TEST(testQuadralateral9),
     TEST(testQuadralateral8),
     TEST(testQuadralateral7),
     TEST(testQuadralateral6),
     TEST(testQuadralateral6a),
+    TEST(testFauxQuadralateral6dx),
+    TEST(testFauxQuadralateral6cx),
+    TEST(testFauxQuadralateral6bx),
+    TEST(testFauxQuadralateral6ax),
+    TEST(testFauxQuadralateral6x),
     TEST(testFauxQuadralateral6d),
     TEST(testFauxQuadralateral6c),
     TEST(testFauxQuadralateral6b),
     TEST(testFauxQuadralateral6a),
     TEST(testFauxQuadralateral6),
+    TEST(testQuadralateral5x),
     TEST(testQuadralateral5),
+    TEST(testNondegenerate4x),
+    TEST(testNondegenerate3x),
+    TEST(testNondegenerate2x),
+    TEST(testNondegenerate1x),
     TEST(testNondegenerate4),
     TEST(testNondegenerate3),
     TEST(testNondegenerate2),
     TEST(testNondegenerate1),
+    TEST(testDegenerate4x),
+    TEST(testDegenerate3x),
+    TEST(testDegenerate2x),
+    TEST(testDegenerate1x),
     TEST(testDegenerate4),
     TEST(testDegenerate3),
     TEST(testDegenerate2),
     TEST(testDegenerate1),
+    TEST(testLine79x),
+    TEST(testLine78x),
+    TEST(testLine77x),
+    TEST(testLine76x),
+    TEST(testLine75x),
+    TEST(testLine74x),
+    TEST(testLine73x),
+    TEST(testLine72x),
+    TEST(testLine71x),
+    TEST(testLine70x),
+    TEST(testLine69x),
+    TEST(testLine68hx),
+    TEST(testLine68gx),
+    TEST(testLine68fx),
+    TEST(testLine68ex),
+    TEST(testLine68dx),
+    TEST(testLine68cx),
+    TEST(testLine68bx),
+    TEST(testLine68ax),
+    TEST(testLine67x),
+    TEST(testLine66x),
+    TEST(testLine65x),
+    TEST(testLine64x),
+    TEST(testLine63x),
+    TEST(testLine62x),
+    TEST(testLine61x),
+    TEST(testLine60x),
+    TEST(testLine59x),
+    TEST(testLine58x),
+    TEST(testLine57x),
+    TEST(testLine56x),
+    TEST(testLine55x),
+    TEST(testLine54x),
+    TEST(testLine53x),
+    TEST(testLine52x),
+    TEST(testLine51x),
+    TEST(testLine50x),
+    TEST(testLine49x),
+    TEST(testLine48x),
+    TEST(testLine47x),
+    TEST(testLine46x),
+    TEST(testLine45x),
+    TEST(testLine44x),
+    TEST(testLine43x),
+    TEST(testLine42x),
+    TEST(testLine41x),
+    TEST(testLine40x),
+    TEST(testLine38x),
+    TEST(testLine37x),
+    TEST(testLine36x),
+    TEST(testLine35x),
+    TEST(testLine34x),
+    TEST(testLine33x),
+    TEST(testLine32x),
+    TEST(testLine31x),
+    TEST(testLine30x),
+    TEST(testLine29x),
+    TEST(testLine28x),
+    TEST(testLine27x),
+    TEST(testLine26x),
+    TEST(testLine25x),
+    TEST(testLine24ax),
+    TEST(testLine24x),
+    TEST(testLine23x),
+    TEST(testLine22x),
+    TEST(testLine21x),
+    TEST(testLine20x),
+    TEST(testLine19x),
+    TEST(testLine18x),
+    TEST(testLine17x),
+    TEST(testLine16x),
+    TEST(testLine15x),
+    TEST(testLine14x),
+    TEST(testLine13x),
+    TEST(testLine12x),
+    TEST(testLine11x),
+    TEST(testLine10ax),
+    TEST(testLine10x),
+    TEST(testLine9x),
+    TEST(testLine8x),
+    TEST(testLine7bx),
+    TEST(testLine7ax),
+    TEST(testLine7x),
+    TEST(testLine6x),
+    TEST(testLine5x),
+    TEST(testLine4x),
+    TEST(testLine3bx),
+    TEST(testLine3ax),
+    TEST(testLine3x),
+    TEST(testLine2x),
+    TEST(testLine1x),
     TEST(testLine79),
     TEST(testLine78),
     TEST(testLine77),