aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/RegionTest.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-05-02 16:09:21 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-05-02 16:09:21 +0000
commit7ab71baf65eb7c5ee5b0025953baa5395c0fc5d4 (patch)
treeb6e385ba34950d2b300250e76847413da7c9582f /tests/RegionTest.cpp
parent47ab504d49940d7c3dbd77d5b548929c369d7904 (diff)
add more tests around contains for rects and regions
git-svn-id: http://skia.googlecode.com/svn/trunk@3818 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests/RegionTest.cpp')
-rw-r--r--tests/RegionTest.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/RegionTest.cpp b/tests/RegionTest.cpp
index e85fca7645..23ac9b7ae9 100644
--- a/tests/RegionTest.cpp
+++ b/tests/RegionTest.cpp
@@ -52,16 +52,44 @@ static bool slow_contains(const SkRegion& outer, const SkRegion& inner) {
return outer == tmp;
}
+static bool slow_contains(const SkRegion& outer, const SkIRect& r) {
+ SkRegion tmp;
+ tmp.op(outer, SkRegion(r), SkRegion::kUnion_Op);
+ return outer == tmp;
+}
+
static bool slow_intersects(const SkRegion& outer, const SkRegion& inner) {
SkRegion tmp;
return tmp.op(outer, inner, SkRegion::kIntersect_Op);
}
+static void test_contains_iter(skiatest::Reporter* reporter, const SkRegion& rgn) {
+ SkRegion::Iterator iter(rgn);
+ while (!iter.done()) {
+ SkIRect r = iter.rect();
+ REPORTER_ASSERT(reporter, rgn.contains(r));
+ r.inset(-1, -1);
+ REPORTER_ASSERT(reporter, !rgn.contains(r));
+ iter.next();
+ }
+}
+
static void contains_proc(skiatest::Reporter* reporter,
const SkRegion& a, const SkRegion& b) {
+ // test rgn
bool c0 = a.contains(b);
bool c1 = slow_contains(a, b);
REPORTER_ASSERT(reporter, c0 == c1);
+
+ // test rect
+ SkIRect r = a.getBounds();
+ r.inset(r.width()/4, r.height()/4);
+ c0 = a.contains(r);
+ c1 = slow_contains(a, r);
+ REPORTER_ASSERT(reporter, c0 == c1);
+
+ test_contains_iter(reporter, a);
+ test_contains_iter(reporter, b);
}
static void intersects_proc(skiatest::Reporter* reporter,