diff --git a/src/com/android/settings/network/UiccSlotUtil.java b/src/com/android/settings/network/UiccSlotUtil.java index 9a157d6ea05..8fdc3700dd6 100644 --- a/src/com/android/settings/network/UiccSlotUtil.java +++ b/src/com/android/settings/network/UiccSlotUtil.java @@ -369,6 +369,7 @@ public class UiccSlotUtil { } return true; }) + .sorted(Comparator.comparingInt(UiccSlotMapping::getLogicalSlotIndex)) .mapToInt(uiccSlotMapping -> uiccSlotMapping.getLogicalSlotIndex()) .findFirst() .orElse(INVALID_LOGICAL_SLOT_ID); diff --git a/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java b/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java index cc9bdfc62e0..2cf984558be 100644 --- a/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java +++ b/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java @@ -454,7 +454,7 @@ public class UiccSlotUtilTest { @Test public void getExcludedLogicalSlotIndex_oneEsimAndFromDualPortsAToPsimAndPort0_logicalSlot1() { // There is only one enabled esimPort0 before user enables the psim. - Collection uiccSlotMappings = createUiccSlotMappingPsimAndPort1(); + Collection uiccSlotMappings = createUiccSlotMappingDualPortsA(); Collection activeSubscriptionInfoList = createActiveSubscriptionInfoListOneSim(0, 0); SubscriptionInfo removedSubInfo = null; @@ -469,7 +469,7 @@ public class UiccSlotUtilTest { @Test public void getExcludedLogicalSlotIndex_oneEsimAndFromDualPortsBToPsimAndPort1_logicalSlot1() { // There is only one enabled esimPort1 before user enables the psim. - Collection uiccSlotMappings = createUiccSlotMappingPsimAndPort1(); + Collection uiccSlotMappings = createUiccSlotMappingDualPortsB(); Collection activeSubscriptionInfoList = createActiveSubscriptionInfoListOneSim(0, 1); SubscriptionInfo removedSubInfo = null; @@ -484,7 +484,7 @@ public class UiccSlotUtilTest { @Test public void getExcludedLogicalSlotIndex_oneEsimAndFromDualPortsBToPsimAndPort0_logicalSlot0() { // There is only one enabled esimPort0 before user enables the psim. - Collection uiccSlotMappings = createUiccSlotMappingPsimAndPort1(); + Collection uiccSlotMappings = createUiccSlotMappingDualPortsB(); Collection activeSubscriptionInfoList = createActiveSubscriptionInfoListOneSim(1, 0); SubscriptionInfo removedSubInfo = null; @@ -552,6 +552,48 @@ public class UiccSlotUtilTest { assertThat(testExcludedLogicalSlotIndex).isEqualTo(verifyExcludedLogicalSlotIndex); } + @Test + public void getExcludedLogicalSlotIndex_noEsimAndFromDualPortsAToPsimAndPort1_logicalSlot0() { + // There is no profiles enabled on either esim port before user enables the psim. + Collection uiccSlotMappings = createUiccSlotMappingDualPortsA(); + Collection activeSubscriptionInfoList = new ArrayList<>(); + SubscriptionInfo removedSubInfo = null; + int verifyExcludedLogicalSlotIndex = 0; + + int testExcludedLogicalSlotIndex = UiccSlotUtil.getExcludedLogicalSlotIndex( + uiccSlotMappings, activeSubscriptionInfoList, removedSubInfo, true); + + assertThat(testExcludedLogicalSlotIndex).isEqualTo(verifyExcludedLogicalSlotIndex); + } + + @Test + public void getExcludedLogicalSlotIndex_noEsimAndFromDualPortsBToPsimAndPort0_logicalSlot0() { + // There is no profiles enabled on either esim port before user enables the psim. + Collection uiccSlotMappings = createUiccSlotMappingDualPortsB(); + Collection activeSubscriptionInfoList = new ArrayList<>(); + SubscriptionInfo removedSubInfo = null; + int verifyExcludedLogicalSlotIndex = 0; + + int testExcludedLogicalSlotIndex = UiccSlotUtil.getExcludedLogicalSlotIndex( + uiccSlotMappings, activeSubscriptionInfoList, removedSubInfo, true); + + assertThat(testExcludedLogicalSlotIndex).isEqualTo(verifyExcludedLogicalSlotIndex); + } + + @Test + public void getExcludedLogicalSlotIndex_noEsimNoOrdingFromDualPortsBToPsimAndPort1_logical0() { + // There is no profiles enabled on either esim port before user enables the psim. + Collection uiccSlotMappings = createUiccSlotMappingDualPortsBNoOrding(); + Collection activeSubscriptionInfoList = new ArrayList<>(); + SubscriptionInfo removedSubInfo = null; + int verifyExcludedLogicalSlotIndex = 0; + + int testExcludedLogicalSlotIndex = UiccSlotUtil.getExcludedLogicalSlotIndex( + uiccSlotMappings, activeSubscriptionInfoList, removedSubInfo, true); + + assertThat(testExcludedLogicalSlotIndex).isEqualTo(verifyExcludedLogicalSlotIndex); + } + private void compareTwoUiccSlotMappings(Collection testUiccSlotMappings, Collection verifyUiccSlotMappings) { assertThat(testUiccSlotMappings.size()).isEqualTo(verifyUiccSlotMappings.size()); @@ -656,7 +698,13 @@ public class UiccSlotUtilTest { return slotMap; } + private List createUiccSlotMappingDualPortsBNoOrding() { + List slotMap = new ArrayList<>(); + slotMap.add(new UiccSlotMapping(0, ESIM_PHYSICAL_SLOT, 1)); + slotMap.add(new UiccSlotMapping(1, ESIM_PHYSICAL_SLOT, 0)); + return slotMap; + } /** * The "oneSimSlotDevice" has below cases * 1) The device is one psim slot and no esim slot