package com.xtremelabs.robolectric.shadows; import android.graphics.Rect; import com.xtremelabs.robolectric.WithTestDefaultsRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(WithTestDefaultsRunner.class) public class RectTest { @Before public void setUp() { } @Test public void constructorSetsCoordinates() { Rect r = new Rect(1, 2, 3, 4); assertThat(r.left, is(1)); assertThat(r.top, is(2)); assertThat(r.right, is(3)); assertThat(r.bottom, is(4)); } @Test public void secondConstructorSetsCoordinates() { Rect existingRect = new Rect(1, 2, 3, 4); Rect r = new Rect(existingRect); assertThat(r.left, is(1)); assertThat(r.top, is(2)); assertThat(r.right, is(3)); assertThat(r.bottom, is(4)); } @Test public void width() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.width(), is(10)); } @Test public void height() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.height(), is(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), is(false)); } @Test public void equals() { Rect a = new Rect(1, 2, 3, 4); Rect b = new Rect(1, 2, 3, 4); assertThat(a.equals(b), is(true)); } @Test public void doesntContainPoint() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(11, 11), is(false)); } @Test public void containsPoint() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(5, 5), is(true)); } @Test public void doesntContainPointOnLeftEdge() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(0, 5), is(false)); } @Test public void doesntContainPointOnRightEdge() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(10, 5), is(false)); } @Test public void containsPointOnTopEdge() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(5, 0), is(true)); } @Test public void containsPointOnBottomEdge() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.contains(5, 10), is(true)); } @Test public void doesntContainRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(11, 11, 12, 12); assertThat(a.contains(b), is(false)); } @Test public void containsRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(8, 8, 9, 9); assertThat(a.contains(b), is(true)); } @Test public void containsEqualRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(0, 0, 10, 10); assertThat(a.contains(b), is(true)); } @Test public void intersectsButDoesntContainRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(5, 5, 15, 15); assertThat(a.contains(b), is(false)); } @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), is(false)); } @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), is(true)); } @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), is(false)); } @Test public void intersectRect() { Rect a = new Rect(0, 0, 10, 10); Rect b = new Rect(5, 0, 15, 10); assertThat(a.intersect(b), is(true)); } @Test public void intersectCoordinates() { Rect r = new Rect(0, 0, 10, 10); assertThat(r.intersect(5, 0, 15, 10), is(true)); } @Test public void setWithIntsSetsCoordinates() { Rect r = new Rect(); r.set(1, 2, 3, 4); assertThat(r.left, is(1)); assertThat(r.top, is(2)); assertThat(r.right, is(3)); assertThat(r.bottom, is(4)); } @Test public void setWithRectSetsCoordinates() { Rect rSrc = new Rect(1, 2, 3, 4); Rect r = new Rect(); r.set(rSrc); assertThat(r.left, is(1)); assertThat(r.top, is(2)); assertThat(r.right, is(3)); assertThat(r.bottom, is(4)); } @Test public void offsetModifiesRect() { Rect r = new Rect(1, 2, 3, 4); r.offset(10, 20); assertThat(r.left, is(11)); assertThat(r.top, is(22)); assertThat(r.right, is(13)); assertThat(r.bottom, is(24)); } }