MenuItem.getIcon should return the drawable from setIcon.
Fixes #1173. Closes #1174.
diff --git a/src/main/java/org/robolectric/tester/android/view/TestMenuItem.java b/src/main/java/org/robolectric/tester/android/view/TestMenuItem.java
index 3f7f639..4ad9637 100644
--- a/src/main/java/org/robolectric/tester/android/view/TestMenuItem.java
+++ b/src/main/java/org/robolectric/tester/android/view/TestMenuItem.java
@@ -19,7 +19,7 @@
private boolean visible = true;
private boolean expanded = false;
private OnMenuItemClickListener menuItemClickListener;
- public int iconRes;
+ public Drawable icon;
private Intent intent;
private SubMenu subMenu;
private View actionView;
@@ -27,11 +27,9 @@
private int order;
public TestMenuItem() {
- super();
}
public TestMenuItem(int itemId) {
- super();
this.itemId = itemId;
}
@@ -90,18 +88,19 @@
@Override
public MenuItem setIcon(Drawable icon) {
+ this.icon = icon;
return this;
}
@Override
public MenuItem setIcon(int iconRes) {
- this.iconRes = iconRes;
+ this.icon = iconRes == 0 ? null : Robolectric.application.getResources().getDrawable(iconRes);
return this;
}
@Override
public Drawable getIcon() {
- return null;
+ return this.icon;
}
@Override
diff --git a/src/test/java/org/robolectric/tester/android/view/MenuItemTest.java b/src/test/java/org/robolectric/tester/android/view/MenuItemTest.java
index dbbfcb5..414c43a 100644
--- a/src/test/java/org/robolectric/tester/android/view/MenuItemTest.java
+++ b/src/test/java/org/robolectric/tester/android/view/MenuItemTest.java
@@ -1,16 +1,18 @@
package org.robolectric.tester.android.view;
+import android.graphics.drawable.Drawable;
import android.view.View;
import org.junit.Before;
import org.junit.Test;
import android.view.MenuItem;
import org.junit.runner.RunWith;
+import org.robolectric.R;
import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
+import org.robolectric.TestRunners;
import static org.fest.assertions.api.Assertions.assertThat;
-@RunWith(RobolectricTestRunner.class)
+@RunWith(TestRunners.WithDefaults.class)
public class MenuItemTest {
private MenuItem item;
private TestOnActionExpandListener listener;
@@ -128,6 +130,34 @@
}
@Test
+ public void setIcon_shouldNullifyOnZero() throws Exception {
+ Drawable expectedDrawable = Robolectric.application.getResources().getDrawable(R.drawable.an_image);
+ assertThat(expectedDrawable).isNotNull();
+ assertThat(item.getIcon()).isNull();
+ item.setIcon(R.drawable.an_image);
+ assertThat(item.getIcon()).isEqualTo(expectedDrawable);
+ item.setIcon(0);
+ assertThat(item.getIcon()).isNull();
+ }
+
+ @Test
+ public void getIcon_shouldReturnDrawableFromSetIconDrawable() throws Exception {
+ Drawable testDrawable = Robolectric.application.getResources().getDrawable(R.drawable.an_image);
+ assertThat(testDrawable).isNotNull();
+ assertThat(item.getIcon()).isNull();
+ item.setIcon(testDrawable);
+ assertThat(item.getIcon()).isSameAs(testDrawable);
+ }
+
+ @Test
+ public void getIcon_shouldReturnDrawableFromSetIconResourceId() throws Exception {
+ assertThat(item.getIcon()).isNull();
+ item.setIcon(R.drawable.an_other_image);
+ Drawable expectedDrawable = Robolectric.application.getResources().getDrawable(R.drawable.an_other_image);
+ assertThat(item.getIcon()).isEqualTo(expectedDrawable);
+ }
+
+ @Test
public void setOnActionExpandListener_shouldReturnMenuItem() throws Exception {
assertThat(item.setOnActionExpandListener(listener)).isSameAs(item);
}