1 package org.robolectric.manifest; 2 3 import com.google.common.collect.ImmutableList; 4 import javax.xml.parsers.DocumentBuilder; 5 import javax.xml.parsers.DocumentBuilderFactory; 6 import javax.xml.parsers.ParserConfigurationException; 7 import org.junit.Before; 8 import org.junit.Test; 9 import org.junit.runner.RunWith; 10 import org.junit.runners.JUnit4; 11 import org.mockito.Mock; 12 import org.mockito.MockitoAnnotations; 13 import org.robolectric.res.ResourceTable; 14 import org.w3c.dom.Element; 15 import org.w3c.dom.Node; 16 17 /** 18 * Tests for {@link MetaData} 19 */ 20 @RunWith(JUnit4.class) 21 public class MetaDataTest { 22 23 @Mock private ResourceTable resourceProvider; 24 25 @Before setUp()26 public void setUp() { 27 MockitoAnnotations.initMocks(this); 28 } 29 30 @Test(expected = RoboNotFoundException.class) testNonExistantResource_throwsResourceNotFoundException()31 public void testNonExistantResource_throwsResourceNotFoundException() throws Exception { 32 Element metaDataElement = createMetaDataNode("aName", "@xml/non_existant_resource"); 33 34 MetaData metaData = new MetaData(ImmutableList.<Node>of(metaDataElement)); 35 metaData.init(resourceProvider, "a.package"); 36 } 37 createMetaDataNode(String name, String value)38 private static Element createMetaDataNode(String name, String value) { 39 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 40 Element metaDataElement; 41 try { 42 DocumentBuilder db = dbf.newDocumentBuilder(); 43 metaDataElement = db.newDocument().createElement("meta-data"); 44 metaDataElement.setAttribute("android:name", name); 45 metaDataElement.setAttribute("android:value", value); 46 } catch (ParserConfigurationException e) { 47 throw new RuntimeException(e); 48 } 49 return metaDataElement; 50 } 51 } 52