aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/PathTest.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-10-24 21:04:04 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-10-24 21:04:04 +0000
commita8790debaab6c5e3b6a4a51d2cc91ae5aea9b2dd (patch)
treecc37fe637157a12d60029ce3211268ddfe55e6e4 /tests/PathTest.cpp
parent8ea78d83dc4e8243c16eedf8100a3987c54123fa (diff)
If a path is known to be nonfinite, don't forget that in our autobounds
helper. "Once a non-finite, always a non-finite". Inspired by crbug/157157 Review URL: https://codereview.appspot.com/6764047 git-svn-id: http://skia.googlecode.com/svn/trunk@6087 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests/PathTest.cpp')
-rw-r--r--tests/PathTest.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index cfad5d664e..d13f3f6332 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -25,6 +25,27 @@ static SkSurface* new_surface(int w, int h) {
return SkSurface::NewRaster(info, NULL);
}
+// Make sure we stay non-finite once we get there (unless we reset or rewind).
+static void test_addrect_isfinite(skiatest::Reporter* reporter) {
+ SkPath path;
+
+ path.addRect(SkRect::MakeWH(50, 100));
+ REPORTER_ASSERT(reporter, path.isFinite());
+
+ path.moveTo(0, 0);
+ path.lineTo(SK_ScalarInfinity, 42);
+ REPORTER_ASSERT(reporter, !path.isFinite());
+
+ path.addRect(SkRect::MakeWH(50, 100));
+ REPORTER_ASSERT(reporter, !path.isFinite());
+
+ path.reset();
+ REPORTER_ASSERT(reporter, path.isFinite());
+
+ path.addRect(SkRect::MakeWH(50, 100));
+ REPORTER_ASSERT(reporter, path.isFinite());
+}
+
// Inspired by http://ie.microsoft.com/testdrive/Performance/Chalkboard/
// which triggered an assert, from a tricky cubic. This test replicates that
// example, so we can ensure that we handle it (in SkEdge.cpp), and don't
@@ -1718,6 +1739,7 @@ static void TestPath(skiatest::Reporter* reporter) {
test_tricky_cubic(reporter);
test_arb_round_rect_is_convex(reporter);
test_arb_zero_rad_round_rect_is_rect(reporter);
+ test_addrect_isfinite(reporter);
}
#include "TestClassDef.h"