Home | History | Annotate | Download | only in shadows
      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
     27     public void setUp() throws Exception {
     28         cursor = new TestCursor();
     29     }
     30 
     31     @Test
     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
     39     public void testMoveToFirstEmptyList() {
     40         assertThat(cursor.moveToFirst(), equalTo(false));
     41         assertThat(cursor.getCount(), equalTo(0));
     42     }
     43 
     44     @Test
     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
     54     public void testMoveToLastEmptyList() {
     55         assertThat(cursor.moveToLast(), equalTo(false));
     56         assertThat(cursor.getCount(), equalTo(0));
     57     }
     58 
     59     @Test
     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
     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
     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
     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
     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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    234         public int getCount() {
    235             return theTable.size();
    236         }
    237 
    238         @Override
    239         public String[] getColumnNames() {
    240             throw new UnsupportedOperationException();
    241         }
    242 
    243         @Override
    244         public double getDouble(int columnIndex) {
    245             throw new UnsupportedOperationException();
    246         }
    247 
    248         @Override
    249         public float getFloat(int columnIndex) {
    250             throw new UnsupportedOperationException();
    251         }
    252 
    253         @Override
    254         public int getInt(int columnIndex) {
    255             throw new UnsupportedOperationException();
    256         }
    257 
    258         @Override
    259         public long getLong(int columnIndex) {
    260             throw new UnsupportedOperationException();
    261         }
    262 
    263         @Override
    264         public short getShort(int columnIndex) {
    265             throw new UnsupportedOperationException();
    266         }
    267 
    268         @Override
    269         public String getString(int columnIndex) {
    270             throw new UnsupportedOperationException();
    271         }
    272 
    273         @Override
    274         public boolean isNull(int columnIndex) {
    275             throw new UnsupportedOperationException();
    276         }
    277     }
    278 }