diff options
Diffstat (limited to 'v1/src/test/java/com/xtremelabs/robolectric/res/PreferenceLoaderTest.java')
-rw-r--r-- | v1/src/test/java/com/xtremelabs/robolectric/res/PreferenceLoaderTest.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/v1/src/test/java/com/xtremelabs/robolectric/res/PreferenceLoaderTest.java b/v1/src/test/java/com/xtremelabs/robolectric/res/PreferenceLoaderTest.java new file mode 100644 index 000000000..e4da35902 --- /dev/null +++ b/v1/src/test/java/com/xtremelabs/robolectric/res/PreferenceLoaderTest.java @@ -0,0 +1,80 @@ +package com.xtremelabs.robolectric.res; + +import static com.xtremelabs.robolectric.util.TestUtil.resourceFile; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import android.app.Activity; +import android.preference.CheckBoxPreference; +import android.preference.EditTextPreference; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.PreferenceCategory; +import android.preference.PreferenceScreen; +import android.preference.RingtonePreference; + +import com.xtremelabs.robolectric.R; +import com.xtremelabs.robolectric.Robolectric; +import com.xtremelabs.robolectric.WithTestDefaultsRunner; +import com.xtremelabs.robolectric.util.I18nException; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.junit.Assert.assertThat; + +@RunWith(WithTestDefaultsRunner.class) +public class PreferenceLoaderTest { + private PreferenceLoader prefLoader; + + @Before + public void setUp() throws Exception { + Robolectric.bindDefaultShadowClasses(); + + ResourceExtractor resourceExtractor = new ResourceExtractor(); + resourceExtractor.addLocalRClass(R.class); + StringResourceLoader stringResourceLoader = new StringResourceLoader(resourceExtractor); + new DocumentLoader(stringResourceLoader).loadResourceXmlDir(resourceFile("res", "values")); + prefLoader = new PreferenceLoader(resourceExtractor); + new DocumentLoader(prefLoader).loadResourceXmlDir(resourceFile("res", "xml")); + } + + @Test + public void shouldCreateCorrectClasses() { + PreferenceScreen screen = prefLoader.inflatePreferences(new Activity(), "xml/preferences"); + assertThatScreenMatchesExpected(screen); + } + + @Test + public void shouldLoadByResourceId() { + PreferenceScreen screen = prefLoader.inflatePreferences(new Activity(), R.xml.preferences); + assertThatScreenMatchesExpected(screen); + } + + @Test(expected=I18nException.class) + public void shouldThrowI18nExceptionOnPrefsWithBareStrings() throws Exception { + ResourceExtractor resourceExtractor = new ResourceExtractor(); + resourceExtractor.addLocalRClass(R.class); + StringResourceLoader stringResourceLoader = new StringResourceLoader(resourceExtractor); + new DocumentLoader(stringResourceLoader).loadResourceXmlDir(resourceFile("res", "values")); + prefLoader = new PreferenceLoader(resourceExtractor); + prefLoader.setStrictI18n(true); + new DocumentLoader(prefLoader).loadResourceXmlDir(resourceFile("res", "xml")); + + prefLoader.inflatePreferences(Robolectric.application, R.xml.preferences); + } + + protected void assertThatScreenMatchesExpected(PreferenceScreen screen) { + assertThat(screen.getPreferenceCount(), equalTo(6)); + + assertThat(screen.getPreference(0), instanceOf(PreferenceCategory.class)); + assertThat(((PreferenceCategory)screen.getPreference(0)).getPreference(0), instanceOf(Preference.class)); + + assertThat(screen.getPreference(1), instanceOf(CheckBoxPreference.class)); + assertThat(screen.getPreference(2), instanceOf(EditTextPreference.class)); + assertThat(screen.getPreference(3), instanceOf(ListPreference.class)); + assertThat(screen.getPreference(4), instanceOf(Preference.class)); + assertThat(screen.getPreference(5), instanceOf(RingtonePreference.class)); + } +} |