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/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