aboutsummaryrefslogtreecommitdiffstats
path: root/tests/InfRectTest.cpp
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2011-03-14 11:20:24 -0400
committerDerek Sollenberger <djsollen@google.com>2011-03-14 16:33:36 -0400
commit05b6b4d746867a9fb02e14edfe1bf3685abeb813 (patch)
tree34b121f598d1693c014df48ee70bffa382b0cc23 /tests/InfRectTest.cpp
parent6210a7c68844602ee390bcce61dbb637910a3c6b (diff)
downloadexternal_skia-05b6b4d746867a9fb02e14edfe1bf3685abeb813.zip
external_skia-05b6b4d746867a9fb02e14edfe1bf3685abeb813.tar.gz
external_skia-05b6b4d746867a9fb02e14edfe1bf3685abeb813.tar.bz2
Skia Merge (revision 922)
Change-Id: I7ed57d10905d8bad6486a4d7410165eec1cc2b4f
Diffstat (limited to 'tests/InfRectTest.cpp')
-rw-r--r--tests/InfRectTest.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/InfRectTest.cpp b/tests/InfRectTest.cpp
new file mode 100644
index 0000000..1e15023
--- /dev/null
+++ b/tests/InfRectTest.cpp
@@ -0,0 +1,44 @@
+#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) {
+#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(small, small, big, big);
+ 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
+
+#include "TestClassDef.h"
+DEFINE_TESTCLASS("InfRect", InfRectTestClass, TestInfRect)