package com.xtremelabs.robolectric.res; import static com.xtremelabs.robolectric.util.TestUtil.getSystemResourceDir; import static com.xtremelabs.robolectric.util.TestUtil.resourceFile; import java.util.ArrayList; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import android.content.ComponentName; import android.content.Intent; import android.graphics.drawable.Drawable; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem.OnMenuItemClickListener; import com.xtremelabs.robolectric.R; import com.xtremelabs.robolectric.Robolectric; import com.xtremelabs.robolectric.WithTestDefaultsRunner; import com.xtremelabs.robolectric.tester.android.view.TestMenuItem; import com.xtremelabs.robolectric.util.I18nException; @RunWith(WithTestDefaultsRunner.class) public class MenuLoaderTest { private MenuLoader menuLoader; @Before public void setUp() throws Exception { ResourceExtractor resourceExtractor = new ResourceExtractor(); resourceExtractor.addLocalRClass(R.class); resourceExtractor.addSystemRClass(android.R.class); StringResourceLoader stringResourceLoader = new StringResourceLoader(resourceExtractor); new DocumentLoader(stringResourceLoader).loadResourceXmlDir(resourceFile("res", "values")); new DocumentLoader(stringResourceLoader).loadSystemResourceXmlDir(getSystemResourceDir("values")); menuLoader = new MenuLoader(resourceExtractor, new AttrResourceLoader(resourceExtractor)); new DocumentLoader(menuLoader).loadResourceXmlDir(resourceFile("res", "menu")); } @After public void tearDown() throws Exception { } @Test(expected=I18nException.class) public void shouldThrowI18nExceptionOnMenuWithBareStrings() throws Exception { Menu testMenu = new TestMenu(); menuLoader.setStrictI18n(true); menuLoader.inflateMenu(Robolectric.application, R.menu.test, testMenu); } public class TestMenu implements Menu { @Override public MenuItem add(CharSequence title) { return null; } @Override public MenuItem add(int titleRes) { return null; } @Override public MenuItem add(int groupId, int itemId, int order, CharSequence title) { return null; } @Override public MenuItem add(int groupId, int itemId, int order, int titleRes) { return null; } @Override public SubMenu addSubMenu(CharSequence title) { return null; } @Override public SubMenu addSubMenu(int titleRes) { return null; } @Override public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) { return null; } @Override public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) { return null; } @Override public int addIntentOptions(int groupId, int itemId, int order, ComponentName caller, Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) { return 0; } @Override public void removeItem(int id) { } @Override public void removeGroup(int groupId) { } @Override public void clear() { } @Override public void setGroupCheckable(int group, boolean checkable, boolean exclusive) { } @Override public void setGroupVisible(int group, boolean visible) { } @Override public void setGroupEnabled(int group, boolean enabled) { } @Override public boolean hasVisibleItems() { return false; } @Override public MenuItem findItem(int id) { return null; } @Override public int size() { return 0; } @Override public MenuItem getItem(int index) { return null; } @Override public void close() { } @Override public boolean performShortcut(int keyCode, KeyEvent event, int flags) { return false; } @Override public boolean isShortcutKey(int keyCode, KeyEvent event) { return false; } @Override public boolean performIdentifierAction(int id, int flags) { return false; } @Override public void setQwertyMode(boolean isQwerty) { } } }