Add a utility function to save path test code size

Bug: skia:
Change-Id: Ie3ec5a57bacaabac544a2b01ab33fd665203031b
Reviewed-on: https://skia-review.googlesource.com/46841
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index 77f47be..75e86e3 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -126,50 +126,46 @@
     canvas->drawPath(path, paint);
 }
 
+static void test_draw_AA_path(int width, int height, const SkPath& path) {
+    auto surface(SkSurface::MakeRasterN32Premul(width, height));
+    SkCanvas* canvas = surface->getCanvas();
+    SkPaint paint;
+    paint.setAntiAlias(true);
+    canvas->drawPath(path, paint);
+}
+
 // this is a unit test instead of a GM because it doesn't draw anything
 static void test_fuzz_crbug_638223() {
-    auto surface(SkSurface::MakeRasterN32Premul(250, 250));
-    SkCanvas* canvas = surface->getCanvas();
     SkPath path;
     path.moveTo(SkBits2Float(0x47452a00), SkBits2Float(0x43211d01));  // 50474, 161.113f
     path.conicTo(SkBits2Float(0x401c0000), SkBits2Float(0x40680000),
         SkBits2Float(0x02c25a81), SkBits2Float(0x981a1fa0),
         SkBits2Float(0x6bf9abea));  // 2.4375f, 3.625f, 2.85577e-37f, -1.992e-24f, 6.03669e+26f
-    SkPaint paint;
-    paint.setAntiAlias(true);
-    canvas->drawPath(path, paint);
+    test_draw_AA_path(250, 250, path);
 }
 
 static void test_fuzz_crbug_643933() {
-    auto surface(SkSurface::MakeRasterN32Premul(250, 250));
-    SkCanvas* canvas = surface->getCanvas();
-    SkPaint paint;
-    paint.setAntiAlias(true);
     SkPath path;
     path.moveTo(0, 0);
     path.conicTo(SkBits2Float(0x002001f2), SkBits2Float(0x4161ffff),  // 2.93943e-39f, 14.125f
             SkBits2Float(0x49f7224d), SkBits2Float(0x45eec8df), // 2.02452e+06f, 7641.11f
             SkBits2Float(0x721aee0c));  // 3.0687e+30f
-    canvas->drawPath(path, paint);
+    test_draw_AA_path(250, 250, path);
     path.reset();
     path.moveTo(0, 0);
     path.conicTo(SkBits2Float(0x00007ff2), SkBits2Float(0x4169ffff),  // 4.58981e-41f, 14.625f
         SkBits2Float(0x43ff2261), SkBits2Float(0x41eeea04),  // 510.269f, 29.8643f
         SkBits2Float(0x5d06eff8));  // 6.07704e+17f
-    canvas->drawPath(path, paint);
+    test_draw_AA_path(250, 250, path);
 }
 
 static void test_fuzz_crbug_647922() {
-    auto surface(SkSurface::MakeRasterN32Premul(250, 250));
-    SkCanvas* canvas = surface->getCanvas();
-    SkPaint paint;
-    paint.setAntiAlias(true);
     SkPath path;
     path.moveTo(0, 0);
     path.conicTo(SkBits2Float(0x00003939), SkBits2Float(0x42487fff),  // 2.05276e-41f, 50.125f
             SkBits2Float(0x48082361), SkBits2Float(0x4408e8e9),  // 139406, 547.639f
             SkBits2Float(0x4d1ade0f));  // 1.6239e+08f
-    canvas->drawPath(path, paint);
+    test_draw_AA_path(250, 250, path);
 }
 
 static void test_fuzz_crbug_662780() {
@@ -201,10 +197,6 @@
 }
 
 static void test_mask_overflow() {
-    auto surface(SkSurface::MakeRasterN32Premul(500, 500));
-    SkCanvas* canvas = surface->getCanvas();
-    SkPaint paint;
-    paint.setAntiAlias(true);
     SkPath path;
     path.moveTo(SkBits2Float(0x43e28000), SkBits2Float(0x43aa8000));  // 453, 341
     path.lineTo(SkBits2Float(0x43de6000), SkBits2Float(0x43aa8000));  // 444.75f, 341
@@ -215,21 +207,17 @@
     path.lineTo(SkBits2Float(0x43da8000), SkBits2Float(0x43b18000));  // 437, 355
     path.lineTo(SkBits2Float(0x43e28000), SkBits2Float(0x43b18000));  // 453, 355
     path.lineTo(SkBits2Float(0x43e28000), SkBits2Float(0x43aa8000));  // 453, 341
-    canvas->drawPath(path, paint);
+    test_draw_AA_path(500, 500, path);
 }
 
 static void test_fuzz_crbug_668907() {
-    auto surface(SkSurface::MakeRasterN32Premul(400, 500));
-    SkCanvas* canvas = surface->getCanvas();
-    SkPaint paint;
-    paint.setAntiAlias(true);
     SkPath path;
     path.moveTo(SkBits2Float(0x46313741), SkBits2Float(0x3b00e540));  // 11341.8f, 0.00196679f
     path.quadTo(SkBits2Float(0x41410041), SkBits2Float(0xc1414141), SkBits2Float(0x41414141),
             SkBits2Float(0x414100ff));  // 12.0626f, -12.0784f, 12.0784f, 12.0627f
     path.lineTo(SkBits2Float(0x46313741), SkBits2Float(0x3b00e540));  // 11341.8f, 0.00196679f
     path.close();
-    canvas->drawPath(path, paint);
+    test_draw_AA_path(400, 500, path);
 }
 
 /**
@@ -259,16 +247,12 @@
 }
 
 static void test_path_crbugskia5995() {
-    auto surface(SkSurface::MakeRasterN32Premul(500, 500));
-    SkCanvas* canvas = surface->getCanvas();
-    SkPaint paint;
-    paint.setAntiAlias(true);
     SkPath path;
     path.moveTo(SkBits2Float(0x40303030), SkBits2Float(0x3e303030));  // 2.75294f, 0.172059f
     path.quadTo(SkBits2Float(0x41d63030), SkBits2Float(0x30303030), SkBits2Float(0x41013030),
             SkBits2Float(0x00000000));  // 26.7735f, 6.40969e-10f, 8.07426f, 0
     path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000));  // 0, 0
-    canvas->drawPath(path, paint);
+    test_draw_AA_path(500, 500, path);
 }
 
 static void make_path0(SkPath* path) {
@@ -426,11 +410,7 @@
     path.cubicTo(-2.35893e+08f, -4.21044e+08f,
                  -2.38991e+08f, -4.26573e+08f,
                  -2.41016e+08f, -4.30188e+08f);
-
-    SkPaint paint;
-    paint.setAntiAlias(true);
-    auto surface(SkSurface::MakeRasterN32Premul(84, 88));
-    surface->getCanvas()->drawPath(path, paint);
+    test_draw_AA_path(84, 88, path);
 }
 
 static void test_bad_cubic_crbug229478() {
@@ -545,16 +525,11 @@
 // 24 interations (instead of 16).
 static void test_crbug_170666() {
     SkPath path;
-    SkPaint paint;
-    paint.setAntiAlias(true);
-
-    auto surface(SkSurface::MakeRasterN32Premul(1000, 1000));
-
     build_path_simple_170666(path);
-    surface->getCanvas()->drawPath(path, paint);
+    test_draw_AA_path(1000, 1000, path);
 
     build_path_170666(path);
-    surface->getCanvas()->drawPath(path, paint);
+    test_draw_AA_path(1000, 1000, path);
 }
 
 
@@ -759,12 +734,7 @@
     SkPath path;
     path.moveTo(0, 0);
     path.conicTo(3.58732e-43f, 2.72084f, 3.00392f, 3.00392f, 8.46e+37f);
-
-    SkPaint paint;
-    paint.setAntiAlias(true);
-
-    auto surf = SkSurface::MakeRasterN32Premul(100, 100);
-    surf->getCanvas()->drawPath(path, paint);
+    test_draw_AA_path(100, 100, path);
 }
 
 // Inspired by http://ie.microsoft.com/testdrive/Performance/Chalkboard/
@@ -782,11 +752,7 @@
     SkPath path;
     path.moveTo(pts[0]);
     path.cubicTo(pts[1], pts[2], pts[3]);
-
-    SkPaint paint;
-    paint.setAntiAlias(true);
-
-    SkSurface::MakeRasterN32Premul(19, 130)->getCanvas()->drawPath(path, paint);
+    test_draw_AA_path(19, 130, path);
 }
 
 // Inspired by http://code.google.com/p/chromium/issues/detail?id=141651
@@ -4417,11 +4383,7 @@
                  SkBits2Float(0x423fcdcd), SkBits2Float(0x40ed9341));
 //  AKA: cubicTo(-4.31596e+08f, -4.31602e+08f, -4.31602e+08f, -4.31602e+08f, 47.951f, 7.42423f);
     path.lineTo(0, 0);
-
-    auto surface = SkSurface::MakeRasterN32Premul(100, 100);
-    SkPaint paint;
-    paint.setAntiAlias(true);
-    surface->getCanvas()->drawPath(path, paint);
+    test_draw_AA_path(100, 100, path);
 }
 
 static void test_fuzz_crbug_662952(skiatest::Reporter* reporter) {
@@ -4470,11 +4432,7 @@
     path.lineTo(SkBits2Float(0x37373737), SkBits2Float(0x37373737));  // 1.09205e-05f, 1.09205e-05f
     path.lineTo(SkBits2Float(0x37373745), SkBits2Float(0x0001b800));  // 1.09205e-05f, 1.57842e-40f
     path.close();
-
-    auto surface = SkSurface::MakeRasterN32Premul(100, 100);
-    SkPaint paint;
-    paint.setAntiAlias(true);
-    surface->getCanvas()->drawPath(path, paint);
+    test_draw_AA_path(100, 100, path);
 }
 
 #if !defined(SK_SUPPORT_LEGACY_DELTA_AA)
@@ -4511,11 +4469,7 @@
                 break;
         }
     }
-
-    auto surface = SkSurface::MakeRasterN32Premul(250, 125);
-    SkPaint paint;
-    paint.setAntiAlias(true);
-    surface->getCanvas()->drawPath(path, paint);
+    test_draw_AA_path(250, 125, path);
 }
 
 static void test_skbug_7015() {
@@ -4528,11 +4482,7 @@
             SkBits2Float(0x4388d8f6), SkBits2Float(0x43921604),
             SkBits2Float(0x4388c000), SkBits2Float(0x43947c08));
     path.close();
-
-    auto surface = SkSurface::MakeRasterN32Premul(500, 500);
-    SkPaint paint;
-    paint.setAntiAlias(true);
-    surface->getCanvas()->drawPath(path, paint);
+    test_draw_AA_path(500, 500, path);
 }
 
 #endif