aboutsummaryrefslogtreecommitdiff
path: root/v1/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'v1/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java')
-rw-r--r--v1/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java106
1 files changed, 106 insertions, 0 deletions
diff --git a/v1/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java b/v1/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java
new file mode 100644
index 000000000..917b2c228
--- /dev/null
+++ b/v1/src/test/java/com/xtremelabs/robolectric/res/ResourceLoaderTest.java
@@ -0,0 +1,106 @@
+package com.xtremelabs.robolectric.res;
+
+
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+import com.xtremelabs.robolectric.R;
+import com.xtremelabs.robolectric.Robolectric;
+import com.xtremelabs.robolectric.WithTestDefaultsRunner;
+import com.xtremelabs.robolectric.util.I18nException;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+
+import static com.xtremelabs.robolectric.util.TestUtil.resourceFile;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.*;
+
+@RunWith(WithTestDefaultsRunner.class)
+public class ResourceLoaderTest {
+ @Test
+ public void shouldUseFileSystemSeparatorWhenEvaluatingLayoutDirectories() throws Exception {
+ assertTrue(ResourceLoader.isLayoutDirectory(File.separator + "layout"));
+ }
+
+ @Test
+ public void shouldLoadSystemResources() throws Exception {
+ ResourceLoader resourceLoader = new ResourceLoader(10, R.class, resourceFile("res"), resourceFile("assets"));
+ String stringValue = resourceLoader.getStringValue(android.R.string.copy);
+ assertEquals("Copy", stringValue);
+
+ ViewLoader.ViewNode node = resourceLoader.getLayoutViewNode("android:layout/simple_spinner_item");
+ assertNotNull(node);
+ }
+
+ @Test
+ public void shouldLoadLocalResources() throws Exception {
+ ResourceLoader resourceLoader = new ResourceLoader(10, R.class, resourceFile("res"), resourceFile("assets"));
+ String stringValue = resourceLoader.getStringValue(R.string.copy);
+ assertEquals("Local Copy", stringValue);
+ }
+
+ @Test(expected=I18nException.class)
+ public void shouldThrowExceptionOnI18nStrictModeInflateView() throws Exception {
+ ResourceLoader resourceLoader = new ResourceLoader(10, R.class, resourceFile("res"), resourceFile("layout"));
+ resourceLoader.setStrictI18n(true);
+ ViewGroup vg = new FrameLayout(Robolectric.application);
+ resourceLoader.inflateView(Robolectric.application, R.layout.text_views, vg);
+ }
+
+ @Test(expected=I18nException.class)
+ public void shouldThrowExceptionOnI18nStrictModeInflateMenu() throws Exception {
+ ResourceLoader resourceLoader = new ResourceLoader(10, R.class, resourceFile("res"), resourceFile("menu"));
+ resourceLoader.setStrictI18n(true);
+ resourceLoader.inflateMenu(Robolectric.application, R.menu.test, null);
+ }
+
+ @Test(expected=I18nException.class)
+ public void shouldThrowExceptionOnI18nStrictModeInflatePreferences() throws Exception {
+ ResourceLoader resourceLoader = new ResourceLoader(10, R.class, resourceFile("res"), resourceFile("xml"));
+ resourceLoader.setStrictI18n(true);
+ resourceLoader.inflatePreferences(Robolectric.application, R.xml.preferences);
+ }
+
+ @Test
+ public void testChoosesLayoutBasedOnSearchPath_respectsOrderOfPath() throws Exception {
+ ResourceLoader resourceLoader = new ResourceLoader(10, R.class, resourceFile("res"), resourceFile("layout"));
+ resourceLoader.setLayoutQualifierSearchPath("does-not-exist", "land", "xlarge");
+ ViewGroup viewGroup = new FrameLayout(Robolectric.application);
+ ViewGroup view = (ViewGroup) resourceLoader.inflateView(Robolectric.application, R.layout.different_screen_sizes, viewGroup);
+ TextView textView = (TextView) view.findViewById(android.R.id.text1);
+ assertThat(textView.getText().toString(), equalTo("land"));
+ }
+
+ @Test
+ public void checkForPollution1() throws Exception {
+ checkForPollutionHelper();
+ }
+
+ @Test
+ public void checkForPollution2() throws Exception {
+ checkForPollutionHelper();
+ }
+
+ private void checkForPollutionHelper() {
+ ResourceLoader resourceLoader = Robolectric.getShadowApplication().getResourceLoader();
+ ViewGroup viewGroup = new FrameLayout(Robolectric.application);
+ ViewGroup view = (ViewGroup) resourceLoader.inflateView(Robolectric.application, R.layout.different_screen_sizes, viewGroup);
+ TextView textView = (TextView) view.findViewById(android.R.id.text1);
+ assertThat(textView.getText().toString(), equalTo("default"));
+ resourceLoader.setLayoutQualifierSearchPath("land"); // testing if this pollutes the other test
+ }
+
+ @Test
+ public void shouldIdentifyNinePatchDrawables() {
+ ResourceLoader resourceLoader = Robolectric.getShadowApplication().getResourceLoader();
+
+ assertThat(resourceLoader.isNinePatchDrawable(R.drawable.nine_patch_drawable), equalTo(true));
+ assertThat(resourceLoader.isNinePatchDrawable(R.drawable.l2_yellow), equalTo(false));
+ assertThat(resourceLoader.isNinePatchDrawable(R.drawable.state_drawable), equalTo(false));
+ assertThat(resourceLoader.isNinePatchDrawable(R.drawable.animation_list), equalTo(false));
+ assertThat(resourceLoader.isNinePatchDrawable(0), equalTo(false));
+ assertThat(resourceLoader.isNinePatchDrawable(-1), equalTo(false));
+ }
+}