Home | History | Annotate | Download | only in shadows
      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