1 package org.robolectric.shadows; 2 3 import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1; 4 import static com.google.common.truth.Truth.assertThat; 5 6 import android.app.Application; 7 import android.content.ContentResolver; 8 import android.provider.Settings; 9 import android.provider.Settings.Global; 10 import android.provider.Settings.Secure; 11 import android.text.format.DateFormat; 12 import androidx.test.core.app.ApplicationProvider; 13 import androidx.test.ext.junit.runners.AndroidJUnit4; 14 import org.junit.Before; 15 import org.junit.Test; 16 import org.junit.runner.RunWith; 17 import org.robolectric.annotation.Config; 18 19 @RunWith(AndroidJUnit4.class) 20 public class ShadowSettingsTest { 21 22 private ContentResolver contentResolver; 23 private Application context; 24 25 @Before 26 public void setUp() throws Exception { 27 context = ApplicationProvider.getApplicationContext(); 28 contentResolver = context.getContentResolver(); 29 } 30 31 @Test 32 public void testSystemGetInt() throws Exception { 33 assertThat(Settings.System.getInt(contentResolver, "property", 0)).isEqualTo(0); 34 assertThat(Settings.System.getInt(contentResolver, "property", 2)).isEqualTo(2); 35 36 Settings.System.putInt(contentResolver, "property", 1); 37 assertThat(Settings.System.getInt(contentResolver, "property", 0)).isEqualTo(1); 38 39 Settings.System.putString(contentResolver, "property", "11"); 40 assertThat(Settings.System.getInt(contentResolver, "property", 0)).isEqualTo(11); 41 } 42 43 @Test 44 public void testSecureGetInt() throws Exception { 45 assertThat(Settings.Secure.getInt(contentResolver, "property", 0)).isEqualTo(0); 46 assertThat(Settings.Secure.getInt(contentResolver, "property", 2)).isEqualTo(2); 47 48 Settings.Secure.putInt(contentResolver, "property", 1); 49 assertThat(Settings.Secure.getInt(contentResolver, "property", 0)).isEqualTo(1); 50 51 Settings.Secure.putString(contentResolver, "property", "11"); 52 assertThat(Settings.Secure.getInt(contentResolver, "property", 0)).isEqualTo(11); 53 } 54 55 @Test 56 @Config(minSdk = JELLY_BEAN_MR1) 57 public void testGlobalGetInt() throws Exception { 58 assertThat(Settings.Global.getInt(contentResolver, "property", 0)).isEqualTo(0); 59 assertThat(Settings.Global.getInt(contentResolver, "property", 2)).isEqualTo(2); 60 61 Settings.Global.putInt(contentResolver, "property", 1); 62 assertThat(Settings.Global.getInt(contentResolver, "property", 0)).isEqualTo(1); 63 64 Settings.Global.putString(contentResolver, "property", "11"); 65 assertThat(Settings.Global.getInt(contentResolver, "property", 0)).isEqualTo(11); 66 } 67 68 @Test 69 public void testSystemGetString() throws Exception { 70 assertThat(Settings.System.getString(contentResolver, "property")).isNull(); 71 72 Settings.System.putString(contentResolver, "property", "value"); 73 assertThat(Settings.System.getString(contentResolver, "property")).isEqualTo("value"); 74 75 Settings.System.putInt(contentResolver, "property", 123); 76 assertThat(Settings.System.getString(contentResolver, "property")).isEqualTo("123"); 77 78 Settings.System.putLong(contentResolver, "property", 456L); 79 assertThat(Settings.System.getString(contentResolver, "property")).isEqualTo("456"); 80 81 Settings.System.putFloat(contentResolver, "property", 7.89f); 82 assertThat(Settings.System.getString(contentResolver, "property")).isEqualTo("7.89"); 83 } 84 85 @Test 86 public void testSystemGetLong() throws Exception { 87 assertThat(Settings.System.getLong(contentResolver, "property", 10L)).isEqualTo(10L); 88 Settings.System.putLong(contentResolver, "property", 42L); 89 assertThat(Settings.System.getLong(contentResolver, "property")).isEqualTo(42L); 90 assertThat(Settings.System.getLong(contentResolver, "property", 10L)).isEqualTo(42L); 91 92 Settings.System.putString(contentResolver, "property", "11"); 93 assertThat(Settings.System.getLong(contentResolver, "property", 0)).isEqualTo(11L); 94 } 95 96 @Test 97 public void testSystemGetFloat() throws Exception { 98 assertThat(Settings.System.getFloat(contentResolver, "property", 23.23f)).isEqualTo(23.23f); 99 Settings.System.putFloat(contentResolver, "property", 42.42f); 100 assertThat(Settings.System.getFloat(contentResolver, "property", 10L)).isEqualTo(42.42f); 101 102 Settings.System.putString(contentResolver, "property", "11.2"); 103 assertThat(Settings.System.getFloat(contentResolver, "property", 0)).isEqualTo(11.2f); 104 } 105 106 @Test(expected = Settings.SettingNotFoundException.class) 107 public void testSystemGetLong_exception() throws Exception { 108 Settings.System.getLong(contentResolver, "property"); 109 } 110 111 @Test(expected = Settings.SettingNotFoundException.class) 112 public void testSystemGetInt_exception() throws Exception { 113 Settings.System.getInt(contentResolver, "property"); 114 } 115 116 @Test(expected = Settings.SettingNotFoundException.class) 117 public void testSystemGetFloat_exception() throws Exception { 118 Settings.System.getFloat(contentResolver, "property"); 119 } 120 121 @Test 122 public void testSet24HourMode_24() { 123 ShadowSettings.set24HourTimeFormat(true); 124 assertThat(DateFormat.is24HourFormat(context.getBaseContext())).isTrue(); 125 } 126 127 @Test 128 public void testSet24HourMode_12() { 129 ShadowSettings.set24HourTimeFormat(false); 130 assertThat(DateFormat.is24HourFormat(context.getBaseContext())).isFalse(); 131 } 132 133 @Test 134 public void testSetAdbEnabled_settingsSecure_true() { 135 ShadowSettings.setAdbEnabled(true); 136 assertThat(Secure.getInt(context.getContentResolver(), Secure.ADB_ENABLED, 0)).isEqualTo(1); 137 } 138 139 @Test 140 public void testSetAdbEnabled_settingsSecure_false() { 141 ShadowSettings.setAdbEnabled(false); 142 assertThat(Secure.getInt(context.getContentResolver(), Secure.ADB_ENABLED, 1)).isEqualTo(0); 143 } 144 145 @Test 146 @Config(minSdk = JELLY_BEAN_MR1) 147 public void testSetAdbEnabled_sinceJBMR1_settingsGlobal_true() { 148 ShadowSettings.setAdbEnabled(true); 149 assertThat(Global.getInt(context.getContentResolver(), Global.ADB_ENABLED, 0)).isEqualTo(1); 150 } 151 152 @Test 153 @Config(minSdk = JELLY_BEAN_MR1) 154 public void testSetAdbEnabled_sinceJBMR1_settingsGlobal_false() { 155 ShadowSettings.setAdbEnabled(false); 156 assertThat(Global.getInt(context.getContentResolver(), Global.ADB_ENABLED, 1)).isEqualTo(0); 157 } 158 159 @Test 160 public void testSetInstallNonMarketApps_settingsSecure_true() { 161 ShadowSettings.setInstallNonMarketApps(true); 162 assertThat(Secure.getInt(context.getContentResolver(), Secure.INSTALL_NON_MARKET_APPS, 0)) 163 .isEqualTo(1); 164 } 165 166 @Test 167 public void testSetInstallNonMarketApps_settingsSecure_false() { 168 ShadowSettings.setInstallNonMarketApps(false); 169 assertThat(Secure.getInt(context.getContentResolver(), Secure.INSTALL_NON_MARKET_APPS, 1)) 170 .isEqualTo(0); 171 } 172 173 @Test 174 @Config(minSdk = JELLY_BEAN_MR1) 175 public void testSetInstallNonMarketApps_sinceJBMR1_settingsGlobal_true() { 176 ShadowSettings.setInstallNonMarketApps(true); 177 assertThat(Global.getInt(context.getContentResolver(), Global.INSTALL_NON_MARKET_APPS, 0)) 178 .isEqualTo(1); 179 } 180 181 @Test 182 @Config(minSdk = JELLY_BEAN_MR1) 183 public void testSetInstallNonMarketApps_sinceJBMR1_settingsGlobal_false() { 184 ShadowSettings.setInstallNonMarketApps(false); 185 assertThat(Global.getInt(context.getContentResolver(), Global.INSTALL_NON_MARKET_APPS, 1)) 186 .isEqualTo(0); 187 } 188 } 189