1package com.xtremelabs.robolectric.res; 2 3 4import static com.xtremelabs.robolectric.util.TestUtil.getSystemResourceDir; 5import static com.xtremelabs.robolectric.util.TestUtil.resourceFile; 6 7import java.util.ArrayList; 8 9import org.junit.After; 10import org.junit.Before; 11import org.junit.Test; 12import org.junit.runner.RunWith; 13 14import android.content.ComponentName; 15import android.content.Intent; 16import android.graphics.drawable.Drawable; 17import android.view.KeyEvent; 18import android.view.Menu; 19import android.view.MenuItem; 20import android.view.SubMenu; 21import android.view.ContextMenu.ContextMenuInfo; 22import android.view.MenuItem.OnMenuItemClickListener; 23 24import com.xtremelabs.robolectric.R; 25import com.xtremelabs.robolectric.Robolectric; 26import com.xtremelabs.robolectric.WithTestDefaultsRunner; 27import com.xtremelabs.robolectric.tester.android.view.TestMenuItem; 28import com.xtremelabs.robolectric.util.I18nException; 29 30@RunWith(WithTestDefaultsRunner.class) 31public class MenuLoaderTest { 32 33 private MenuLoader menuLoader; 34 35 @Before 36 public void setUp() throws Exception { 37 ResourceExtractor resourceExtractor = new ResourceExtractor(); 38 resourceExtractor.addLocalRClass(R.class); 39 resourceExtractor.addSystemRClass(android.R.class); 40 41 StringResourceLoader stringResourceLoader = new StringResourceLoader(resourceExtractor); 42 new DocumentLoader(stringResourceLoader).loadResourceXmlDir(resourceFile("res", "values")); 43 new DocumentLoader(stringResourceLoader).loadSystemResourceXmlDir(getSystemResourceDir("values")); 44 45 menuLoader = new MenuLoader(resourceExtractor, new AttrResourceLoader(resourceExtractor)); 46 new DocumentLoader(menuLoader).loadResourceXmlDir(resourceFile("res", "menu")); 47 } 48 49 @After 50 public void tearDown() throws Exception { 51 } 52 53 @Test(expected=I18nException.class) 54 public void shouldThrowI18nExceptionOnMenuWithBareStrings() throws Exception { 55 Menu testMenu = new TestMenu(); 56 menuLoader.setStrictI18n(true); 57 menuLoader.inflateMenu(Robolectric.application, R.menu.test, testMenu); 58 } 59 60 public class TestMenu implements Menu { 61 @Override 62 public MenuItem add(CharSequence title) { 63 return null; 64 } 65 66 @Override 67 public MenuItem add(int titleRes) { 68 return null; 69 } 70 71 @Override 72 public MenuItem add(int groupId, int itemId, int order, 73 CharSequence title) { 74 return null; 75 } 76 77 @Override 78 public MenuItem add(int groupId, int itemId, int order, int titleRes) { 79 return null; 80 } 81 82 @Override 83 public SubMenu addSubMenu(CharSequence title) { 84 return null; 85 } 86 87 @Override 88 public SubMenu addSubMenu(int titleRes) { 89 return null; 90 } 91 92 @Override 93 public SubMenu addSubMenu(int groupId, int itemId, int order, 94 CharSequence title) { 95 return null; 96 } 97 98 @Override 99 public SubMenu addSubMenu(int groupId, int itemId, int order, 100 int titleRes) { 101 return null; 102 } 103 104 @Override 105 public int addIntentOptions(int groupId, int itemId, int order, 106 ComponentName caller, Intent[] specifics, Intent intent, 107 int flags, MenuItem[] outSpecificItems) { 108 return 0; 109 } 110 111 @Override 112 public void removeItem(int id) { 113 114 } 115 116 @Override 117 public void removeGroup(int groupId) { 118 119 } 120 121 @Override 122 public void clear() { 123 124 } 125 126 @Override 127 public void setGroupCheckable(int group, boolean checkable, 128 boolean exclusive) { 129 130 } 131 132 @Override 133 public void setGroupVisible(int group, boolean visible) { 134 135 } 136 137 @Override 138 public void setGroupEnabled(int group, boolean enabled) { 139 140 } 141 142 @Override 143 public boolean hasVisibleItems() { 144 return false; 145 } 146 147 @Override 148 public MenuItem findItem(int id) { 149 return null; 150 } 151 152 @Override 153 public int size() { 154 155 return 0; 156 } 157 158 @Override 159 public MenuItem getItem(int index) { 160 161 return null; 162 } 163 164 @Override 165 public void close() { 166 167 168 } 169 170 @Override 171 public boolean performShortcut(int keyCode, KeyEvent event, int flags) { 172 173 return false; 174 } 175 176 @Override 177 public boolean isShortcutKey(int keyCode, KeyEvent event) { 178 179 return false; 180 } 181 182 @Override 183 public boolean performIdentifierAction(int id, int flags) { 184 185 return false; 186 } 187 188 @Override 189 public void setQwertyMode(boolean isQwerty) { 190 191 192 } 193 } 194} 195