aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gerrish <jonathan@indiekid.org>2017-10-31 15:41:48 -0700
committerJonathan Gerrish <jonathan@indiekid.org>2017-10-31 15:41:48 -0700
commit30f1e4305dccc3d594dca060f4f2f253ea57a79b (patch)
tree0198c342a70f7ed0534483db13dc08f418948ae3
parentac512ca254dd14e1e4382ce6109444e5580d9b61 (diff)
downloadrobolectric-shadows-30f1e4305dccc3d594dca060f4f2f253ea57a79b.tar.gz
Support Mipmap resource reference resolution.
This bug was exposed when switching to framework manifest parsing code which resolves these references. Our own hand crafted code did not do this.
-rw-r--r--resources/src/main/java/org/robolectric/res/ResourceTableFactory.java4
-rw-r--r--robolectric/src/test/java/org/robolectric/R.java2
-rw-r--r--robolectric/src/test/java/org/robolectric/res/ResourceTableFactoryTest.java6
-rw-r--r--robolectric/src/test/java/org/robolectric/shadows/ShadowAssetManagerTest.java1
-rw-r--r--robolectric/src/test/java/org/robolectric/shadows/ShadowResourcesTest.java15
5 files changed, 27 insertions, 1 deletions
diff --git a/resources/src/main/java/org/robolectric/res/ResourceTableFactory.java b/resources/src/main/java/org/robolectric/res/ResourceTableFactory.java
index 87d726e4a..033e22c38 100644
--- a/resources/src/main/java/org/robolectric/res/ResourceTableFactory.java
+++ b/resources/src/main/java/org/robolectric/res/ResourceTableFactory.java
@@ -113,9 +113,11 @@ public class ResourceTableFactory {
.addHandler("bool", new StaxValueLoader(resourceTable, "bool", ResType.BOOLEAN))
.addHandler("item[@type='bool']", new StaxValueLoader(resourceTable, "bool", ResType.BOOLEAN))
.addHandler("color", new StaxValueLoader(resourceTable, "color", ResType.COLOR))
- .addHandler("drawable", new StaxValueLoader(resourceTable, "drawable", ResType.DRAWABLE))
.addHandler("item[@type='color']", new StaxValueLoader(resourceTable, "color", ResType.COLOR))
+ .addHandler("drawable", new StaxValueLoader(resourceTable, "drawable", ResType.DRAWABLE))
.addHandler("item[@type='drawable']", new StaxValueLoader(resourceTable, "drawable", ResType.DRAWABLE))
+ .addHandler("mipmap", new StaxValueLoader(resourceTable, "mipmap", ResType.DRAWABLE))
+ .addHandler("item[@type='mipmap']", new StaxValueLoader(resourceTable, "mipmap", ResType.DRAWABLE))
.addHandler("dimen", new StaxValueLoader(resourceTable, "dimen", ResType.DIMEN))
.addHandler("item[@type='dimen']", new StaxValueLoader(resourceTable, "dimen", ResType.DIMEN))
.addHandler("integer", new StaxValueLoader(resourceTable, "integer", ResType.INTEGER))
diff --git a/robolectric/src/test/java/org/robolectric/R.java b/robolectric/src/test/java/org/robolectric/R.java
index 0dfeb547b..0aa1964b8 100644
--- a/robolectric/src/test/java/org/robolectric/R.java
+++ b/robolectric/src/test/java/org/robolectric/R.java
@@ -424,5 +424,7 @@ public final class R {
public static final class mipmap {
public static final int robolectric = 0x7f140000;
+ public static final int mipmap_reference_element = 0x7f140001;
+ public static final int mipmap_reference_item = 0x7f140002;
}
}
diff --git a/robolectric/src/test/java/org/robolectric/res/ResourceTableFactoryTest.java b/robolectric/src/test/java/org/robolectric/res/ResourceTableFactoryTest.java
index c1ad9ff52..caf8fb996 100644
--- a/robolectric/src/test/java/org/robolectric/res/ResourceTableFactoryTest.java
+++ b/robolectric/src/test/java/org/robolectric/res/ResourceTableFactoryTest.java
@@ -38,6 +38,12 @@ public class ResourceTableFactoryTest {
}
@Test
+ public void shouldHandleMipmapReferences() {
+ assertThat(appResourceTable.getResourceId(new ResName("org.robolectric:mipmap/mipmap_reference_item"))).isEqualTo(R.mipmap.mipmap_reference_item);
+ assertThat(appResourceTable.getResourceId(new ResName("org.robolectric:mipmap/mipmap_reference_element"))).isEqualTo(R.mipmap.mipmap_reference_element);
+ }
+
+ @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);
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowAssetManagerTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowAssetManagerTest.java
index 0fb3524a2..fe325c99c 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowAssetManagerTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowAssetManagerTest.java
@@ -15,6 +15,7 @@ import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.util.AttributeSet;
+import android.util.TypedValue;
import com.google.common.io.CharStreams;
import java.io.ByteArrayInputStream;
import java.io.IOException;
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowResourcesTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowResourcesTest.java
index e68789169..e37510b45 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowResourcesTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowResourcesTest.java
@@ -883,6 +883,21 @@ public class ShadowResourcesTest {
.isEqualTo("Up to 25 USD");
}
+ @Test
+ public void getResourceTypeName_mipmap() {
+ assertThat(resources.getResourceTypeName(R.mipmap.mipmap_reference_element)).isEqualTo("mipmap");
+ assertThat(resources.getResourceTypeName(R.mipmap.robolectric)).isEqualTo("mipmap");
+ }
+
+ @Test
+ public void getDrawable_mipmapReferencesResolve() {
+ Drawable reference = resources.getDrawable(R.mipmap.mipmap_reference_element);
+ Drawable original = resources.getDrawable(R.mipmap.robolectric);
+
+ assertThat(reference.getMinimumHeight()).isEqualTo(original.getMinimumHeight());
+ assertThat(reference.getMinimumWidth()).isEqualTo(original.getMinimumWidth());
+ }
+
private static String findRootTag(XmlResourceParser parser) throws Exception {
int event;
do {