add more tests around contains for rects and regions
git-svn-id: http://skia.googlecode.com/svn/trunk@3818 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/RegionTest.cpp b/tests/RegionTest.cpp
index e85fca7..23ac9b7 100644
--- a/tests/RegionTest.cpp
+++ b/tests/RegionTest.cpp
@@ -52,16 +52,44 @@
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,