1package org.robolectric.shadows;
2
3import static org.assertj.core.api.Assertions.assertThat;
4
5import android.graphics.Rect;
6import org.junit.Before;
7import org.junit.Test;
8import org.junit.runner.RunWith;
9import org.robolectric.RobolectricTestRunner;
10
11@RunWith(RobolectricTestRunner.class)
12public class ShadowRectTest {
13  @Before
14  public void setUp() {
15  }
16
17  @Test
18  public void constructorSetsCoordinates() {
19    Rect r = new Rect(1, 2, 3, 4);
20    assertThat(r.left).isEqualTo(1);
21    assertThat(r.top).isEqualTo(2);
22    assertThat(r.right).isEqualTo(3);
23    assertThat(r.bottom).isEqualTo(4);
24  }
25
26  @Test
27  public void secondConstructorSetsCoordinates() {
28    Rect existingRect = new Rect(1, 2, 3, 4);
29    Rect r = new Rect(existingRect);
30    assertThat(r.left).isEqualTo(1);
31    assertThat(r.top).isEqualTo(2);
32    assertThat(r.right).isEqualTo(3);
33    assertThat(r.bottom).isEqualTo(4);
34  }
35
36  @Test
37  public void width() {
38    Rect r = new Rect(0, 0, 10, 10);
39    assertThat(r.width()).isEqualTo(10);
40  }
41
42  @Test
43  public void height() {
44    Rect r = new Rect(0, 0, 10, 10);
45    assertThat(r.height()).isEqualTo(10);
46  }
47
48  @Test
49  public void doesntEqual() {
50    Rect a = new Rect(1, 2, 3, 4);
51    Rect b = new Rect(2, 3, 4, 5);
52    assertThat(a.equals(b)).isFalse();
53  }
54
55  @Test
56  public void equals() {
57    Rect a = new Rect(1, 2, 3, 4);
58    Rect b = new Rect(1, 2, 3, 4);
59    assertThat(a.equals(b)).isTrue();
60  }
61
62  @Test
63  public void doesntContainPoint() {
64    Rect r = new Rect(0, 0, 10, 10);
65    assertThat(r.contains(11, 11)).isFalse();
66  }
67
68  @Test
69  public void containsPoint() {
70    Rect r = new Rect(0, 0, 10, 10);
71    assertThat(r.contains(5, 5)).isTrue();
72  }
73
74  @Test
75  public void doesntContainPointOnLeftEdge() {
76    Rect r = new Rect(0, 0, 10, 10);
77    assertThat(r.contains(0, 10)).isFalse();
78  }
79
80  @Test
81  public void doesntContainPointOnRightEdge() {
82    Rect r = new Rect(0, 0, 10, 10);
83    assertThat(r.contains(10, 5)).isFalse();
84  }
85
86  @Test
87  public void containsPointOnTopEdge() {
88    Rect r = new Rect(0, 0, 10, 10);
89    assertThat(r.contains(5, 0)).isTrue();
90  }
91
92  @Test
93  public void containsPointOnBottomEdge() {
94    Rect r = new Rect(0, 0, 10, 10);
95    assertThat(r.contains(5, 10)).isFalse();
96  }
97
98  @Test
99  public void doesntContainRect() {
100    Rect a = new Rect(0, 0, 10, 10);
101    Rect b = new Rect(11, 11, 12, 12);
102    assertThat(a.contains(b)).isFalse();
103  }
104
105  @Test
106  public void containsRect() {
107    Rect a = new Rect(0, 0, 10, 10);
108    Rect b = new Rect(8, 8, 9, 9);
109    assertThat(a.contains(b)).isTrue();
110  }
111
112  @Test
113  public void containsEqualRect() {
114    Rect a = new Rect(0, 0, 10, 10);
115    Rect b = new Rect(0, 0, 10, 10);
116    assertThat(a.contains(b)).isTrue();
117  }
118
119  @Test
120  public void intersectsButDoesntContainRect() {
121    Rect a = new Rect(0, 0, 10, 10);
122    Rect b = new Rect(5, 5, 15, 15);
123    assertThat(a.contains(b)).isFalse();
124  }
125
126  @Test
127  public void doesntIntersect() {
128    Rect a = new Rect(0, 0, 10, 10);
129    Rect b = new Rect(11, 11, 21, 21);
130    assertThat(Rect.intersects(a, b)).isFalse();
131  }
132
133  @Test
134  public void intersects() {
135    Rect a = new Rect(0, 0, 10, 10);
136    Rect b = new Rect(5, 0, 15, 10);
137    assertThat(Rect.intersects(a, b)).isTrue();
138  }
139
140  @Test
141  public void almostIntersects() {
142    Rect a = new Rect(3, 0, 4, 2);
143    Rect b = new Rect(1, 0, 3, 1);
144    assertThat(Rect.intersects(a, b)).isFalse();
145  }
146
147  @Test
148  public void intersectRect() {
149    Rect a = new Rect(0, 0, 10, 10);
150    Rect b = new Rect(5, 0, 15, 10);
151    assertThat(a.intersect(b)).isTrue();
152  }
153
154  @Test
155  public void intersectCoordinates() {
156    Rect r = new Rect(0, 0, 10, 10);
157    assertThat(r.intersect(5, 0, 15, 10)).isTrue();
158  }
159
160  @Test
161  public void setWithIntsSetsCoordinates() {
162    Rect r = new Rect();
163    r.set(1, 2, 3, 4);
164    assertThat(r.left).isEqualTo(1);
165    assertThat(r.top).isEqualTo(2);
166    assertThat(r.right).isEqualTo(3);
167    assertThat(r.bottom).isEqualTo(4);
168  }
169
170  @Test
171  public void setWithRectSetsCoordinates() {
172    Rect rSrc = new Rect(1, 2, 3, 4);
173    Rect r = new Rect();
174    r.set(rSrc);
175    assertThat(r.left).isEqualTo(1);
176    assertThat(r.top).isEqualTo(2);
177    assertThat(r.right).isEqualTo(3);
178    assertThat(r.bottom).isEqualTo(4);
179  }
180
181  @Test
182  public void offsetModifiesRect() {
183    Rect r = new Rect(1, 2, 3, 4);
184    r.offset(10, 20);
185    assertThat(r.left).isEqualTo(11);
186    assertThat(r.top).isEqualTo(22);
187    assertThat(r.right).isEqualTo(13);
188    assertThat(r.bottom).isEqualTo(24);
189  }
190}
191