package org.robolectric; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import android.content.res.Resources; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; import org.robolectric.manifest.AndroidManifest; import java.util.List; @RunWith(TestRunners.SelfTest.class) public class ResourceMergerTest { private final Resources resources = RuntimeEnvironment.application.getResources(); @Test public void shouldFetchResourcesFromMergedLibraries() throws Exception { assertEquals("from main", resources.getText(org.robolectric.R.string.only_in_main)); assertEquals("from lib1", resources.getText(org.robolectric.R.string.only_in_lib1)); assertEquals("from lib2", resources.getText(org.robolectric.R.string.only_in_lib2)); assertEquals("from lib3", resources.getText(org.robolectric.R.string.only_in_lib3)); } @Test public void shouldFetchResourcesAccordingToLibraryPrecedence() throws Exception { // main includes lib1 and lib2; lib1 includes lib3 assertEquals("from main", resources.getText(org.robolectric.R.string.in_all_libs)); assertEquals("from lib3", resources.getText(org.robolectric.R.string.in_lib2_and_lib3)); assertEquals("from lib1", resources.getText(org.robolectric.R.string.in_lib1_and_lib3)); assertEquals("from main", resources.getText(org.robolectric.R.string.in_main_and_lib1)); } @Test public void sameIdentifiersFromLibraryRClassesShouldReturnSameValues() throws Exception { assertThat(resources.getText(org.robolectric.R.string.in_all_libs)) .isEqualTo(resources.getText(org.robolectric.lib1.R.string.in_all_libs)); } @Test @Config(manifest="src/test/resources/TestAndroidManifest.xml", libraries="lib1") public void libraryConfigShouldOverrideProjectProperties() throws Exception { AndroidManifest manifest = Shadows.shadowOf(RuntimeEnvironment.application).getAppManifest(); List<AndroidManifest> libraryManifests = manifest.getLibraryManifests(); assertEquals(1, libraryManifests.size()); assertEquals("org.robolectric.lib1", libraryManifests.get(0).getPackageName()); } }