From 0e48edc5b208a752eb6e5599309b0133c8c1cb4c Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Thu, 15 Oct 2015 19:21:08 -0700 Subject: [PATCH] Make Rect::is_empty return true when either dimension is empty Instead of only returning true when both dimensions of a Rect are empty, is_empty should return true when either is empty. This makes Rect much easier to use, because applications rarely want to distinguish between situations where a Rect is empty in only one direction or both. Fixes #109. --- src/rect.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/rect.rs b/src/rect.rs index de183de..06ed4fa 100644 --- a/src/rect.rs +++ b/src/rect.rs @@ -174,7 +174,7 @@ impl Rect { } pub fn is_empty(&self) -> bool { - self.size == Size2D::zero() + self.size.width == Zero::zero() || self.size.height == Zero::zero() } } @@ -394,3 +394,15 @@ fn test_min_max_x_y() { assert!(r.max_x() == 40); assert!(r.min_x() == -10); } + +#[test] +fn test_is_empty() { + assert!(Rect::new(Point2D::new(0u32, 0u32), Size2D::new(0u32, 0u32)).is_empty()); + assert!(Rect::new(Point2D::new(0u32, 0u32), Size2D::new(10u32, 0u32)).is_empty()); + assert!(Rect::new(Point2D::new(0u32, 0u32), Size2D::new(0u32, 10u32)).is_empty()); + assert!(!Rect::new(Point2D::new(0u32, 0u32), Size2D::new(1u32, 1u32)).is_empty()); + assert!(Rect::new(Point2D::new(10u32, 10u32), Size2D::new(0u32, 0u32)).is_empty()); + assert!(Rect::new(Point2D::new(10u32, 10u32), Size2D::new(10u32, 0u32)).is_empty()); + assert!(Rect::new(Point2D::new(10u32, 10u32), Size2D::new(0u32, 10u32)).is_empty()); + assert!(!Rect::new(Point2D::new(10u32, 10u32), Size2D::new(1u32, 1u32)).is_empty()); +}