14aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlkepackage com.xtremelabs.robolectric.shadows;
24aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
3877e4c834fc5505b6f6cbd8411cdc2f7c6e5c4ddJoe Moore and Tyler Schultzimport android.graphics.Rect;
4877e4c834fc5505b6f6cbd8411cdc2f7c6e5c4ddJoe Moore and Tyler Schultzimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
54aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlkeimport org.junit.Before;
64aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlkeimport org.junit.Test;
74aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlkeimport org.junit.runner.RunWith;
84aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
9877e4c834fc5505b6f6cbd8411cdc2f7c6e5c4ddJoe Moore and Tyler Schultzimport static org.hamcrest.CoreMatchers.is;
10877e4c834fc5505b6f6cbd8411cdc2f7c6e5c4ddJoe Moore and Tyler Schultzimport static org.junit.Assert.assertThat;
114aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
124aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke@RunWith(WithTestDefaultsRunner.class)
134aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlkepublic class RectTest {
144aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    @Before
154aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    public void setUp() {
164aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    }
174aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
184aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
194aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void constructorSetsCoordinates() {
204aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect r = new Rect(1, 2, 3, 4);
214aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.left, is(1));
224aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.top, is(2));
234aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.right, is(3));
244aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.bottom, is(4));
254aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
262a61662cdc430c05abec421965587fdd2b531419James Brechtel
272a61662cdc430c05abec421965587fdd2b531419James Brechtel	@Test
282a61662cdc430c05abec421965587fdd2b531419James Brechtel	public void secondConstructorSetsCoordinates() {
292a61662cdc430c05abec421965587fdd2b531419James Brechtel		Rect existingRect = new Rect(1, 2, 3, 4);
302a61662cdc430c05abec421965587fdd2b531419James Brechtel    Rect r = new Rect(existingRect);
312a61662cdc430c05abec421965587fdd2b531419James Brechtel		assertThat(r.left, is(1));
322a61662cdc430c05abec421965587fdd2b531419James Brechtel		assertThat(r.top, is(2));
332a61662cdc430c05abec421965587fdd2b531419James Brechtel		assertThat(r.right, is(3));
342a61662cdc430c05abec421965587fdd2b531419James Brechtel		assertThat(r.bottom, is(4));
352a61662cdc430c05abec421965587fdd2b531419James Brechtel	}
362a61662cdc430c05abec421965587fdd2b531419James Brechtel
374aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
384aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    @Test
394aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    public void width() {
404aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    	Rect r = new Rect(0, 0, 10, 10);
414aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke        assertThat(r.width(), is(10));
424aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    }
434aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
444aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    @Test
454aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    public void height() {
464aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    	Rect r = new Rect(0, 0, 10, 10);
474aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke        assertThat(r.height(), is(10));
484aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke    }
494aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
504aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
514aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void doesntEqual() {
524aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(1, 2, 3, 4);
534aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(2, 3, 4, 5);
544aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(a.equals(b), is(false));
554aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
564aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
574aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
584aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void equals() {
594aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(1, 2, 3, 4);
604aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(1, 2, 3, 4);
614aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(a.equals(b), is(true));
624aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
634aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
644aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
654aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void doesntContainPoint() {
664aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect r = new Rect(0, 0, 10, 10);
674aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.contains(11, 11), is(false));
684aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
694aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
704aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
714aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void containsPoint() {
724aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect r = new Rect(0, 0, 10, 10);
734aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.contains(5, 5), is(true));
744aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
754aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
764aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
774aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void doesntContainPointOnLeftEdge() {
784aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect r = new Rect(0, 0, 10, 10);
794aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.contains(0, 5), is(false));
804aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
814aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
824aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
834aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void doesntContainPointOnRightEdge() {
844aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect r = new Rect(0, 0, 10, 10);
854aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.contains(10, 5), is(false));
864aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
874aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
884aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
894aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void containsPointOnTopEdge() {
904aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect r = new Rect(0, 0, 10, 10);
914aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.contains(5, 0), is(true));
924aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
934aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
944aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
954aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void containsPointOnBottomEdge() {
964aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect r = new Rect(0, 0, 10, 10);
974aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.contains(5, 10), is(true));
984aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
994aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
1004aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
1014aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void doesntContainRect() {
1024aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(0, 0, 10, 10);
1034aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(11, 11, 12, 12);
1044aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(a.contains(b), is(false));
1054aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
1064aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
1074aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
1084aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void containsRect() {
1094aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(0, 0, 10, 10);
1104aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(8, 8, 9, 9);
1114aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(a.contains(b), is(true));
1124aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
1134aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
1144aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
1154aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void containsEqualRect() {
1164aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(0, 0, 10, 10);
1174aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(0, 0, 10, 10);
1184aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(a.contains(b), is(true));
1194aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
1204aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
1214aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
1224aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void intersectsButDoesntContainRect() {
1234aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(0, 0, 10, 10);
1244aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(5, 5, 15, 15);
1254aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(a.contains(b), is(false));
1264aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
1274aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
1284aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
1294aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void doesntIntersect() {
1304aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(0, 0, 10, 10);
1314aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(11, 11, 21, 21);
1324aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(Rect.intersects(a, b), is(false));
1334aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
1344aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
1354aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
1364aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void intersects() {
1374aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(0, 0, 10, 10);
1384aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(5, 0, 15, 10);
1394aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(Rect.intersects(a, b), is(true));
1404aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
1414aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
1424aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
1434aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void almostIntersects() {
1444aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(3, 0, 4, 2);
1454aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(1, 0, 3, 1);
1464aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(Rect.intersects(a, b), is(false));
1474aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
1484aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
1494aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
1504aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void intersectRect() {
1514aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect a = new Rect(0, 0, 10, 10);
1524aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect b = new Rect(5, 0, 15, 10);
1534aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(a.intersect(b), is(true));
1544aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
1554aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke
1564aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	@Test
1574aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	public void intersectCoordinates() {
1584aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		Rect r = new Rect(0, 0, 10, 10);
1594aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke		assertThat(r.intersect(5, 0, 15, 10), is(true));
1604aaebe6f156648e1074f10aadc89f485175c3043Felix H. Dahlke	}
161255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato
162255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato	@Test
163255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato	public void setWithIntsSetsCoordinates() {
164255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		Rect r = new Rect();
165255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		r.set(1, 2, 3, 4);
166255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		assertThat(r.left, is(1));
167255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		assertThat(r.top, is(2));
168255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		assertThat(r.right, is(3));
169255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		assertThat(r.bottom, is(4));
170255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato	}
171255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato
172255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato	@Test
173255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato	public void setWithRectSetsCoordinates() {
174255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		Rect rSrc = new Rect(1, 2, 3, 4);
175255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		Rect r = new Rect();
176255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		r.set(rSrc);
177255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		assertThat(r.left, is(1));
178255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		assertThat(r.top, is(2));
179255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		assertThat(r.right, is(3));
180255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato		assertThat(r.bottom, is(4));
181255260f69e0844322b3a24a47a33bb06c5a49d0cTony Allevato	}
182ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato
183ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato	@Test
184ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato	public void offsetModifiesRect() {
185ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato	  Rect r = new Rect(1, 2, 3, 4);
186ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato	  r.offset(10, 20);
187ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato		assertThat(r.left, is(11));
188ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato		assertThat(r.top, is(22));
189ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato		assertThat(r.right, is(13));
190ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato		assertThat(r.bottom, is(24));
191ce3c0509a47167ff3c6c809313f2c68ffbb58609Tony Allevato	}
1922a61662cdc430c05abec421965587fdd2b531419James Brechtel}
193