package org.robolectric.res; import org.junit.Before; import org.junit.Test; import org.robolectric.R; import static org.assertj.core.api.Assertions.assertThat; import static org.robolectric.util.TestUtil.*; public class ResourceTableFactoryTest { private ResourceTable appResourceTable; private ResourceTable systemResourceTable; private ResourceTableFactory resourceTableFactory; @Before public void setUp() throws Exception { ResourceRemapper resourceRemapper = new ResourceRemapper(testResources().getRClass()); resourceRemapper.remapRClass(lib1Resources().getRClass()); resourceRemapper.remapRClass(lib2Resources().getRClass()); resourceRemapper.remapRClass(lib3Resources().getRClass()); resourceTableFactory = new ResourceTableFactory(); appResourceTable = resourceTableFactory.newResourceTable("org.robolectric", lib3Resources(), lib2Resources(), lib1Resources(), testResources()); systemResourceTable = resourceTableFactory.newFrameworkResourceTable(systemResources()); } @Test public void shouldHandleStyleable() throws Exception { assertThat(appResourceTable.getResourceId(new ResName("org.robolectric:id/textStyle"))).isEqualTo(R.id.textStyle); assertThat(appResourceTable.getResourceId(new ResName("org.robolectric:styleable/TitleBar_textStyle"))).isEqualTo(0); } @Test public void shouldPrefixAllSystemResourcesWithAndroid() throws Exception { assertThat(systemResourceTable.getResourceId(new ResName("android:id/text1"))).isEqualTo(android.R.id.text1); } @Test public void shouldRetainPackageNameForFullyQualifiedQueries() throws Exception { assertThat(systemResourceTable.getResName(android.R.id.text1).getFullyQualifiedName()).isEqualTo("android:id/text1"); assertThat(appResourceTable.getResName(R.id.burritos).getFullyQualifiedName()).isEqualTo("org.robolectric:id/burritos"); } @Test public void shouldNotResolveLibraryResourceName() throws Exception { assertThat(appResourceTable.getResourceId(new ResName("org.robolectric", "string", "in_all_libs"))).isEqualTo(R.string.in_all_libs); assertThat(appResourceTable.getResourceId(new ResName("org.robolectric.lib1", "string", "in_all_libs"))).isEqualTo(0); assertThat(appResourceTable.getResourceId(new ResName("org.robolectric.lib2", "string", "in_all_libs"))).isEqualTo(0); assertThat(appResourceTable.getResourceId(new ResName("org.robolectric.lib3", "string", "in_all_libs"))).isEqualTo(0); } }