Home | History | Annotate | Download | only in shadows
      1 package org.robolectric.shadows;
      2 
      3 import static org.assertj.core.api.Assertions.assertThat;
      4 import static org.robolectric.Shadows.shadowOf;
      5 
      6 import android.content.Context;
      7 import android.view.View;
      8 import android.view.ViewGroup;
      9 import android.widget.ArrayAdapter;
     10 import android.widget.Spinner;
     11 import org.junit.Before;
     12 import org.junit.Test;
     13 import org.junit.runner.RunWith;
     14 import org.robolectric.RobolectricTestRunner;
     15 import org.robolectric.RuntimeEnvironment;
     16 
     17 @RunWith(RobolectricTestRunner.class)
     18 public class ShadowAbsSpinnerTest {
     19   private Context context;
     20   private Spinner spinner;
     21   private ShadowAbsSpinner shadowSpinner;
     22   private ArrayAdapter<String> arrayAdapter;
     23 
     24   @Before
     25   public void setUp() throws Exception {
     26     context = RuntimeEnvironment.application;
     27     spinner = new Spinner(context);
     28     shadowSpinner = shadowOf(spinner);
     29     String [] testItems = {"foo", "bar"};
     30     arrayAdapter = new MyArrayAdapter(this.context, testItems);
     31   }
     32 
     33   @Test
     34   public void checkSetAdapter() {
     35     spinner.setAdapter(arrayAdapter);
     36   }
     37 
     38   @Test
     39   public void getSelectedItemShouldReturnCorrectValue(){
     40     spinner.setAdapter(arrayAdapter);
     41     spinner.setSelection(0);
     42     assertThat((String) spinner.getSelectedItem()).isEqualTo("foo");
     43     assertThat((String) spinner.getSelectedItem()).isNotEqualTo("bar");
     44 
     45     spinner.setSelection(1);
     46     assertThat((String) spinner.getSelectedItem()).isEqualTo("bar");
     47     assertThat((String) spinner.getSelectedItem()).isNotEqualTo("foo");
     48   }
     49 
     50   @Test
     51   public void getSelectedItemShouldReturnNull_NoAdapterSet(){
     52     assertThat(spinner.getSelectedItem()).isNull();
     53   }
     54 
     55   @Test
     56   public void setSelectionWithAnimatedTransition() {
     57     spinner.setAdapter(arrayAdapter);
     58     spinner.setSelection(0, true);
     59 
     60     assertThat((String) spinner.getSelectedItem()).isEqualTo("foo");
     61     assertThat((String) spinner.getSelectedItem()).isNotEqualTo("bar");
     62 
     63     assertThat(shadowSpinner.isAnimatedTransition()).isTrue();
     64   }
     65 
     66   private static class MyArrayAdapter extends ArrayAdapter<String> {
     67     public MyArrayAdapter(Context context, String[] testItems) {
     68       super(context, android.R.layout.simple_spinner_item, testItems);
     69     }
     70 
     71     @Override public View getView(int position, View convertView, ViewGroup parent) {
     72       return new View(getContext());
     73     }
     74   }
     75 }
     76