wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 1 | #include "Test.h" |
| 2 | #include "SkRect.h" |
| 3 | |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 4 | static float make_zero() { |
| 5 | return sk_float_sin(0); |
| 6 | } |
| 7 | |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 8 | // Tests that hasValidCoordinates() will reject any rect with +/-inf values |
| 9 | // as one of its coordinates. |
| 10 | static void TestInfRect(skiatest::Reporter* reporter) { |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 11 | float zero = make_zero(); |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 12 | |
| 13 | SkRect rect = SkRect::MakeXYWH(10.0f, 10.0f, 100.0f, 100.0f); |
| 14 | REPORTER_ASSERT(reporter, rect.hasValidCoordinates()); |
| 15 | |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 16 | rect = SkRect::MakeXYWH(10.0f, 10.0f, 100.0f, 1.0f/zero); // Make 'inf' value without numeric_limits. |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 17 | REPORTER_ASSERT(reporter, !rect.hasValidCoordinates()); |
| 18 | |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 19 | rect = SkRect::MakeXYWH(10.0f, 10.0f, 1.0f/zero, 100.0f); |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 20 | REPORTER_ASSERT(reporter, !rect.hasValidCoordinates()); |
| 21 | |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 22 | rect = SkRect::MakeXYWH(1.0f/zero, 10.0f, 100.0f, 100.0f); |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 23 | REPORTER_ASSERT(reporter, !rect.hasValidCoordinates()); |
| 24 | |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 25 | rect = SkRect::MakeXYWH(10.0f, 1.0f/zero, 100.0f, 100.0f); |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 26 | REPORTER_ASSERT(reporter, !rect.hasValidCoordinates()); |
| 27 | |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 28 | rect = SkRect::MakeXYWH(10.0f, 10.0f, 100.0f, -1.0f/zero); |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 29 | REPORTER_ASSERT(reporter, !rect.hasValidCoordinates()); |
| 30 | |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 31 | rect = SkRect::MakeXYWH(10.0f, 10.0f, -1.0f/zero, 100.0f); |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 32 | REPORTER_ASSERT(reporter, !rect.hasValidCoordinates()); |
| 33 | |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 34 | rect = SkRect::MakeXYWH(-1.0f/zero, 10.0f, 100.0f, 100.0f); |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 35 | REPORTER_ASSERT(reporter, !rect.hasValidCoordinates()); |
| 36 | |
reed@google.com | 534240f | 2011-02-07 19:08:59 +0000 | [diff] [blame^] | 37 | rect = SkRect::MakeXYWH(10.0f, -1.0f/zero, 100.0f, 100.0f); |
wjmaclean@chromium.org | ff1ec2f | 2011-02-07 17:48:40 +0000 | [diff] [blame] | 38 | REPORTER_ASSERT(reporter, !rect.hasValidCoordinates()); |
| 39 | } |
| 40 | |
| 41 | // need tests for SkStrSearch |
| 42 | |
| 43 | #include "TestClassDef.h" |
| 44 | DEFINE_TESTCLASS("InfRect", InfRectTestClass, TestInfRect) |