1#include "Test.h" 2#include "SkRect.h" 3 4#ifdef SK_SCALAR_IS_FLOAT 5static float make_zero() { 6 return sk_float_sin(0); 7} 8#endif 9 10static void check_invalid(skiatest::Reporter* reporter, 11 SkScalar l, SkScalar t, SkScalar r, SkScalar b) { 12 SkRect rect; 13 rect.set(l, t, r, b); 14 REPORTER_ASSERT(reporter, !rect.hasValidCoordinates()); 15} 16 17// Tests that hasValidCoordinates() will reject any rect with +/-inf values 18// as one of its coordinates. 19static void TestInfRect(skiatest::Reporter* reporter) { 20#ifdef SK_SCALAR_IS_FLOAT 21 float invalid = 1 / make_zero(); // infinity 22#else 23 SkFixed invalid = SK_FixedNaN; 24#endif 25 SkScalar small = SkIntToScalar(10); 26 SkScalar big = SkIntToScalar(100); 27 28 SkRect rect = SkRect::MakeXYWH(small, small, big, big); 29 REPORTER_ASSERT(reporter, rect.hasValidCoordinates()); 30 31 check_invalid(reporter, small, small, big, invalid); 32 check_invalid(reporter, small, small, invalid, big); 33 check_invalid(reporter, small, invalid, big, big); 34 check_invalid(reporter, invalid, small, big, big); 35 check_invalid(reporter, small, small, big, -invalid); 36 check_invalid(reporter, small, small, -invalid, big); 37 check_invalid(reporter, small, -invalid, big, big); 38 check_invalid(reporter, -invalid, small, big, big); 39} 40 41// need tests for SkStrSearch 42 43#include "TestClassDef.h" 44DEFINE_TESTCLASS("InfRect", InfRectTestClass, TestInfRect) 45