Loading src/com/android/settings/network/SubscriptionUtil.java +34 −9 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.settings.network; import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT; import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT; import static com.android.internal.util.CollectionUtils.emptyIfNull; import static com.android.internal.util.CollectionUtils.emptyIfNull; import android.annotation.Nullable; import android.annotation.Nullable; Loading Loading @@ -56,6 +55,8 @@ import java.util.Map; import java.util.Set; import java.util.Set; import java.util.function.Function; import java.util.function.Function; import java.util.function.Supplier; import java.util.function.Supplier; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.stream.Stream; Loading @@ -66,6 +67,9 @@ public class SubscriptionUtil { static final String SUB_ID = "sub_id"; static final String SUB_ID = "sub_id"; @VisibleForTesting @VisibleForTesting static final String KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME = "unique_subscription_displayName"; static final String KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME = "unique_subscription_displayName"; private static final String REGEX_DISPLAY_NAME_PREFIXES = "^"; private static final String REGEX_DISPLAY_NAME_SUFFIXES = "\\s[0-9]+"; private static List<SubscriptionInfo> sAvailableResultsForTesting; private static List<SubscriptionInfo> sAvailableResultsForTesting; private static List<SubscriptionInfo> sActiveResultsForTesting; private static List<SubscriptionInfo> sActiveResultsForTesting; Loading Loading @@ -298,12 +302,17 @@ public class SubscriptionUtil { // If a display name is duplicate, append the final 4 digits of the phone number. // If a display name is duplicate, append the final 4 digits of the phone number. // Creates a mapping of Subscription id to original display name + phone number display name // Creates a mapping of Subscription id to original display name + phone number display name final Supplier<Stream<DisplayInfo>> uniqueInfos = () -> originalInfos.get().map(info -> { final Supplier<Stream<DisplayInfo>> uniqueInfos = () -> originalInfos.get().map(info -> { int infoSubId = info.subscriptionInfo.getSubscriptionId(); String cachedDisplayName = getDisplayNameFromSharedPreference( String cachedDisplayName = getDisplayNameFromSharedPreference( context, info.subscriptionInfo.getSubscriptionId()); context, infoSubId); if (!TextUtils.isEmpty(cachedDisplayName)) { if (isValidCachedDisplayName(cachedDisplayName, info.originalName.toString())) { Log.d(TAG, "use cached display name : " + cachedDisplayName); Log.d(TAG, "use cached display name : for subId : " + infoSubId + "cached display name : " + cachedDisplayName); info.uniqueName = cachedDisplayName; info.uniqueName = cachedDisplayName; return info; return info; } else { Log.d(TAG, "remove cached display name : " + infoSubId); removeItemFromDisplayNameSharedPreference(context, infoSubId); } } if (duplicateOriginalNames.contains(info.originalName)) { if (duplicateOriginalNames.contains(info.originalName)) { Loading @@ -320,9 +329,8 @@ public class SubscriptionUtil { } else { } else { info.uniqueName = info.originalName + " " + lastFourDigits; info.uniqueName = info.originalName + " " + lastFourDigits; Log.d(TAG, "Cache display name [" + info.uniqueName + "] for sub id " Log.d(TAG, "Cache display name [" + info.uniqueName + "] for sub id " + info.subscriptionInfo.getSubscriptionId()); + infoSubId); saveDisplayNameToSharedPreference( saveDisplayNameToSharedPreference(context, infoSubId, info.uniqueName); context, info.subscriptionInfo.getSubscriptionId(), info.uniqueName); } } } else { } else { info.uniqueName = info.originalName; info.uniqueName = info.originalName; Loading Loading @@ -404,10 +412,27 @@ public class SubscriptionUtil { .apply(); .apply(); } } private static void removeItemFromDisplayNameSharedPreference(Context context, int subId) { getDisplayNameSharedPreferenceEditor(context) .remove(SUB_ID + subId) .commit(); } private static String getDisplayNameFromSharedPreference(Context context, int subid) { private static String getDisplayNameFromSharedPreference(Context context, int subid) { return getDisplayNameSharedPreferences(context).getString(SUB_ID + subid, ""); return getDisplayNameSharedPreferences(context).getString(SUB_ID + subid, ""); } } @VisibleForTesting static boolean isValidCachedDisplayName(String cachedDisplayName, String originalName) { if (TextUtils.isEmpty(cachedDisplayName) || TextUtils.isEmpty(originalName)) { return false; } String regex = REGEX_DISPLAY_NAME_PREFIXES + originalName + REGEX_DISPLAY_NAME_SUFFIXES; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(cachedDisplayName); return matcher.matches(); } public static String getDisplayName(SubscriptionInfo info) { public static String getDisplayName(SubscriptionInfo info) { final CharSequence name = info.getDisplayName(); final CharSequence name = info.getDisplayName(); if (name != null) { if (name != null) { Loading tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java +99 −12 Original line number Original line Diff line number Diff line Loading @@ -18,9 +18,7 @@ package com.android.settings.network; import static com.android.settings.network.SubscriptionUtil.KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME; import static com.android.settings.network.SubscriptionUtil.KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME; import static com.android.settings.network.SubscriptionUtil.SUB_ID; import static com.android.settings.network.SubscriptionUtil.SUB_ID; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString; Loading Loading @@ -185,7 +183,7 @@ public class SubscriptionUtilTest { @Ignore @Ignore @Test @Test public void getUniqueDisplayNames_identicalCarriers_fourDigitsUsed() { public void getUniqueDisplayNames_identicalCarriers_fourDigitsUsed() { // Both subscriptoins have the same display name. // Both subscriptions have the same display name. final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info1.getSubscriptionId()).thenReturn(SUBID_1); Loading Loading @@ -215,7 +213,7 @@ public class SubscriptionUtilTest { @Ignore @Ignore @Test @Test public void getUniqueDisplayNames_identicalCarriersAfterTrim_fourDigitsUsed() { public void getUniqueDisplayNames_identicalCarriersAfterTrim_fourDigitsUsed() { // Both subscriptoins have the same display name. // Both subscriptions have the same display name. final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info1.getSubscriptionId()).thenReturn(SUBID_1); Loading Loading @@ -244,8 +242,8 @@ public class SubscriptionUtilTest { @Ignore @Ignore @Test @Test public void getUniqueDisplayNames_phoneNumberBlocked_subscriptoinIdFallback() { public void getUniqueDisplayNames_phoneNumberBlocked_subscriptionIdFallback() { // Both subscriptoins have the same display name. // Both subscriptions have the same display name. final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info1.getSubscriptionId()).thenReturn(SUBID_1); Loading Loading @@ -273,9 +271,9 @@ public class SubscriptionUtilTest { @Ignore @Ignore @Test @Test public void getUniqueDisplayNames_phoneNumberIdentical_subscriptoinIdFallback() { public void getUniqueDisplayNames_phoneNumberIdentical_subscriptionIdFallback() { // TODO have three here from the same carrier // TODO have three here from the same carrier // Both subscriptoins have the same display name. // Both subscriptions have the same display name. final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info3 = mock(SubscriptionInfo.class); final SubscriptionInfo info3 = mock(SubscriptionInfo.class); Loading Loading @@ -479,6 +477,39 @@ public class SubscriptionUtilTest { assertEquals(CARRIER_1 + " 4321", nameOfSub2.toString()); assertEquals(CARRIER_1 + " 4321", nameOfSub2.toString()); } } @Test public void getUniqueDisplayName_hasRecordAndNameIsChanged_doesNotUseRecordBeTheResult() { final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info2.getSubscriptionId()).thenReturn(SUBID_2); when(info1.getDisplayName()).thenReturn(CARRIER_1); when(info2.getDisplayName()).thenReturn(CARRIER_2); when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn( Arrays.asList(info1, info2)); SharedPreferences sp = mock(SharedPreferences.class); SharedPreferences.Editor editor = mock(SharedPreferences.Editor.class); when(mContext.getSharedPreferences( KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME, Context.MODE_PRIVATE)).thenReturn(sp); when(sp.edit()).thenReturn(editor); when(editor.remove(anyString())).thenReturn(editor); when(sp.getString(eq(SUB_ID + SUBID_1), anyString())).thenReturn(CARRIER_1 + " 6789"); when(sp.getString(eq(SUB_ID + SUBID_2), anyString())).thenReturn(CARRIER_1 + " 4321"); final CharSequence nameOfSub1 = SubscriptionUtil.getUniqueSubscriptionDisplayName(info1, mContext); final CharSequence nameOfSub2 = SubscriptionUtil.getUniqueSubscriptionDisplayName(info2, mContext); assertThat(nameOfSub1).isNotNull(); assertThat(nameOfSub2).isNotNull(); assertEquals(CARRIER_1 + " 6789", nameOfSub1.toString()); assertEquals(CARRIER_2.toString(), nameOfSub2.toString()); } @Test @Test public void isInactiveInsertedPSim_nullSubInfo_doesNotCrash() { public void isInactiveInsertedPSim_nullSubInfo_doesNotCrash() { assertThat(SubscriptionUtil.isInactiveInsertedPSim(null)).isFalse(); assertThat(SubscriptionUtil.isInactiveInsertedPSim(null)).isFalse(); Loading @@ -501,4 +532,60 @@ public class SubscriptionUtilTest { assertTrue(SubscriptionUtil.isSimHardwareVisible(mContext)); assertTrue(SubscriptionUtil.isSimHardwareVisible(mContext)); } } @Test public void isValidCachedDisplayName_matchesRule1_returnTrue() { String originalName = "originalName"; String cacheString = "originalName 1234"; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isTrue(); } @Test public void isValidCachedDisplayName_matchesRule2_returnTrue() { String originalName = "original Name"; String cacheString = originalName + " " + 1234; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isTrue(); } @Test public void isValidCachedDisplayName_nameIsEmpty1_returnFalse() { String originalName = "original Name"; String cacheString = ""; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } @Test public void isValidCachedDisplayName_nameIsEmpty2_returnFalse() { String originalName = ""; String cacheString = "originalName 1234"; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } @Test public void isValidCachedDisplayName_nameIsDifferent_returnFalse() { String originalName = "original Name"; String cacheString = "originalName 1234"; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } @Test public void isValidCachedDisplayName_noNumber_returnFalse() { String originalName = "original Name"; String cacheString = originalName; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } @Test public void isValidCachedDisplayName_noSpace_returnFalse() { String originalName = "original Name"; String cacheString = originalName; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } } } Loading
src/com/android/settings/network/SubscriptionUtil.java +34 −9 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.settings.network; import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT; import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT; import static com.android.internal.util.CollectionUtils.emptyIfNull; import static com.android.internal.util.CollectionUtils.emptyIfNull; import android.annotation.Nullable; import android.annotation.Nullable; Loading Loading @@ -56,6 +55,8 @@ import java.util.Map; import java.util.Set; import java.util.Set; import java.util.function.Function; import java.util.function.Function; import java.util.function.Supplier; import java.util.function.Supplier; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.stream.Stream; Loading @@ -66,6 +67,9 @@ public class SubscriptionUtil { static final String SUB_ID = "sub_id"; static final String SUB_ID = "sub_id"; @VisibleForTesting @VisibleForTesting static final String KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME = "unique_subscription_displayName"; static final String KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME = "unique_subscription_displayName"; private static final String REGEX_DISPLAY_NAME_PREFIXES = "^"; private static final String REGEX_DISPLAY_NAME_SUFFIXES = "\\s[0-9]+"; private static List<SubscriptionInfo> sAvailableResultsForTesting; private static List<SubscriptionInfo> sAvailableResultsForTesting; private static List<SubscriptionInfo> sActiveResultsForTesting; private static List<SubscriptionInfo> sActiveResultsForTesting; Loading Loading @@ -298,12 +302,17 @@ public class SubscriptionUtil { // If a display name is duplicate, append the final 4 digits of the phone number. // If a display name is duplicate, append the final 4 digits of the phone number. // Creates a mapping of Subscription id to original display name + phone number display name // Creates a mapping of Subscription id to original display name + phone number display name final Supplier<Stream<DisplayInfo>> uniqueInfos = () -> originalInfos.get().map(info -> { final Supplier<Stream<DisplayInfo>> uniqueInfos = () -> originalInfos.get().map(info -> { int infoSubId = info.subscriptionInfo.getSubscriptionId(); String cachedDisplayName = getDisplayNameFromSharedPreference( String cachedDisplayName = getDisplayNameFromSharedPreference( context, info.subscriptionInfo.getSubscriptionId()); context, infoSubId); if (!TextUtils.isEmpty(cachedDisplayName)) { if (isValidCachedDisplayName(cachedDisplayName, info.originalName.toString())) { Log.d(TAG, "use cached display name : " + cachedDisplayName); Log.d(TAG, "use cached display name : for subId : " + infoSubId + "cached display name : " + cachedDisplayName); info.uniqueName = cachedDisplayName; info.uniqueName = cachedDisplayName; return info; return info; } else { Log.d(TAG, "remove cached display name : " + infoSubId); removeItemFromDisplayNameSharedPreference(context, infoSubId); } } if (duplicateOriginalNames.contains(info.originalName)) { if (duplicateOriginalNames.contains(info.originalName)) { Loading @@ -320,9 +329,8 @@ public class SubscriptionUtil { } else { } else { info.uniqueName = info.originalName + " " + lastFourDigits; info.uniqueName = info.originalName + " " + lastFourDigits; Log.d(TAG, "Cache display name [" + info.uniqueName + "] for sub id " Log.d(TAG, "Cache display name [" + info.uniqueName + "] for sub id " + info.subscriptionInfo.getSubscriptionId()); + infoSubId); saveDisplayNameToSharedPreference( saveDisplayNameToSharedPreference(context, infoSubId, info.uniqueName); context, info.subscriptionInfo.getSubscriptionId(), info.uniqueName); } } } else { } else { info.uniqueName = info.originalName; info.uniqueName = info.originalName; Loading Loading @@ -404,10 +412,27 @@ public class SubscriptionUtil { .apply(); .apply(); } } private static void removeItemFromDisplayNameSharedPreference(Context context, int subId) { getDisplayNameSharedPreferenceEditor(context) .remove(SUB_ID + subId) .commit(); } private static String getDisplayNameFromSharedPreference(Context context, int subid) { private static String getDisplayNameFromSharedPreference(Context context, int subid) { return getDisplayNameSharedPreferences(context).getString(SUB_ID + subid, ""); return getDisplayNameSharedPreferences(context).getString(SUB_ID + subid, ""); } } @VisibleForTesting static boolean isValidCachedDisplayName(String cachedDisplayName, String originalName) { if (TextUtils.isEmpty(cachedDisplayName) || TextUtils.isEmpty(originalName)) { return false; } String regex = REGEX_DISPLAY_NAME_PREFIXES + originalName + REGEX_DISPLAY_NAME_SUFFIXES; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(cachedDisplayName); return matcher.matches(); } public static String getDisplayName(SubscriptionInfo info) { public static String getDisplayName(SubscriptionInfo info) { final CharSequence name = info.getDisplayName(); final CharSequence name = info.getDisplayName(); if (name != null) { if (name != null) { Loading
tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java +99 −12 Original line number Original line Diff line number Diff line Loading @@ -18,9 +18,7 @@ package com.android.settings.network; import static com.android.settings.network.SubscriptionUtil.KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME; import static com.android.settings.network.SubscriptionUtil.KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME; import static com.android.settings.network.SubscriptionUtil.SUB_ID; import static com.android.settings.network.SubscriptionUtil.SUB_ID; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString; Loading Loading @@ -185,7 +183,7 @@ public class SubscriptionUtilTest { @Ignore @Ignore @Test @Test public void getUniqueDisplayNames_identicalCarriers_fourDigitsUsed() { public void getUniqueDisplayNames_identicalCarriers_fourDigitsUsed() { // Both subscriptoins have the same display name. // Both subscriptions have the same display name. final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info1.getSubscriptionId()).thenReturn(SUBID_1); Loading Loading @@ -215,7 +213,7 @@ public class SubscriptionUtilTest { @Ignore @Ignore @Test @Test public void getUniqueDisplayNames_identicalCarriersAfterTrim_fourDigitsUsed() { public void getUniqueDisplayNames_identicalCarriersAfterTrim_fourDigitsUsed() { // Both subscriptoins have the same display name. // Both subscriptions have the same display name. final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info1.getSubscriptionId()).thenReturn(SUBID_1); Loading Loading @@ -244,8 +242,8 @@ public class SubscriptionUtilTest { @Ignore @Ignore @Test @Test public void getUniqueDisplayNames_phoneNumberBlocked_subscriptoinIdFallback() { public void getUniqueDisplayNames_phoneNumberBlocked_subscriptionIdFallback() { // Both subscriptoins have the same display name. // Both subscriptions have the same display name. final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info1.getSubscriptionId()).thenReturn(SUBID_1); Loading Loading @@ -273,9 +271,9 @@ public class SubscriptionUtilTest { @Ignore @Ignore @Test @Test public void getUniqueDisplayNames_phoneNumberIdentical_subscriptoinIdFallback() { public void getUniqueDisplayNames_phoneNumberIdentical_subscriptionIdFallback() { // TODO have three here from the same carrier // TODO have three here from the same carrier // Both subscriptoins have the same display name. // Both subscriptions have the same display name. final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); final SubscriptionInfo info3 = mock(SubscriptionInfo.class); final SubscriptionInfo info3 = mock(SubscriptionInfo.class); Loading Loading @@ -479,6 +477,39 @@ public class SubscriptionUtilTest { assertEquals(CARRIER_1 + " 4321", nameOfSub2.toString()); assertEquals(CARRIER_1 + " 4321", nameOfSub2.toString()); } } @Test public void getUniqueDisplayName_hasRecordAndNameIsChanged_doesNotUseRecordBeTheResult() { final SubscriptionInfo info1 = mock(SubscriptionInfo.class); final SubscriptionInfo info2 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info2.getSubscriptionId()).thenReturn(SUBID_2); when(info1.getDisplayName()).thenReturn(CARRIER_1); when(info2.getDisplayName()).thenReturn(CARRIER_2); when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn( Arrays.asList(info1, info2)); SharedPreferences sp = mock(SharedPreferences.class); SharedPreferences.Editor editor = mock(SharedPreferences.Editor.class); when(mContext.getSharedPreferences( KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME, Context.MODE_PRIVATE)).thenReturn(sp); when(sp.edit()).thenReturn(editor); when(editor.remove(anyString())).thenReturn(editor); when(sp.getString(eq(SUB_ID + SUBID_1), anyString())).thenReturn(CARRIER_1 + " 6789"); when(sp.getString(eq(SUB_ID + SUBID_2), anyString())).thenReturn(CARRIER_1 + " 4321"); final CharSequence nameOfSub1 = SubscriptionUtil.getUniqueSubscriptionDisplayName(info1, mContext); final CharSequence nameOfSub2 = SubscriptionUtil.getUniqueSubscriptionDisplayName(info2, mContext); assertThat(nameOfSub1).isNotNull(); assertThat(nameOfSub2).isNotNull(); assertEquals(CARRIER_1 + " 6789", nameOfSub1.toString()); assertEquals(CARRIER_2.toString(), nameOfSub2.toString()); } @Test @Test public void isInactiveInsertedPSim_nullSubInfo_doesNotCrash() { public void isInactiveInsertedPSim_nullSubInfo_doesNotCrash() { assertThat(SubscriptionUtil.isInactiveInsertedPSim(null)).isFalse(); assertThat(SubscriptionUtil.isInactiveInsertedPSim(null)).isFalse(); Loading @@ -501,4 +532,60 @@ public class SubscriptionUtilTest { assertTrue(SubscriptionUtil.isSimHardwareVisible(mContext)); assertTrue(SubscriptionUtil.isSimHardwareVisible(mContext)); } } @Test public void isValidCachedDisplayName_matchesRule1_returnTrue() { String originalName = "originalName"; String cacheString = "originalName 1234"; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isTrue(); } @Test public void isValidCachedDisplayName_matchesRule2_returnTrue() { String originalName = "original Name"; String cacheString = originalName + " " + 1234; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isTrue(); } @Test public void isValidCachedDisplayName_nameIsEmpty1_returnFalse() { String originalName = "original Name"; String cacheString = ""; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } @Test public void isValidCachedDisplayName_nameIsEmpty2_returnFalse() { String originalName = ""; String cacheString = "originalName 1234"; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } @Test public void isValidCachedDisplayName_nameIsDifferent_returnFalse() { String originalName = "original Name"; String cacheString = "originalName 1234"; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } @Test public void isValidCachedDisplayName_noNumber_returnFalse() { String originalName = "original Name"; String cacheString = originalName; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } @Test public void isValidCachedDisplayName_noSpace_returnFalse() { String originalName = "original Name"; String cacheString = originalName; assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isFalse(); } } }