1package org.robolectric.res; 2 3import static org.assertj.core.api.Assertions.assertThat; 4import static org.robolectric.util.TestUtil.gradleAppResources; 5import static org.robolectric.util.TestUtil.testResources; 6 7import org.junit.Before; 8import org.junit.Test; 9import org.junit.runner.RunWith; 10import org.junit.runners.JUnit4; 11import org.robolectric.res.android.ResTable_config; 12 13@RunWith(JUnit4.class) 14public class ResourceParserTest { 15 16 private ResourceTable resourceTable; 17 private ResourceTable gradleResourceTable; 18 private ResTable_config config; 19 20 @Before 21 public void setUp() { 22 ResourceTableFactory resourceTableFactory = new ResourceTableFactory(); 23 resourceTable = resourceTableFactory.newResourceTable("org.robolectric", testResources()); 24 gradleResourceTable = resourceTableFactory.newResourceTable("org.robolectric.gradleapp", gradleAppResources()); 25 config = new ResTable_config(); 26 } 27 28 29 @Test 30 public void shouldLoadDrawableXmlResources() throws Exception { 31 TypedResource value = resourceTable.getValue(new ResName("org.robolectric", "drawable", "rainbow"), config); 32 assertThat(value).isNotNull(); 33 assertThat(value.getResType()).isEqualTo(ResType.DRAWABLE); 34 assertThat(value.isFile()).isTrue(); 35 assertThat((String) value.getData()).contains("rainbow.xml"); 36 } 37 38 @Test 39 public void shouldLoadDrawableBitmapResources() throws Exception { 40 TypedResource value = resourceTable.getValue(new ResName("org.robolectric", "drawable", "an_image"), config); 41 assertThat(value).isNotNull(); 42 assertThat(value.getResType()).isEqualTo(ResType.DRAWABLE); 43 assertThat(value.isFile()).isTrue(); 44 assertThat((String) value.getData()).contains("an_image.png"); 45 } 46 47 @Test 48 public void shouldLoadDrawableBitmapResourcesDefinedByItemTag() throws Exception { 49 TypedResource value = resourceTable.getValue(new ResName("org.robolectric", "drawable", "example_item_drawable"), config); 50 assertThat(value).isNotNull(); 51 assertThat(value.getResType()).isEqualTo(ResType.DRAWABLE); 52 assertThat(value.isReference()).isTrue(); 53 assertThat((String) value.getData()).isEqualTo("@drawable/an_image"); 54 } 55 56 @Test 57 public void shouldLoadIdResourcesDefinedByItemTag() throws Exception { 58 TypedResource value = resourceTable.getValue(new ResName("org.robolectric", "id", "id_declared_in_item_tag"), config); 59 assertThat(value).isNotNull(); 60 assertThat(value.getResType()).isEqualTo(ResType.CHAR_SEQUENCE); 61 assertThat(value.isReference()).isFalse(); 62 assertThat(value.asString()).isEqualTo(""); 63 assertThat((String) value.getData()).isEqualTo(""); 64 } 65 66 @Test 67 public void whenIdItemsHaveStringContent_shouldLoadIdResourcesDefinedByItemTag() throws Exception { 68 TypedResource value2 = resourceTable.getValue(new ResName("org.robolectric", "id", "id_with_string_value"), config); 69 assertThat(value2.asString()).isEqualTo("string value"); 70 } 71 72 @Test 73 public void shouldLoadResourcesFromGradleOutputDirectories() { 74 TypedResource value = gradleResourceTable.getValue(new ResName("org.robolectric.gradleapp", "string", "from_gradle_output"), config); 75 assertThat(value).describedAs("String from gradle output is not loaded").isNotNull(); 76 assertThat(value.asString()).isEqualTo("string example taken from gradle output directory"); 77 } 78 79 @Test 80 public void shouldLoadDimenResourcesFromGradleOutputDirectoriesDefinedByDimenTag() { 81 TypedResource value = gradleResourceTable.getValue(new ResName("org.robolectric.gradleapp", "dimen", "example_dimen"), config); 82 assertThat(value).describedAs("Dimen from gradle output is not loaded").isNotNull(); 83 assertThat(value.asString()).isEqualTo("8dp"); 84 } 85 86 @Test 87 public void shouldLoadDimenResourcesFromGradleOutputDirectoriesDefinedByItemTag() { 88 TypedResource value = gradleResourceTable.getValue(new ResName("org.robolectric.gradleapp", "dimen", "example_item_dimen"), config); 89 assertThat(value).describedAs("Item dimen from gradle output is not loaded").isNotNull(); 90 assertThat(value.asString()).isEqualTo("3.14"); 91 } 92 93 @Test 94 public void shouldLoadStringResourcesFromGradleOutputDirectoriesDefinedByItemTag() { 95 TypedResource value = gradleResourceTable.getValue(new ResName("org.robolectric.gradleapp", "string", "item_from_gradle_output"), config); 96 assertThat(value).describedAs("Item string from gradle output is not loaded").isNotNull(); 97 assertThat(value.asString()).isEqualTo("3.14"); 98 } 99 100 @Test 101 public void shouldLoadColorResourcesFromGradleOutputDirectoriesDefinedByColorTag() { 102 TypedResource value = gradleResourceTable.getValue(new ResName("org.robolectric.gradleapp", "color", "example_color"), config); 103 assertThat(value).describedAs("Color from gradle output is not loaded").isNotNull(); 104 assertThat(value.asString()).isEqualTo("#00FF00FF"); 105 } 106 107 @Test 108 public void shouldLoadColorResourcesFromGradleOutputDirectoriesDefinedByItemTag() { 109 TypedResource value = gradleResourceTable.getValue(new ResName("org.robolectric.gradleapp", "color", "example_item_color"), config); 110 assertThat(value).describedAs("Item color from gradle output is not loaded").isNotNull(); 111 assertThat(value.asString()).isEqualTo("1.0"); 112 } 113} 114