• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.xtremelabs.robolectric.shadows;
2 
3 import static org.hamcrest.CoreMatchers.equalTo;
4 import static org.hamcrest.CoreMatchers.is;
5 import static org.hamcrest.CoreMatchers.nullValue;
6 import static org.junit.Assert.assertThat;
7 
8 import java.util.ArrayList;
9 import java.util.List;
10 
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 
15 import android.database.AbstractCursor;
16 import android.net.Uri;
17 
18 import com.xtremelabs.robolectric.Robolectric;
19 import com.xtremelabs.robolectric.WithTestDefaultsRunner;
20 
21 @RunWith(WithTestDefaultsRunner.class)
22 public class AbstractCursorTest {
23 
24     private TestCursor cursor;
25 
26     @Before
setUp()27     public void setUp() throws Exception {
28         cursor = new TestCursor();
29     }
30 
31     @Test
testMoveToFirst()32     public void testMoveToFirst() {
33         cursor.theTable.add("Foobar");
34         assertThat(cursor.moveToFirst(), equalTo(true));
35         assertThat(cursor.getCount(), equalTo(1));
36     }
37 
38     @Test
testMoveToFirstEmptyList()39     public void testMoveToFirstEmptyList() {
40         assertThat(cursor.moveToFirst(), equalTo(false));
41         assertThat(cursor.getCount(), equalTo(0));
42     }
43 
44     @Test
testMoveToLast()45     public void testMoveToLast() {
46         cursor.theTable.add("Foobar");
47         cursor.theTable.add("Bletch");
48 
49         assertThat(cursor.moveToLast(), equalTo(true));
50         assertThat(cursor.getCount(), equalTo(2));
51     }
52 
53     @Test
testMoveToLastEmptyList()54     public void testMoveToLastEmptyList() {
55         assertThat(cursor.moveToLast(), equalTo(false));
56         assertThat(cursor.getCount(), equalTo(0));
57     }
58 
59     @Test
testGetPosition()60     public void testGetPosition() {
61         cursor.theTable.add("Foobar");
62         cursor.theTable.add("Bletch");
63 
64         assertThat(cursor.moveToFirst(), equalTo(true));
65         assertThat(cursor.getCount(), equalTo(2));
66         assertThat(cursor.getPosition(), equalTo(0));
67     }
68 
69     @Test
testGetPositionSingleEntry()70     public void testGetPositionSingleEntry() {
71         cursor.theTable.add("Foobar");
72 
73         assertThat(cursor.moveToFirst(), equalTo(true));
74         assertThat(cursor.getCount(), equalTo(1));
75         assertThat(cursor.getPosition(), equalTo(0));
76     }
77 
78     @Test
testGetPositionEmptyList()79     public void testGetPositionEmptyList() {
80         assertThat(cursor.moveToFirst(), equalTo(false));
81         assertThat(cursor.getCount(), equalTo(0));
82         assertThat(cursor.getPosition(), equalTo(0));
83     }
84 
85     @Test
testMoveToNext()86     public void testMoveToNext() {
87         cursor.theTable.add("Foobar");
88         cursor.theTable.add("Bletch");
89 
90         assertThat(cursor.moveToFirst(), equalTo(true));
91         assertThat(cursor.getCount(), equalTo(2));
92         assertThat(cursor.moveToNext(), equalTo(true));
93         assertThat(cursor.getPosition(), equalTo(1));
94     }
95 
96     @Test
testAttemptToMovePastEnd()97     public void testAttemptToMovePastEnd() {
98         cursor.theTable.add("Foobar");
99         cursor.theTable.add("Bletch");
100 
101         assertThat(cursor.moveToFirst(), equalTo(true));
102         assertThat(cursor.getCount(), equalTo(2));
103         assertThat(cursor.moveToNext(), equalTo(true));
104         assertThat(cursor.getPosition(), equalTo(1));
105         assertThat(cursor.isLast(), equalTo(true));
106         assertThat(cursor.moveToNext(), equalTo(false));
107         assertThat(cursor.isAfterLast(), equalTo(true));
108         assertThat(cursor.getPosition(), equalTo(2));
109     }
110 
111     @Test
testAttemptToMovePastSingleEntry()112     public void testAttemptToMovePastSingleEntry() {
113         cursor.theTable.add("Foobar");
114 
115         assertThat(cursor.moveToFirst(), equalTo(true));
116         assertThat(cursor.getCount(), equalTo(1));
117         assertThat(cursor.moveToNext(), equalTo(false));
118         assertThat(cursor.getPosition(), equalTo(1));
119     }
120 
121     @Test
testAttemptToMovePastEmptyList()122     public void testAttemptToMovePastEmptyList() {
123         assertThat(cursor.moveToFirst(), equalTo(false));
124         assertThat(cursor.getCount(), equalTo(0));
125         assertThat(cursor.moveToNext(), equalTo(false));
126         assertThat(cursor.getPosition(), equalTo(0));
127     }
128 
129     @Test
testMoveToPrevious()130     public void testMoveToPrevious() {
131         cursor.theTable.add("Foobar");
132         cursor.theTable.add("Bletch");
133         assertThat(cursor.moveToFirst(), equalTo(true));
134         assertThat(cursor.moveToNext(), equalTo(true));
135         assertThat(cursor.getPosition(), equalTo(1));
136         assertThat(cursor.moveToPrevious(), equalTo(true));
137         assertThat(cursor.getPosition(), equalTo(0));
138     }
139 
140     @Test
testAttemptToMovePastStart()141     public void testAttemptToMovePastStart() {
142         cursor.theTable.add("Foobar");
143         cursor.theTable.add("Bletch");
144         assertThat(cursor.moveToFirst(), equalTo(true));
145         assertThat(cursor.moveToPrevious(), equalTo(true));
146         assertThat(cursor.getPosition(), equalTo(-1));
147         assertThat(cursor.moveToPrevious(), equalTo(false));
148         assertThat(cursor.getPosition(), equalTo(-1));
149     }
150 
151     @Test
testIsFirst()152     public void testIsFirst() {
153         cursor.theTable.add("Foobar");
154         cursor.theTable.add("Bletch");
155         assertThat(cursor.moveToFirst(), equalTo(true));
156         assertThat(cursor.isFirst(), equalTo(true));
157         cursor.moveToNext();
158         assertThat(cursor.isFirst(), equalTo(false));
159         cursor.moveToFirst();
160         cursor.moveToPrevious();
161         assertThat(cursor.isFirst(), equalTo(false));
162     }
163 
164     @Test
testIsLast()165     public void testIsLast() {
166         cursor.theTable.add("Foobar");
167         cursor.theTable.add("Bletch");
168         assertThat(cursor.moveToFirst(), equalTo(true));
169         cursor.moveToNext();
170         assertThat(cursor.isLast(), equalTo(true));
171         cursor.moveToPrevious();
172         assertThat(cursor.isLast(), equalTo(false));
173         cursor.moveToFirst();
174         cursor.moveToNext();
175         assertThat(cursor.isLast(), equalTo(true));
176     }
177 
178     @Test
testIsBeforeFirst()179     public void testIsBeforeFirst() {
180         cursor.theTable.add("Foobar");
181         cursor.theTable.add("Bletch");
182         assertThat(cursor.moveToFirst(), equalTo(true));
183         cursor.moveToNext();
184         assertThat(cursor.isLast(), equalTo(true));
185         cursor.moveToPrevious();
186         assertThat(cursor.isLast(), equalTo(false));
187         cursor.moveToPrevious();
188         assertThat(cursor.isFirst(), equalTo(false));
189         cursor.moveToPrevious();
190         assertThat(cursor.isBeforeFirst(), equalTo(true));
191     }
192 
193     @Test
testIsAfterLast()194     public void testIsAfterLast() {
195         cursor.theTable.add("Foobar");
196         cursor.theTable.add("Bletch");
197         assertThat(cursor.moveToFirst(), equalTo(true));
198         cursor.moveToNext();
199         assertThat(cursor.isLast(), equalTo(true));
200         cursor.moveToNext();
201         assertThat(cursor.isAfterLast(), equalTo(true));
202         cursor.moveToPrevious();
203         assertThat(cursor.isLast(), equalTo(true));
204         cursor.moveToPrevious();
205         assertThat(cursor.isLast(), equalTo(false));
206         cursor.moveToFirst();
207         cursor.moveToNext();
208         assertThat(cursor.isAfterLast(), equalTo(false));
209         cursor.moveToNext();
210         assertThat(cursor.isAfterLast(), equalTo(true));
211     }
212 
213     @Test
testGetNotificationUri()214     public void testGetNotificationUri() {
215         Uri uri = Uri.parse("content://foo.com");
216         ShadowAbstractCursor shadow = Robolectric.shadowOf_(cursor);
217         assertThat(shadow.getNotificationUri_Compatibility(), is(nullValue()));
218         cursor.setNotificationUri(null, uri);
219         assertThat(shadow.getNotificationUri_Compatibility(), is(uri));
220     }
221 
222 	@Test
testIsClosedWhenAfterCallingClose()223 	public void testIsClosedWhenAfterCallingClose() {
224 		assertThat(cursor.isClosed(), equalTo(false));
225 		cursor.close();
226 		assertThat(cursor.isClosed(), equalTo(true));
227 	}
228 
229     private class TestCursor extends AbstractCursor {
230 
231         public List<Object> theTable = new ArrayList<Object>();
232 
233         @Override
getCount()234         public int getCount() {
235             return theTable.size();
236         }
237 
238         @Override
getColumnNames()239         public String[] getColumnNames() {
240             throw new UnsupportedOperationException();
241         }
242 
243         @Override
getDouble(int columnIndex)244         public double getDouble(int columnIndex) {
245             throw new UnsupportedOperationException();
246         }
247 
248         @Override
getFloat(int columnIndex)249         public float getFloat(int columnIndex) {
250             throw new UnsupportedOperationException();
251         }
252 
253         @Override
getInt(int columnIndex)254         public int getInt(int columnIndex) {
255             throw new UnsupportedOperationException();
256         }
257 
258         @Override
getLong(int columnIndex)259         public long getLong(int columnIndex) {
260             throw new UnsupportedOperationException();
261         }
262 
263         @Override
getShort(int columnIndex)264         public short getShort(int columnIndex) {
265             throw new UnsupportedOperationException();
266         }
267 
268         @Override
getString(int columnIndex)269         public String getString(int columnIndex) {
270             throw new UnsupportedOperationException();
271         }
272 
273         @Override
isNull(int columnIndex)274         public boolean isNull(int columnIndex) {
275             throw new UnsupportedOperationException();
276         }
277     }
278 }