1a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzpackage com.xtremelabs.robolectric.res;
2613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisher
34c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwinimport android.content.Context;
44c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwinimport android.util.AttributeSet;
51e92500053a1bc745ec8b8d600ac42a13e29271aJesse Toth & Tim Labeeuwimport android.widget.ImageView;
6a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.R;
7a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.util.CustomView;
84c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwinimport org.junit.Before;
9613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisherimport org.junit.Test;
10613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisher
11f2906888dbe454d6b607e123cc5fdfebd190372bJesse Toth & Tim Labeeuwimport static com.xtremelabs.robolectric.util.TestUtil.getSystemResourceDir;
124ac725f9b4cebbf46805fc5e9b2f0eaf3fdd9b29Christian Williamsimport static com.xtremelabs.robolectric.util.TestUtil.resourceFile;
13613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisherimport static org.hamcrest.CoreMatchers.equalTo;
14613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisherimport static org.junit.Assert.assertThat;
15613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisher
16613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisherpublic class AttrResourceLoaderTest {
174c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    private AttrResourceLoader attrResourceLoader;
184c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin
194c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    @Before
204c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    public void setUp() throws Exception {
21613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisher        ResourceExtractor resourceExtractor = new ResourceExtractor();
2229610b43047065c5dc66452d33f0113ac7e65fe8Phil Goodwin        resourceExtractor.addLocalRClass(R.class);
231e92500053a1bc745ec8b8d600ac42a13e29271aJesse Toth & Tim Labeeuw        resourceExtractor.addSystemRClass(android.R.class);
244c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin        attrResourceLoader = new AttrResourceLoader(resourceExtractor);
25e759ba9296f7cf3063cdcab5f288ab6604d80ddbPhil Goodwin        new DocumentLoader(attrResourceLoader).loadResourceXmlDir(resourceFile("res", "values"));
26f2906888dbe454d6b607e123cc5fdfebd190372bJesse Toth & Tim Labeeuw        new DocumentLoader(attrResourceLoader).loadSystemResourceXmlDir(getSystemResourceDir("values"));
274c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    }
284c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin
294c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    @Test
304c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    public void testAttributesAreResolved() throws Exception {
314c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin        assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, "xxx", "itemType", "integer"), equalTo("0"));
324c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin        assertThat(attrResourceLoader.hasAttributeFor(CustomView.class, "xxx", "itemType"), equalTo(true));
33613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisher
344c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin        assertThat(attrResourceLoader.convertValueToEnum(CustomView.class, "xxx", "itemType", "string"), equalTo("1"));
354c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin        assertThat(attrResourceLoader.hasAttributeFor(CustomView.class, "xxx", "otherItemType"), equalTo(false));
364c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    }
37613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisher
384c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    @Test
391e92500053a1bc745ec8b8d600ac42a13e29271aJesse Toth & Tim Labeeuw    public void testAttributesAreResolvedForSystemAttrs() throws Exception {
401e92500053a1bc745ec8b8d600ac42a13e29271aJesse Toth & Tim Labeeuw        String expected = "" + ImageView.ScaleType.FIT_CENTER.ordinal();
411e92500053a1bc745ec8b8d600ac42a13e29271aJesse Toth & Tim Labeeuw        assertThat(attrResourceLoader.convertValueToEnum(ImageView.class, "android", "scaleType", "fitCenter"), equalTo(expected));
421e92500053a1bc745ec8b8d600ac42a13e29271aJesse Toth & Tim Labeeuw        assertThat(attrResourceLoader.hasAttributeFor(ImageView.class, "android", "scaleType"), equalTo(true));
431e92500053a1bc745ec8b8d600ac42a13e29271aJesse Toth & Tim Labeeuw    }
441e92500053a1bc745ec8b8d600ac42a13e29271aJesse Toth & Tim Labeeuw
451e92500053a1bc745ec8b8d600ac42a13e29271aJesse Toth & Tim Labeeuw    @Test
464c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    public void shouldResolveAttributesForSubClasses() throws Exception {
474c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin        assertThat(attrResourceLoader.convertValueToEnum(SubCustomView.class, "xxx", "itemType", "integer"), equalTo("0"));
484c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin        assertThat(attrResourceLoader.hasAttributeFor(SubCustomView.class, "xxx", "itemType"), equalTo(true));
494c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    }
50613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisher
514c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin    private class SubCustomView extends CustomView {
524c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin        public SubCustomView(Context context, AttributeSet attrs) {
534c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin            super(context, attrs);
544c5b57087396dc85c042e3d82a349288b3ecded2Ian Fisher & Phil Goodwin        }
55613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisher    }
56613a45744127aa01759b49930e4e111128f563d5Christian Williams & Ian Fisher}
57