diff options
author | John Stuppy <jstuppy@google.com> | 2013-01-24 19:04:47 -0800 |
---|---|---|
committer | John Stuppy <jstuppy@google.com> | 2013-01-25 11:29:25 -0800 |
commit | a51ccfbbc2e7a9d7d48ba708677925b50c8b70af (patch) | |
tree | 2178ef1ac3a89c325af48a8ce5df8d12fda8550a | |
parent | a9dac6d391780b442bad54bce986683095d6a36b (diff) | |
download | robolectric-a51ccfbbc2e7a9d7d48ba708677925b50c8b70af.tar.gz |
Adds getSelectedView support to Robolectric
Change-Id: Ib8e731155fe94eb07ce7137b3a71731f9f6ae886
-rw-r--r-- | src/main/java/com/xtremelabs/robolectric/shadows/ShadowAbsSpinner.java | 16 | ||||
-rw-r--r-- | src/test/java/com/xtremelabs/robolectric/shadows/AbsSpinnerTest.java | 57 |
2 files changed, 61 insertions, 12 deletions
diff --git a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAbsSpinner.java b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAbsSpinner.java index dcdb93b1c..80c73fe10 100644 --- a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAbsSpinner.java +++ b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowAbsSpinner.java @@ -1,10 +1,12 @@ package com.xtremelabs.robolectric.shadows; -import android.widget.AbsSpinner; -import android.widget.SpinnerAdapter; import com.xtremelabs.robolectric.internal.Implementation; import com.xtremelabs.robolectric.internal.Implements; +import android.view.View; +import android.widget.AbsSpinner; +import android.widget.SpinnerAdapter; + @SuppressWarnings({"UnusedDeclaration"}) @Implements(AbsSpinner.class) public class ShadowAbsSpinner extends ShadowAdapterView { @@ -27,6 +29,16 @@ public class ShadowAbsSpinner extends ShadowAdapterView { animatedTransition = animate; } + @Implementation + public View getSelectedView() { + int selectedItemPosition = getSelectedItemPosition(); + if (getCount() == 0 || selectedItemPosition < 0) { + return null; + } else { + return getChildAt(selectedItemPosition); + } + } + // Non-implementation helper method public boolean isAnimatedTransition() { return animatedTransition; diff --git a/src/test/java/com/xtremelabs/robolectric/shadows/AbsSpinnerTest.java b/src/test/java/com/xtremelabs/robolectric/shadows/AbsSpinnerTest.java index dcac28ac3..9dbecdbdc 100644 --- a/src/test/java/com/xtremelabs/robolectric/shadows/AbsSpinnerTest.java +++ b/src/test/java/com/xtremelabs/robolectric/shadows/AbsSpinnerTest.java @@ -5,12 +5,17 @@ import android.app.Activity; import android.content.Context; import android.view.View; import android.view.ViewGroup; +import android.widget.AbsSpinner; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Gallery; import android.widget.Spinner; +import android.widget.TextView; + import com.xtremelabs.robolectric.Robolectric; import com.xtremelabs.robolectric.WithTestDefaultsRunner; + +import org.hamcrest.core.IsNull; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -52,41 +57,73 @@ public class AbsSpinnerTest { spinner.setSelection(0); assertThat((String) spinner.getSelectedItem(), equalTo("foo")); assertThat((String) spinner.getSelectedItem(), not(equalTo("bar"))); - + spinner.setSelection(1); assertThat((String) spinner.getSelectedItem(), equalTo("bar")); assertThat((String) spinner.getSelectedItem(), not(equalTo("foo"))); } - + @Test public void getSelectedItemShouldReturnNull_NoAdapterSet(){ assertThat(spinner.getSelectedItem(), nullValue()); } - - @Test (expected = IndexOutOfBoundsException.class) + + @Test (expected = IndexOutOfBoundsException.class) public void getSelectedItemShouldThrowException_EmptyArray(){ spinner.setAdapter(new MyArrayAdapter(context, new String[]{})); - spinner.getSelectedItem(); + spinner.getSelectedItem(); } - + @Test - public void setSelectionWithAnimatedTransition() { + public void setSelectionWithAnimatedTransition() { spinner.setAdapter(arrayAdapter); spinner.setSelection(0, true); - + assertThat((String) spinner.getSelectedItem(), equalTo("foo")); assertThat((String) spinner.getSelectedItem(), not(equalTo("bar"))); - + assertThat(shadowSpinner.isAnimatedTransition(), equalTo(true)); } + @Test + public void testGetSelectedView_noAdapter() { + assertThat(spinner.getSelectedView(), nullValue()); + } + + @Test + public void testGetSelectedView_noSelection() { + spinner.setAdapter(arrayAdapter); + spinner.setSelection(AdapterView.INVALID_POSITION); + + assertThat(spinner.getSelectedView(), nullValue()); + } + + @Test + public void testGetSelectedView_default() { + spinner.setAdapter(arrayAdapter); + + assertThat(((TextView) spinner.getSelectedView()).getText().toString(), + equalTo("foo")); + } + + @Test + public void testGetSelectedView_changed() { + spinner.setAdapter(arrayAdapter); + spinner.setSelection(1); + + assertThat(((TextView) spinner.getSelectedView()).getText().toString(), + equalTo("bar")); + } + private static class MyArrayAdapter extends ArrayAdapter<String> { public MyArrayAdapter(Context context, String[] testItems) { super(context, android.R.layout.simple_spinner_item, testItems); } @Override public View getView(int position, View convertView, ViewGroup parent) { - return new View(getContext()); + TextView textView = new TextView(getContext()); + textView.setText(getItem(position)); + return textView; } } } |