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