diff options
Diffstat (limited to 'src/test/java/com/xtremelabs/robolectric/res/AttrResourceLoaderTest.java')
-rw-r--r-- | src/test/java/com/xtremelabs/robolectric/res/AttrResourceLoaderTest.java | 60 |
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) { |