package org.robolectric.shadows; import android.graphics.Rect; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.TestRunners; import static org.assertj.core.api.Assertions.assertThat; @RunWith(TestRunners.MultiApiSelfTest.class) public class ShadowRectTest { @Before public void setUp() { } @Test public void constructorSetsCoordinates() { Rect r = new Rect(1, 2, 3, 4); assertThat(r.left).isEqualTo(1); assertThat(r.top).isEqualTo(2); assertThat(r.right).isEqualTo(3); assertThat(r.bottom).isEqualTo(4); } @Test public void secondConstructorSetsCoordinates() { Rect existingRect = new Rect(1, 2, 3, 4); Rect r = new Rect(existingRect); assertThat(r.left).isEqualTo(1); assertThat(r.top).isEqualTo(2); assertThat(r.right).isEqualTo(3); assertThat(r.bottom).isEqualTo(4); } @Test public void width() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.width()).isEqualTo(10); } @Test public void height() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.height()).isEqualTo(10); } @Test public void doesntEqual() { Rect a = new Rect(1, 2, 3, 4); Rect b = new Rect(2, 3, 4, 5); assertThat(a.equals(b)).isFalse(); } @Test public void equals() { Rect a = new Rect(1, 2, 3, 4); Rect b = new Rect(1, 2, 3, 4); assertThat(a.equals(b)).isTrue(); } @Test public void doesntContainPoint() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(11, 11)).isFalse(); } @Test public void containsPoint() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(5, 5)).isTrue(); } @Test public void doesntContainPointOnLeftEdge() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(0, 10)).isFalse(); } @Test public void doesntContainPointOnRightEdge() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(10, 5)).isFalse(); } @Test public void containsPointOnTopEdge() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(5, 0)).isTrue(); } @Test public void containsPointOnBottomEdge() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(5, 10)).isFalse(); } @Test public void doesntContainRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(11, 11, 12, 12); assertThat(a.contains(b)).isFalse(); } @Test public void containsRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(8, 8, 9, 9); assertThat(a.contains(b)).isTrue(); } @Test public void containsEqualRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(0, 0, 10, 10); assertThat(a.contains(b)).isTrue(); } @Test public void intersectsButDoesntContainRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(5, 5, 15, 15); assertThat(a.contains(b)).isFalse(); } @Test public void doesntIntersect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(11, 11, 21, 21); assertThat(Rect.intersects(a, b)).isFalse(); } @Test public void intersects() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(5, 0, 15, 10); assertThat(Rect.intersects(a, b)).isTrue(); } @Test public void almostIntersects() { Rect a = new Rect(3, 0, 4, 2); Rect b = new Rect(1, 0, 3, 1); assertThat(Rect.intersects(a, b)).isFalse(); } @Test public void intersectRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(5, 0, 15, 10); assertThat(a.intersect(b)).isTrue(); } @Test public void intersectCoordinates() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.intersect(5, 0, 15, 10)).isTrue(); } @Test public void setWithIntsSetsCoordinates() { Rect r = new Rect(); r.set(1, 2, 3, 4); assertThat(r.left).isEqualTo(1); assertThat(r.top).isEqualTo(2); assertThat(r.right).isEqualTo(3); assertThat(r.bottom).isEqualTo(4); } @Test public void setWithRectSetsCoordinates() { Rect rSrc = new Rect(1, 2, 3, 4); Rect r = new Rect(); r.set(rSrc); assertThat(r.left).isEqualTo(1); assertThat(r.top).isEqualTo(2); assertThat(r.right).isEqualTo(3); assertThat(r.bottom).isEqualTo(4); } @Test public void offsetModifiesRect() { Rect r = new Rect(1, 2, 3, 4); r.offset(10, 20); assertThat(r.left).isEqualTo(11); assertThat(r.top).isEqualTo(22); assertThat(r.right).isEqualTo(13); assertThat(r.bottom).isEqualTo(24); } }