aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/xtremelabs/robolectric/res/AttrResourceLoaderTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/xtremelabs/robolectric/res/AttrResourceLoaderTest.java')
-rw-r--r--src/test/java/com/xtremelabs/robolectric/res/AttrResourceLoaderTest.java60
1 files changed, 54 insertions, 6 deletions
diff --git a/src/test/java/com/xtremelabs/robolectric/res/AttrResourceLoaderTest.java b/src/test/java/com/xtremelabs/robolectric/res/AttrResourceLoaderTest.java
index c1b91e75e..73d4a044d 100644
--- a/src/test/java/com/xtremelabs/robolectric/res/AttrResourceLoaderTest.java
+++ b/src/test/java/com/xtremelabs/robolectric/res/AttrResourceLoaderTest.java
@@ -14,20 +14,30 @@ import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
public class AttrResourceLoaderTest {
+ public static final String SYSTEM_NAMESPACE = "http://schemas.android.com/apk/res/android";
private AttrResourceLoader attrResourceLoader;
@Before
public void setUp() throws Exception {
+ attrResourceLoader = makeResourceLoader();
+ new DocumentLoader(attrResourceLoader).loadResourceXmlDir(resourceFile("res", "values"));
+ new DocumentLoader(attrResourceLoader).loadSystemResourceXmlDir(getSystemResourceDir("values"));
+ }
+
+ private AttrResourceLoader makeResourceLoader() throws Exception {
ResourceExtractor resourceExtractor = new ResourceExtractor();
resourceExtractor.addLocalRClass(R.class);
resourceExtractor.addSystemRClass(android.R.class);
- attrResourceLoader = new AttrResourceLoader(resourceExtractor);
- new DocumentLoader(attrResourceLoader).loadResourceXmlDir(resourceFile("res", "values"));
- new DocumentLoader(attrResourceLoader).loadSystemResourceXmlDir(getSystemResourceDir("values"));
+ return new AttrResourceLoader(resourceExtractor);
}
@Test
- public void testAttributesAreResolved() throws Exception {
+ public void testUnknownAttributesAreUnknown() throws Exception {
+ assertThat(attrResourceLoader.hasAttributeFor(CustomView.class, "xxx", "otherItemType"), equalTo(false));
+ }
+
+ @Test
+ public void testInlineEnumAttributesAreResolved() throws Exception {
assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, "xxx", "itemType", "integer"), equalTo("0"));
assertThat(attrResourceLoader.hasAttributeFor(CustomView.class, "xxx", "itemType"), equalTo(true));
@@ -38,8 +48,32 @@ public class AttrResourceLoaderTest {
@Test
public void testAttributesAreResolvedForSystemAttrs() throws Exception {
String expected = "" + ImageView.ScaleType.FIT_CENTER.ordinal();
- assertThat(attrResourceLoader.convertValueToEnum(ImageView.class, "android", "scaleType", "fitCenter"), equalTo(expected));
- assertThat(attrResourceLoader.hasAttributeFor(ImageView.class, "android", "scaleType"), equalTo(true));
+ assertThat(attrResourceLoader.convertValueToEnum(ImageView.class, SYSTEM_NAMESPACE, "scaleType", "fitCenter"), equalTo(expected));
+ assertThat(attrResourceLoader.hasAttributeFor(ImageView.class, SYSTEM_NAMESPACE, "scaleType"), equalTo(true));
+ }
+
+ @Test
+ public void testGlobalEnumAttributesAreResolved() throws Exception {
+ assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, "xxx", "keycode", "KEYCODE_SOFT_RIGHT"), equalTo("2"));
+ assertThat(attrResourceLoader.hasAttributeFor(CustomView.class, "xxx", "keycode"), equalTo(true));
+
+ assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, "xxx", "keycode", "KEYCODE_HOME"), equalTo("3"));
+ }
+
+ @Test
+ public void testInlineFlagAttributesAreResolved() throws Exception {
+ assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, "xxx", "scrollbars", "horizontal"), equalTo("0x00000100"));
+ assertThat(attrResourceLoader.hasAttributeFor(CustomView.class, "xxx", "scrollbars"), equalTo(true));
+
+ assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, "xxx", "scrollbars", "vertical"), equalTo("0x00000200"));
+ }
+
+ @Test
+ public void testGlobalFlagAttributesAreResolved() throws Exception {
+ assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, "xxx", "gravity", "center"), equalTo("0x11"));
+ assertThat(attrResourceLoader.hasAttributeFor(CustomView.class, "xxx", "gravity"), equalTo(true));
+
+ assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, "xxx", "gravity", "fill_vertical"), equalTo("0x70"));
}
@Test
@@ -47,6 +81,20 @@ public class AttrResourceLoaderTest {
assertThat(attrResourceLoader.convertValueToEnum(SubCustomView.class, "xxx", "itemType", "integer"), equalTo("0"));
assertThat(attrResourceLoader.hasAttributeFor(SubCustomView.class, "xxx", "itemType"), equalTo(true));
}
+
+ @Test
+ public void systemResourcesArePrefixedAndroid() throws Exception {
+ attrResourceLoader = makeResourceLoader();
+ new DocumentLoader(attrResourceLoader).loadSystemResourceXmlDir(resourceFile("res", "values"));
+
+ assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, SYSTEM_NAMESPACE,
+ "gravity", "center"), equalTo("0x11"));
+ assertThat(attrResourceLoader.hasAttributeFor(CustomView.class, SYSTEM_NAMESPACE,
+ "gravity"), equalTo(true));
+
+ assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, SYSTEM_NAMESPACE,
+ "gravity", "fill_vertical"), equalTo("0x70"));
+ }
private class SubCustomView extends CustomView {
public SubCustomView(Context context, AttributeSet attrs) {