133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows; 2563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher 33c3bc2fbf55f78d806bda09514896d279f98424cadriancowham 4563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisherimport android.app.Activity; 529610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwinimport android.content.Context; 629610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwinimport android.view.View; 729610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwinimport android.view.ViewGroup; 8a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppyimport android.widget.AbsSpinner; 9563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisherimport android.widget.AdapterView; 1029610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwinimport android.widget.ArrayAdapter; 11563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisherimport android.widget.Gallery; 1229610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwinimport android.widget.Spinner; 13a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppyimport android.widget.TextView; 14a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 15563a988375710e2c64a681b741eb52ad29a83caeZoodlesimport com.xtremelabs.robolectric.Robolectric; 1607257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwinimport com.xtremelabs.robolectric.WithTestDefaultsRunner; 17a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 18a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppyimport org.hamcrest.core.IsNull; 19563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisherimport org.junit.Before; 20563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisherimport org.junit.Test; 21563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisherimport org.junit.runner.RunWith; 22563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher 23ca8b4e7c96507b66cb816a3383c93b02d79a7685Tyler Schultzimport static org.hamcrest.CoreMatchers.*; 24ca8b4e7c96507b66cb816a3383c93b02d79a7685Tyler Schultzimport static org.junit.Assert.assertThat; 25563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher 2607257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwin@RunWith(WithTestDefaultsRunner.class) 27563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisherpublic class AbsSpinnerTest { 2829610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin private Context context; 29563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher private AdapterView adapterView; 3029610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin private Spinner spinner; 31563a988375710e2c64a681b741eb52ad29a83caeZoodles private ShadowAbsSpinner shadowSpinner; 3229610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin private ArrayAdapter<String> arrayAdapter; 33563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher 34563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher @Before 35563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher public void setUp() throws Exception { 3629610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin context = new Activity(); 3729610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin adapterView = new Gallery(context); 3829610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin spinner = new Spinner(context); 39563a988375710e2c64a681b741eb52ad29a83caeZoodles shadowSpinner = (ShadowAbsSpinner) Robolectric.shadowOf(spinner); 4029610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin String [] testItems = {"foo", "bar"}; 4129610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin arrayAdapter = new MyArrayAdapter(this.context, testItems); 42563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher } 43563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher 44563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher @Test 45563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher public void shouldHaveAdapterViewCommonBehavior() throws Exception { 46780ae89abea7886c2bdc851713475d4e4905dd88Christian Williams & Ian Fisher AdapterViewBehavior.shouldActAsAdapterView(adapterView); 47563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher } 4829610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin 4929610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin @Test 5029610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin public void checkSetAdapter() { 5129610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin spinner.setAdapter(arrayAdapter); 5229610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin } 5329610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin 543c3bc2fbf55f78d806bda09514896d279f98424cadriancowham @Test 553c3bc2fbf55f78d806bda09514896d279f98424cadriancowham public void getSelectedItemShouldReturnCorrectValue(){ 563c3bc2fbf55f78d806bda09514896d279f98424cadriancowham spinner.setAdapter(arrayAdapter); 573c3bc2fbf55f78d806bda09514896d279f98424cadriancowham spinner.setSelection(0); 584ea6e425e7ead4a762f3be06e94c2522d2fcf06bTyler Schultz assertThat((String) spinner.getSelectedItem(), equalTo("foo")); 594ea6e425e7ead4a762f3be06e94c2522d2fcf06bTyler Schultz assertThat((String) spinner.getSelectedItem(), not(equalTo("bar"))); 60a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 613c3bc2fbf55f78d806bda09514896d279f98424cadriancowham spinner.setSelection(1); 624ea6e425e7ead4a762f3be06e94c2522d2fcf06bTyler Schultz assertThat((String) spinner.getSelectedItem(), equalTo("bar")); 634ea6e425e7ead4a762f3be06e94c2522d2fcf06bTyler Schultz assertThat((String) spinner.getSelectedItem(), not(equalTo("foo"))); 643c3bc2fbf55f78d806bda09514896d279f98424cadriancowham } 65a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 663c3bc2fbf55f78d806bda09514896d279f98424cadriancowham @Test 673c3bc2fbf55f78d806bda09514896d279f98424cadriancowham public void getSelectedItemShouldReturnNull_NoAdapterSet(){ 683c3bc2fbf55f78d806bda09514896d279f98424cadriancowham assertThat(spinner.getSelectedItem(), nullValue()); 693c3bc2fbf55f78d806bda09514896d279f98424cadriancowham } 70a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 71a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy @Test (expected = IndexOutOfBoundsException.class) 72ca8b4e7c96507b66cb816a3383c93b02d79a7685Tyler Schultz public void getSelectedItemShouldThrowException_EmptyArray(){ 733c3bc2fbf55f78d806bda09514896d279f98424cadriancowham spinner.setAdapter(new MyArrayAdapter(context, new String[]{})); 74a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy spinner.getSelectedItem(); 753c3bc2fbf55f78d806bda09514896d279f98424cadriancowham } 76a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 77563a988375710e2c64a681b741eb52ad29a83caeZoodles @Test 78a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy public void setSelectionWithAnimatedTransition() { 79563a988375710e2c64a681b741eb52ad29a83caeZoodles spinner.setAdapter(arrayAdapter); 80563a988375710e2c64a681b741eb52ad29a83caeZoodles spinner.setSelection(0, true); 81a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 824ea6e425e7ead4a762f3be06e94c2522d2fcf06bTyler Schultz assertThat((String) spinner.getSelectedItem(), equalTo("foo")); 834ea6e425e7ead4a762f3be06e94c2522d2fcf06bTyler Schultz assertThat((String) spinner.getSelectedItem(), not(equalTo("bar"))); 84a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 85563a988375710e2c64a681b741eb52ad29a83caeZoodles assertThat(shadowSpinner.isAnimatedTransition(), equalTo(true)); 86563a988375710e2c64a681b741eb52ad29a83caeZoodles } 87ca8b4e7c96507b66cb816a3383c93b02d79a7685Tyler Schultz 88a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy @Test 89a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy public void testGetSelectedView_noAdapter() { 90a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy assertThat(spinner.getSelectedView(), nullValue()); 91a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy } 92a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 93a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy @Test 94a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy public void testGetSelectedView_noSelection() { 95a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy spinner.setAdapter(arrayAdapter); 96a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy spinner.setSelection(AdapterView.INVALID_POSITION); 97a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 98a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy assertThat(spinner.getSelectedView(), nullValue()); 99a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy } 100a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 101a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy @Test 102a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy public void testGetSelectedView_default() { 103a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy spinner.setAdapter(arrayAdapter); 104a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 105a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy assertThat(((TextView) spinner.getSelectedView()).getText().toString(), 106a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy equalTo("foo")); 107a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy } 108a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 109a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy @Test 110a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy public void testGetSelectedView_changed() { 111a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy spinner.setAdapter(arrayAdapter); 112a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy spinner.setSelection(1); 113a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 114a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy assertThat(((TextView) spinner.getSelectedView()).getText().toString(), 115a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy equalTo("bar")); 116a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy } 117a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy 11829610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin private static class MyArrayAdapter extends ArrayAdapter<String> { 11929610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin public MyArrayAdapter(Context context, String[] testItems) { 12029610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin super(context, android.R.layout.simple_spinner_item, testItems); 12129610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin } 12229610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin 12329610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin @Override public View getView(int position, View convertView, ViewGroup parent) { 124a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy TextView textView = new TextView(getContext()); 125a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy textView.setText(getItem(position)); 126a51ccfbbc2e7a9d7d48ba708677925b50c8b70afJohn Stuppy return textView; 12729610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin } 12829610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin } 129563821eb6f69ee8158b44465d227b0ce35ad2ed4Christian Williams & Ian Fisher} 130