package org.robolectric.shadows; import android.view.MenuItem; import android.view.View; import android.widget.PopupMenu; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; import org.robolectric.TestRunners; import static org.assertj.core.api.Assertions.assertThat; import static org.robolectric.Shadows.shadowOf; @RunWith(TestRunners.MultiApiSelfTest.class) public class ShadowPopupMenuTest { private PopupMenu popupMenu; private ShadowPopupMenu shadowPopupMenu; @Before public void setUp() { View anchorView = new View(RuntimeEnvironment.application); popupMenu = new PopupMenu(RuntimeEnvironment.application, anchorView); shadowPopupMenu = shadowOf(popupMenu); } @Test public void testIsShowing_returnsFalseUponCreation() throws Exception { assertThat(shadowPopupMenu.isShowing()).isFalse(); } @Test public void testIsShowing_returnsTrueIfShown() throws Exception { popupMenu.show(); assertThat(shadowPopupMenu.isShowing()).isTrue(); } @Test public void testIsShowing_returnsFalseIfShownThenDismissed() throws Exception { popupMenu.show(); popupMenu.dismiss(); assertThat(shadowPopupMenu.isShowing()).isFalse(); } @Test public void getLatestPopupMenu_returnsNullUponCreation() throws Exception { assertThat(ShadowPopupMenu.getLatestPopupMenu()).isNull(); } @Test public void getLatestPopupMenu_returnsLastMenuShown() throws Exception { popupMenu.show(); assertThat(ShadowPopupMenu.getLatestPopupMenu()).isEqualTo(popupMenu); } @Test public void getOnClickListener_returnsOnClickListener() throws Exception { assertThat(shadowOf(popupMenu).getOnMenuItemClickListener()).isNull(); PopupMenu.OnMenuItemClickListener listener = new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { return false; } }; popupMenu.setOnMenuItemClickListener(listener); assertThat(shadowOf(popupMenu).getOnMenuItemClickListener()).isEqualTo(listener); } }