regression unittest for the fix in rev. 3558 (handling nan in antihairpaths)
authorreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 30 Mar 2012 17:43:33 +0000 (17:43 +0000)
committerreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 30 Mar 2012 17:43:33 +0000 (17:43 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@3562 2bbb7eff-a529-9590-31e7-b0007b416f81

tests/DrawBitmapRectTest.cpp

index 843feb5..e5b4463 100644 (file)
@@ -9,6 +9,28 @@
 #include "SkBitmap.h"
 #include "SkCanvas.h"
 
+static void test_nan_antihair(skiatest::Reporter* reporter) {
+    SkBitmap bm;
+    bm.setConfig(SkBitmap::kARGB_8888_Config, 20, 20);
+    bm.allocPixels();
+
+    SkCanvas canvas(bm);
+
+    SkPath path;
+    path.moveTo(0, 0);
+    path.lineTo(10, SK_ScalarNaN);
+    
+    SkPaint paint;
+    paint.setAntiAlias(true);
+    paint.setStyle(SkPaint::kStroke_Style);
+    
+    // before our fix to SkScan_Antihair.cpp to check for integral NaN (0x800...)
+    // this would trigger an assert/crash.
+    //
+    // see rev. 3558
+    canvas.drawPath(path, paint);
+}
+
 static bool check_for_all_zeros(const SkBitmap& bm) {
     SkAutoLockPixels alp(bm);
 
@@ -48,6 +70,8 @@ static void TestDrawBitmapRect(skiatest::Reporter* reporter) {
 
     // ensure that we draw nothing if srcR does not intersect the bitmap
     REPORTER_ASSERT(reporter, check_for_all_zeros(dst));
+
+    test_nan_antihair(reporter);
 }
 
 #include "TestClassDef.h"