update to work correctly for scalar == fixed or float



git-svn-id: http://skia.googlecode.com/svn/trunk@780 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/BlitRowTest.cpp b/tests/BlitRowTest.cpp
index 91d6b94..d18cb8a 100644
--- a/tests/BlitRowTest.cpp
+++ b/tests/BlitRowTest.cpp
@@ -207,7 +207,8 @@
     SkBitmap srcBM;
     srcBM.setConfig(SkBitmap::kARGB_8888_Config, W, H);
     srcBM.allocPixels();
-    SkRect srcR = { 0, 0, srcBM.width(), srcBM.height() };
+    SkRect srcR = {
+        0, 0, SkIntToScalar(srcBM.width()), SkIntToScalar(srcBM.height()) };
 
     // cons up a mesh to draw the bitmap with
     Mesh mesh(srcBM, &paint);
diff --git a/tests/ClipCubicTest.cpp b/tests/ClipCubicTest.cpp
index 905b733..e38a22f 100644
--- a/tests/ClipCubicTest.cpp
+++ b/tests/ClipCubicTest.cpp
@@ -7,10 +7,10 @@
 static void PrintCurve(const char *name, const SkPoint crv[4]) {
     printf("%s: %.10g, %.10g, %.10g, %.10g, %.10g, %.10g, %.10g, %.10g\n",
             name,
-            crv[0].fX, crv[0].fY,
-            crv[1].fX, crv[1].fY,
-            crv[2].fX, crv[2].fY,
-            crv[3].fX, crv[3].fY);
+            (float)crv[0].fX, (float)crv[0].fY,
+            (float)crv[1].fX, (float)crv[1].fY,
+            (float)crv[2].fX, (float)crv[2].fY,
+            (float)crv[3].fX, (float)crv[3].fY);
 
 }
 
@@ -46,17 +46,17 @@
 
 static void TestCubicClipping(skiatest::Reporter* reporter) {
     static SkPoint crv[4] = {
-        { SkFloatToScalar(0), SkFloatToScalar(0)  },
-        { SkFloatToScalar(2), SkFloatToScalar(3)  },
-        { SkFloatToScalar(1), SkFloatToScalar(10) },
-        { SkFloatToScalar(4), SkFloatToScalar(12) }
+        { SkIntToScalar(0), SkIntToScalar(0)  },
+        { SkIntToScalar(2), SkIntToScalar(3)  },
+        { SkIntToScalar(1), SkIntToScalar(10) },
+        { SkIntToScalar(4), SkIntToScalar(12) }
     };
 
     SkCubicClipper clipper;
     SkPoint clipped[4], shouldbe[4];
     SkIRect clipRect;
     bool success;
-    const float tol = 1e-4;
+    const float tol = SkFloatToScalar(1e-4);
 
     // Test no clip, with plenty of room.
     clipRect.set(-2, -2, 6, 14);
diff --git a/tests/InfRectTest.cpp b/tests/InfRectTest.cpp
index bcdbf4a..1e15023 100644
--- a/tests/InfRectTest.cpp
+++ b/tests/InfRectTest.cpp
@@ -1,41 +1,41 @@
 #include "Test.h"
 #include "SkRect.h"
 
+#ifdef SK_SCALAR_IS_FLOAT
 static float make_zero() {
     return sk_float_sin(0);
 }
+#endif
+
+static void check_invalid(skiatest::Reporter* reporter,
+                          SkScalar l, SkScalar t, SkScalar r, SkScalar b) {
+    SkRect rect;
+    rect.set(l, t, r, b);
+    REPORTER_ASSERT(reporter, !rect.hasValidCoordinates());
+}
 
 // Tests that hasValidCoordinates() will reject any rect with +/-inf values
 // as one of its coordinates.
 static void TestInfRect(skiatest::Reporter* reporter) {
-    float zero = make_zero();
+#ifdef SK_SCALAR_IS_FLOAT
+    float invalid = 1 / make_zero();    // infinity
+#else
+    SkFixed invalid = SK_FixedNaN;
+#endif
+    SkScalar small = SkIntToScalar(10);
+    SkScalar big = SkIntToScalar(100);
 
-    SkRect rect = SkRect::MakeXYWH(10.0f, 10.0f, 100.0f, 100.0f);
+    SkRect rect = SkRect::MakeXYWH(small, small, big, big);
     REPORTER_ASSERT(reporter, rect.hasValidCoordinates());
 
-    rect = SkRect::MakeXYWH(10.0f, 10.0f, 100.0f, 1.0f/zero); // Make 'inf' value without numeric_limits.
-    REPORTER_ASSERT(reporter, !rect.hasValidCoordinates());
-
-    rect = SkRect::MakeXYWH(10.0f, 10.0f, 1.0f/zero, 100.0f);
-    REPORTER_ASSERT(reporter, !rect.hasValidCoordinates());
-
-    rect = SkRect::MakeXYWH(1.0f/zero, 10.0f, 100.0f, 100.0f);
-    REPORTER_ASSERT(reporter, !rect.hasValidCoordinates());
-
-    rect = SkRect::MakeXYWH(10.0f, 1.0f/zero, 100.0f, 100.0f);
-    REPORTER_ASSERT(reporter, !rect.hasValidCoordinates());
-
-    rect = SkRect::MakeXYWH(10.0f, 10.0f, 100.0f, -1.0f/zero);
-    REPORTER_ASSERT(reporter, !rect.hasValidCoordinates());
-
-    rect = SkRect::MakeXYWH(10.0f, 10.0f, -1.0f/zero, 100.0f);
-    REPORTER_ASSERT(reporter, !rect.hasValidCoordinates());
-
-    rect = SkRect::MakeXYWH(-1.0f/zero, 10.0f, 100.0f, 100.0f);
-    REPORTER_ASSERT(reporter, !rect.hasValidCoordinates());
-
-    rect = SkRect::MakeXYWH(10.0f, -1.0f/zero, 100.0f, 100.0f);
-    REPORTER_ASSERT(reporter, !rect.hasValidCoordinates());
+    check_invalid(reporter, small, small, big, invalid);
+    check_invalid(reporter, small, small, invalid, big);
+    check_invalid(reporter, small, invalid, big, big);
+    check_invalid(reporter, invalid, small, big, big);
+    check_invalid(reporter, small, small, big, -invalid);
+    check_invalid(reporter, small, small, -invalid, big);
+    check_invalid(reporter, small, -invalid, big, big);
+    check_invalid(reporter, -invalid, small, big, big);
 }
 
 // need tests for SkStrSearch
diff --git a/tests/MathTest.cpp b/tests/MathTest.cpp
index 9aed9f9..493691e 100644
--- a/tests/MathTest.cpp
+++ b/tests/MathTest.cpp
@@ -146,9 +146,11 @@
     }
 }
 
+#ifdef SK_SCALAR_IS_FLOAT
 static float make_zero() {
     return sk_float_sin(0);
 }
+#endif
 
 static void unittest_isfinite(skiatest::Reporter* reporter) {
 #ifdef SK_SCALAR_IS_FLOAT
@@ -156,28 +158,24 @@
     float inf = 1.0 / make_zero();
     float big = 3.40282e+038;
 
-    REPORTER_ASSERT(reporter,  SkScalarIsNaN(nan));
     REPORTER_ASSERT(reporter, !SkScalarIsNaN(inf));
+    REPORTER_ASSERT(reporter, !SkScalarIsNaN(-inf));
+    REPORTER_ASSERT(reporter, !SkScalarIsFinite(inf));
+    REPORTER_ASSERT(reporter, !SkScalarIsFinite(-inf));
+#else
+    SkFixed nan = SK_FixedNaN;
+    SkFixed big = SK_FixedMax;
+#endif
+
+    REPORTER_ASSERT(reporter,  SkScalarIsNaN(nan));
     REPORTER_ASSERT(reporter, !SkScalarIsNaN(big));
     REPORTER_ASSERT(reporter, !SkScalarIsNaN(-big));
     REPORTER_ASSERT(reporter, !SkScalarIsNaN(0));
-
+    
     REPORTER_ASSERT(reporter, !SkScalarIsFinite(nan));
-    REPORTER_ASSERT(reporter, !SkScalarIsFinite(inf));
     REPORTER_ASSERT(reporter,  SkScalarIsFinite(big));
     REPORTER_ASSERT(reporter,  SkScalarIsFinite(-big));
     REPORTER_ASSERT(reporter,  SkScalarIsFinite(0));
-#else
-    REPORTER_ASSERT(reporter,  SkScalarIsNaN(0x80000000));
-    REPORTER_ASSERT(reporter, !SkScalarIsNaN(0x7FFFFFFF));
-    REPORTER_ASSERT(reporter, !SkScalarIsNaN(0x80000001));
-    REPORTER_ASSERT(reporter, !SkScalarIsNaN(0));
-
-    REPORTER_ASSERT(reporter, !SkScalarIsFinite(0x80000000));
-    REPORTER_ASSERT(reporter,  SkScalarIsFinite(0x7FFFFFFF));
-    REPORTER_ASSERT(reporter,  SkScalarIsFinite(0x80000001));
-    REPORTER_ASSERT(reporter,  SkScalarIsFinite(0));
-#endif
 }
 
 #endif
diff --git a/tests/MatrixTest.cpp b/tests/MatrixTest.cpp
index 052687d..49a98c2 100644
--- a/tests/MatrixTest.cpp
+++ b/tests/MatrixTest.cpp
@@ -5,7 +5,7 @@
 #ifdef SK_SCALAR_IS_FLOAT
     const float tolerance = 0.000005f;
 #else
-    const int32_t tolerance = 3;
+    const int32_t tolerance = 8;
 #endif
 
     return SkScalarAbs(a - b) <= tolerance;
@@ -14,7 +14,7 @@
 static bool nearly_equal(const SkMatrix& a, const SkMatrix& b) {
     for (int i = 0; i < 9; i++) {
         if (!nearly_equal_scalar(a[i], b[i])) {
-            printf("not equal %g %g\n", a[i], b[i]);
+            printf("not equal %g %g\n", (float)a[i], (float)b[i]);
             return false;
         }
     }
diff --git a/tests/PaintTest.cpp b/tests/PaintTest.cpp
index 4e6c8b9..5b19090 100644
--- a/tests/PaintTest.cpp
+++ b/tests/PaintTest.cpp
@@ -8,10 +8,14 @@
     SkPath path, stroke;
     SkPaint paint;
 
-    path.moveTo(460.2881309415525, 303.250847066498);
-    path.cubicTo(463.36378422175284, 302.1169735073363,
-                 456.32239330810046, 304.720354932878,
-                 453.15255460013304, 305.788586869862);
+    path.moveTo(SkFloatToFixed(460.2881309415525f),
+                SkFloatToFixed(303.250847066498));
+    path.cubicTo(SkFloatToFixed(463.36378422175284),
+                 SkFloatToFixed(302.1169735073363),
+                 SkFloatToFixed(456.32239330810046),
+                 SkFloatToFixed(304.720354932878),
+                 SkFloatToFixed(453.15255460013304),
+                 SkFloatToFixed(305.788586869862));
     
     SkRect fillR, strokeR;
     fillR = path.getBounds();