133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
28baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
38baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardimport android.app.Activity;
48baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardimport android.app.Application;
58baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardimport android.content.ContentResolver;
68baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardimport android.provider.Settings;
7345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williamsimport com.xtremelabs.robolectric.Robolectric;
807257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwinimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
98baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardimport org.junit.Before;
108baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardimport org.junit.Test;
118baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardimport org.junit.runner.RunWith;
128baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
13a3030055b95774b06a963ccc9224fac58c887cb2Christian Williams & Phil Goodwinimport static org.hamcrest.CoreMatchers.equalTo;
14fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkelimport static org.hamcrest.CoreMatchers.nullValue;
158baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardimport static org.junit.Assert.assertThat;
168baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
1707257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwin@RunWith(WithTestDefaultsRunner.class)
188baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardpublic class SettingsTest {
198baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    private Activity activity;
208baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    private ContentResolver contentResolver;
218baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
228baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    @Before
238baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    public void setUp() throws Exception {
248baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        activity = new Activity();
258baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        contentResolver = activity.getContentResolver();
268baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    }
278baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
288baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    @Test
298baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    public void whileApplicationStaysSame_shouldRememberOldSettings() throws Exception {
308baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        Settings.System.putInt(contentResolver, "property", 1);
318baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.System.getInt(contentResolver, "property", 0), equalTo(1));
328baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
338baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        activity = new Activity();
348baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        contentResolver = activity.getContentResolver();
358baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.System.getInt(contentResolver, "property", 0), equalTo(1));
368baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    }
378baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
388baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    @Test
398baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    public void whenApplicationChanges_shouldStartWithNewSettings() throws Exception {
408baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        Settings.System.putInt(contentResolver, "property", 1);
418baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.System.getInt(contentResolver, "property", 0), equalTo(1));
428baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
43345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williams        Robolectric.application = new Application();
448baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        activity = new Activity();
458baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        contentResolver = activity.getContentResolver();
468baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.System.getInt(contentResolver, "property", 0), equalTo(0));
478baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    }
488baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
498baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    @Test
508baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    public void testSystemGetInt() throws Exception {
518baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.System.getInt(contentResolver, "property", 0), equalTo(0));
528baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.System.getInt(contentResolver, "property", 2), equalTo(2));
538baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
548baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        Settings.System.putInt(contentResolver, "property", 1);
558baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.System.getInt(contentResolver, "property", 0), equalTo(1));
568baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    }
578baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
588baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    @Test
598baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    public void testSecureGetInt() throws Exception {
608baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.Secure.getInt(contentResolver, "property", 0), equalTo(0));
618baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.Secure.getInt(contentResolver, "property", 2), equalTo(2));
628baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
638baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        Settings.Secure.putInt(contentResolver, "property", 1);
648baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard        assertThat(Settings.Secure.getInt(contentResolver, "property", 0), equalTo(1));
658baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    }
66fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel
67fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    @Test
68fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    public void testSystemGetString() throws Exception {
69fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        assertThat(Settings.System.getString(contentResolver, "property"), nullValue());
70fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel
71fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        Settings.System.putString(contentResolver, "property", "value");
72fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        assertThat(Settings.System.getString(contentResolver, "property"), equalTo("value"));
73fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    }
74fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel
75fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    @Test
76fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    public void testSystemGetLong() throws Exception {
77fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        assertThat(Settings.System.getLong(contentResolver, "property", 10L), equalTo(10L));
78fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        Settings.System.putLong(contentResolver, "property", 42L);
79fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        assertThat(Settings.System.getLong(contentResolver, "property"), equalTo(42L));
80fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        assertThat(Settings.System.getLong(contentResolver, "property", 10L), equalTo(42L));
81fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    }
82fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel
83fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    @Test
84fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    public void testSystemGetFloat() throws Exception {
85fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        assertThat(Settings.System.getFloat(contentResolver, "property", 23.23f), equalTo(23.23f));
86fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        Settings.System.putFloat(contentResolver, "property", 42.42f);
87fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        assertThat(Settings.System.getFloat(contentResolver, "property", 10L), equalTo(42.42f));
88fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    }
89fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel
90fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    @Test(expected = Settings.SettingNotFoundException.class)
91fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    public void testSystemGetLong_exception() throws Exception {
92fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        Settings.System.getLong(contentResolver, "property");
93fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    }
94fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel
95fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    @Test(expected = Settings.SettingNotFoundException.class)
96fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    public void testSystemGetInt_exception() throws Exception {
97fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        Settings.System.getInt(contentResolver, "property");
98fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    }
99fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel
100fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    @Test(expected = Settings.SettingNotFoundException.class)
101fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    public void testSystemGetFloat_exception() throws Exception {
102fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel        Settings.System.getFloat(contentResolver, "property");
103fd3ea5a3a2648261e81c49a1da565d650e58a1a8Jan Berkel    }
1048baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard}
105