diff options
-rw-r--r-- | common/rect.h | 4 | ||||
-rw-r--r-- | test/common/rect.h | 20 |
2 files changed, 21 insertions, 3 deletions
diff --git a/common/rect.h b/common/rect.h index d01d910c3e..a0ccd07f90 100644 --- a/common/rect.h +++ b/common/rect.h @@ -127,14 +127,14 @@ struct Rect { } /** - * Check if the given rect is _fully_ contained inside this rectangle. + * Check if the given rect is contained inside this rectangle. * * @param r The rectangle to check * * @return true if the given rect is inside, false otherwise */ bool contains(const Rect &r) const { - return (left < r.left) && (right > r.right) && (top < r.top) && (bottom > r.bottom); + return (left <= r.left) && (r.right <= right) && (top <= r.top) && (r.bottom <= bottom); } /** diff --git a/test/common/rect.h b/test/common/rect.h index 07353f7aea..ee709de482 100644 --- a/test/common/rect.h +++ b/test/common/rect.h @@ -26,6 +26,24 @@ class RectTestSuite : public CxxTest::TestSuite TS_ASSERT( !Common::Rect(0, 0, 1, 1).intersects(Common::Rect(1, 1, 2, 2)) ); } + void test_contains( void ) + { + Common::Rect r0; + Common::Rect r1(0, 0, 1, 1); + Common::Rect r2(0, 0, 2, 2); + TS_ASSERT( !r0.contains(r1) ); + TS_ASSERT( !r0.contains(r2) ); + TS_ASSERT( !r1.contains(r2) ); + TS_ASSERT( r0.contains(r0) ); + + TS_ASSERT( r1.contains(r0) ); + TS_ASSERT( r1.contains(r1) ); + + TS_ASSERT( r2.contains(r0) ); + TS_ASSERT( r2.contains(r1) ); + TS_ASSERT( r2.contains(r2) ); + } + void test_extend( void ) { Common::Rect r0; @@ -33,7 +51,7 @@ class RectTestSuite : public CxxTest::TestSuite Common::Rect r2(0, 0, 2, 2); TS_ASSERT( !r0.contains(r1) ); r0.extend(r1); -// TS_ASSERT( r0.contains(r1) ); + TS_ASSERT( r0.contains(r1) ); TS_ASSERT_EQUALS(r0.top, 0); TS_ASSERT_EQUALS(r0.left, 0); TS_ASSERT_EQUALS(r0.bottom, 1); |