From 05b6b4d746867a9fb02e14edfe1bf3685abeb813 Mon Sep 17 00:00:00 2001 From: Derek Sollenberger <djsollen@google.com> Date: Mon, 14 Mar 2011 11:20:24 -0400 Subject: Skia Merge (revision 922) Change-Id: I7ed57d10905d8bad6486a4d7410165eec1cc2b4f --- tests/InfRectTest.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tests/InfRectTest.cpp (limited to 'tests/InfRectTest.cpp') 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) -- cgit v1.1