14ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishpackage org.robolectric.manifest; 24ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish 34ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishimport com.google.common.collect.ImmutableList; 4851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport javax.xml.parsers.DocumentBuilder; 5851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport javax.xml.parsers.DocumentBuilderFactory; 6851f2a9519be23c73a9e2929128179b405e2e7a6Christian Williamsimport javax.xml.parsers.ParserConfigurationException; 74ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishimport org.junit.Before; 84ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishimport org.junit.Test; 94ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishimport org.junit.runner.RunWith; 104ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishimport org.junit.runners.JUnit4; 114ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishimport org.mockito.Mock; 124ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishimport org.mockito.MockitoAnnotations; 139cdf65df76a6329399f29da4f4fdfeebdd2ac787Jonathan Gerrishimport org.robolectric.res.ResourceTable; 144ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishimport org.w3c.dom.Element; 154ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishimport org.w3c.dom.Node; 164ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish 174ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish/** 184ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish * Tests for {@link MetaData} 194ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish */ 204ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish@RunWith(JUnit4.class) 214ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrishpublic class MetaDataTest { 224ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish 239cdf65df76a6329399f29da4f4fdfeebdd2ac787Jonathan Gerrish @Mock private ResourceTable resourceProvider; 244ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish 254ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish @Before 264ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish public void setUp() { 274ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish MockitoAnnotations.initMocks(this); 284ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish } 294ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish 3047a4ba7be3fd9069df963aafcac49fdb96ca1426Christian Williams @Test(expected = RoboNotFoundException.class) 3147a4ba7be3fd9069df963aafcac49fdb96ca1426Christian Williams public void testNonExistantResource_throwsResourceNotFoundException() throws Exception { 324ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish Element metaDataElement = createMetaDataNode("aName", "@xml/non_existant_resource"); 334ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish 344ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish MetaData metaData = new MetaData(ImmutableList.<Node>of(metaDataElement)); 356a7bdc7a1b1fbe38142995bde5f05023b8ab86adJonathan Gerrish metaData.init(resourceProvider, "a.package"); 364ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish } 374ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish 384ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish private static Element createMetaDataNode(String name, String value) { 394ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 404ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish Element metaDataElement; 414ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish try { 424ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish DocumentBuilder db = dbf.newDocumentBuilder(); 434ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish metaDataElement = db.newDocument().createElement("meta-data"); 444ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish metaDataElement.setAttribute("android:name", name); 454ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish metaDataElement.setAttribute("android:value", value); 464ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish } catch (ParserConfigurationException e) { 474ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish throw new RuntimeException(e); 484ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish } 494ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish return metaDataElement; 504ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish } 514ed75595fae0ca16a2531b26099603810af54f57Jonathan Gerrish} 52