move private test for sect_with_horizontal into unittests
authorreed <reed@google.com>
Wed, 17 Aug 2016 14:37:57 +0000 (07:37 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 17 Aug 2016 14:37:57 +0000 (07:37 -0700)
BUG=638575
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2250353004

Review-Url: https://codereview.chromium.org/2250353004

src/core/SkLineClipper.cpp
tests/PathTest.cpp

index 189f03a..8d10656 100644 (file)
@@ -157,34 +157,8 @@ static bool is_between_unsorted(SkScalar value,
 }
 #endif
 
-#ifdef SK_DEBUG
-// This is an example of why we need to pin the result computed in
-// sect_with_horizontal. If we didn't explicitly pin, is_between_unsorted would
-// fail.
-//
-static void sect_with_horizontal_test_for_pin_results() {
-    const SkPoint pts[] = {
-        { -540000,    -720000 },
-        { -9.10000017e-05f, 9.99999996e-13f }
-    };
-    float x = sect_with_horizontal(pts, 0);
-    SkASSERT(is_between_unsorted(x, pts[0].fX, pts[1].fX));
-}
-#endif
-
 int SkLineClipper::ClipLine(const SkPoint pts[], const SkRect& clip, SkPoint lines[],
                             bool canCullToTheRight) {
-
-#ifdef SK_DEBUG
-    {
-        static bool gOnce;
-        if (!gOnce) {
-            sect_with_horizontal_test_for_pin_results();
-            gOnce = true;
-        }
-    }
-#endif
-
     int index0, index1;
 
     if (pts[0].fY < pts[1].fY) {
index c762760..8a3022c 100644 (file)
@@ -97,6 +97,20 @@ static void make_path_crbug364224_simplified(SkPath* path) {
     path->close();
 }
 
+static void test_sect_with_horizontal_needs_pinning() {
+    // Test that sect_with_horizontal in SkLineClipper.cpp needs to pin after computing the
+    // intersection.
+    SkPath path;
+    path.reset();
+    path.moveTo(-540000, -720000);
+    path.lineTo(-9.10000017e-05f, 9.99999996e-13f);
+    path.lineTo(1, 1);
+
+    // Without the pinning code in sect_with_horizontal(), this would assert in the lineclipper
+    SkPaint paint;
+    SkSurface::MakeRasterN32Premul(10, 10)->getCanvas()->drawPath(path, paint);
+}
+
 static void test_path_crbug364224() {
     SkPath path;
     SkPaint paint;
@@ -4228,6 +4242,7 @@ DEF_TEST(PathContains, reporter) {
 }
 
 DEF_TEST(Paths, reporter) {
+    test_sect_with_horizontal_needs_pinning();
     test_crbug_629455(reporter);
     test_fuzz_crbug_627414(reporter);
     test_path_crbug364224();