diff --git a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressFeminineControllerTest.java b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressFeminineControllerTest.java
index c04e5f9..fab25ca 100644
--- a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressFeminineControllerTest.java
+++ b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressFeminineControllerTest.java
@@ -22,7 +22,9 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.spy;
 
+import android.app.GrammaticalInflectionManager;
 import android.content.Context;
+import android.content.res.Configuration;
 import android.os.Looper;
 
 import com.android.settings.widget.TickButtonPreference;
@@ -58,6 +60,7 @@
     private TickButtonPreference mMasculinePreference;
     private TickButtonPreference mNotSpecifiedPreference;
     private TickButtonPreference mNeutralPreference;
+    private GrammaticalInflectionManager mGrammaticalInflectionManager;
 
     @Before
     public void setUp() throws Exception {
@@ -68,6 +71,8 @@
             Looper.prepare();
         }
 
+        mGrammaticalInflectionManager = mContext.getSystemService(
+                GrammaticalInflectionManager.class);
         mPreferenceManager = new PreferenceManager(mContext);
         mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
         mPreferenceCategory = new PreferenceCategory(mContext);
@@ -93,12 +98,10 @@
     public void displayPreference_setGrammaticalGenderIsFeminine_FeminineIsSelected() {
         TickButtonPreference selectedPreference =
                 (TickButtonPreference) mPreferenceScreen.getPreference(2);
-        TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(1);
-
         selectedPreference.performClick();
 
         assertThat(selectedPreference.getKey()).isEqualTo(KEY_FEMININE);
-        assertThat(selectedPreference.isSelected()).isTrue();
-        assertThat(pref.isSelected()).isFalse();
+        assertThat(mGrammaticalInflectionManager.getSystemGrammaticalGender()).isEqualTo(
+                Configuration.GRAMMATICAL_GENDER_FEMININE);
     }
 }
diff --git a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressMasculineControllerTest.java b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressMasculineControllerTest.java
index c2298be..e794405 100644
--- a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressMasculineControllerTest.java
+++ b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressMasculineControllerTest.java
@@ -22,7 +22,9 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.spy;
 
+import android.app.GrammaticalInflectionManager;
 import android.content.Context;
+import android.content.res.Configuration;
 import android.os.Looper;
 
 import com.android.settings.widget.TickButtonPreference;
@@ -58,6 +60,7 @@
     private TickButtonPreference mMasculinePreference;
     private TickButtonPreference mNotSpecifiedPreference;
     private TickButtonPreference mNeutralPreference;
+    private GrammaticalInflectionManager mGrammaticalInflectionManager;
 
     @Before
     public void setUp() throws Exception {
@@ -68,6 +71,8 @@
             Looper.prepare();
         }
 
+        mGrammaticalInflectionManager = mContext.getSystemService(
+                GrammaticalInflectionManager.class);
         mPreferenceManager = new PreferenceManager(mContext);
         mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
         mPreferenceCategory = new PreferenceCategory(mContext);
@@ -93,12 +98,10 @@
     public void displayPreference_setGrammaticalGenderIsMasculine_MasculineIsSelected() {
         TickButtonPreference selectedPreference =
                 (TickButtonPreference) mPreferenceScreen.getPreference(3);
-        TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(1);
-
         selectedPreference.performClick();
 
         assertThat(selectedPreference.getKey()).isEqualTo(KEY_MASCULINE);
-        assertThat(selectedPreference.isSelected()).isTrue();
-        assertThat(pref.isSelected()).isFalse();
+        assertThat(mGrammaticalInflectionManager.getSystemGrammaticalGender()).isEqualTo(
+                Configuration.GRAMMATICAL_GENDER_MASCULINE);
     }
 }
diff --git a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNeutralControllerTest.java b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNeutralControllerTest.java
index fb207fc..ac38243 100644
--- a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNeutralControllerTest.java
+++ b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNeutralControllerTest.java
@@ -22,7 +22,9 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.spy;
 
+import android.app.GrammaticalInflectionManager;
 import android.content.Context;
+import android.content.res.Configuration;
 import android.os.Looper;
 
 import com.android.settings.widget.TickButtonPreference;
@@ -58,6 +60,7 @@
     private TickButtonPreference mMasculinePreference;
     private TickButtonPreference mNotSpecifiedPreference;
     private TickButtonPreference mNeutralPreference;
+    private GrammaticalInflectionManager mGrammaticalInflectionManager;
 
     @Before
     public void setUp() throws Exception {
@@ -68,6 +71,8 @@
             Looper.prepare();
         }
 
+        mGrammaticalInflectionManager = mContext.getSystemService(
+                GrammaticalInflectionManager.class);
         mPreferenceManager = new PreferenceManager(mContext);
         mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
         mPreferenceCategory = new PreferenceCategory(mContext);
@@ -93,12 +98,10 @@
     public void displayPreference_setGrammaticalGenderIsNotSpecified_NotSpecifiedIsSelected() {
         TickButtonPreference selectedPreference =
                 (TickButtonPreference) mPreferenceScreen.getPreference(4);
-        TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(1);
-
         selectedPreference.performClick();
 
         assertThat(selectedPreference.getKey()).isEqualTo(KEY_NEUTRAL);
-        assertThat(selectedPreference.isSelected()).isTrue();
-        assertThat(pref.isSelected()).isFalse();
+        assertThat(mGrammaticalInflectionManager.getSystemGrammaticalGender()).isEqualTo(
+                Configuration.GRAMMATICAL_GENDER_NEUTRAL);
     }
 }
diff --git a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNotSpecifiedControllerTest.java b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNotSpecifiedControllerTest.java
index 8492c3b..fd7d60d 100644
--- a/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNotSpecifiedControllerTest.java
+++ b/tests/unit/src/com/android/settings/localepicker/TermsOfAddressNotSpecifiedControllerTest.java
@@ -22,7 +22,9 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.spy;
 
+import android.app.GrammaticalInflectionManager;
 import android.content.Context;
+import android.content.res.Configuration;
 import android.os.Looper;
 
 import com.android.settings.widget.TickButtonPreference;
@@ -58,6 +60,7 @@
     private TickButtonPreference mMasculinePreference;
     private TickButtonPreference mNotSpecifiedPreference;
     private TickButtonPreference mNeutralPreference;
+    private GrammaticalInflectionManager mGrammaticalInflectionManager;
 
     @Before
     public void setUp() throws Exception {
@@ -68,6 +71,8 @@
             Looper.prepare();
         }
 
+        mGrammaticalInflectionManager = mContext.getSystemService(
+                GrammaticalInflectionManager.class);
         mPreferenceManager = new PreferenceManager(mContext);
         mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
         mPreferenceCategory = new PreferenceCategory(mContext);
@@ -93,12 +98,10 @@
     public void displayPreference_setGrammaticalGenderIsNotSpecified_NotSpecifiedIsSelected() {
         TickButtonPreference selectedPreference =
                 (TickButtonPreference) mPreferenceScreen.getPreference(1);
-        TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(2);
-
         selectedPreference.performClick();
 
         assertThat(selectedPreference.getKey()).isEqualTo(KEY_NOT_SPECIFIED);
-        assertThat(selectedPreference.isSelected()).isTrue();
-        assertThat(pref.isSelected()).isFalse();
+        assertThat(mGrammaticalInflectionManager.getSystemGrammaticalGender()).isEqualTo(
+                Configuration.GRAMMATICAL_GENDER_NOT_SPECIFIED);
     }
 }
diff --git a/tests/unit/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListControllerTest.java b/tests/unit/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListControllerTest.java
index 1dc16c0..3b72cba 100644
--- a/tests/unit/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListControllerTest.java
+++ b/tests/unit/src/com/android/settings/regionalpreferences/FirstDayOfWeekItemListControllerTest.java
@@ -97,7 +97,8 @@
                 mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);
 
         assertThat(pref.getKey()).isEqualTo("default");
-        assertThat(record).contains("default");
+        assertThat(
+                RegionalPreferencesDataUtils.dayConverter(mContext, record)).contains("default");
     }
 
     @Test
diff --git a/tests/unit/src/com/android/settings/regionalpreferences/TemperatureUnitListControllerTest.java b/tests/unit/src/com/android/settings/regionalpreferences/TemperatureUnitListControllerTest.java
index 73bc193..0417443 100644
--- a/tests/unit/src/com/android/settings/regionalpreferences/TemperatureUnitListControllerTest.java
+++ b/tests/unit/src/com/android/settings/regionalpreferences/TemperatureUnitListControllerTest.java
@@ -94,7 +94,9 @@
                 mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);
 
         assertThat(pref.getKey()).isEqualTo("default");
-        assertThat(record).contains("default");
+        assertThat(
+                RegionalPreferencesDataUtils.temperatureUnitsConverter(mContext, record))
+                .contains("default");
     }
 
     @Test
