aboutsummaryrefslogtreecommitdiff
path: root/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java')
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
index 846b48e3f7..5f592d19e0 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
@@ -16,6 +16,9 @@
package com.android.internal.telephony;
+import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_EMERGENCY;
+import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS;
+
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertArrayEquals;
@@ -96,6 +99,7 @@ import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager;
import com.android.internal.telephony.data.AccessNetworksManager;
import com.android.internal.telephony.data.DataNetworkController;
import com.android.internal.telephony.metrics.ServiceStateStats;
+import com.android.internal.telephony.satellite.SatelliteController;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
import com.android.internal.telephony.test.SimulatedCommands;
import com.android.internal.telephony.uicc.IccCardApplicationStatus;
@@ -116,6 +120,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.Executor;
+import java.util.stream.Collectors;
public class ServiceStateTrackerTest extends TelephonyTest {
// Mocked classes
@@ -138,6 +143,7 @@ public class ServiceStateTrackerTest extends TelephonyTest {
private ServiceStateTracker sst;
private ServiceStateTrackerTestHandler mSSTTestHandler;
private PersistableBundle mBundle;
+ private SatelliteController mSatelliteController;
private static final int EVENT_REGISTERED_TO_NETWORK = 1;
private static final int EVENT_SUBSCRIPTION_INFO_READY = 2;
@@ -248,6 +254,11 @@ public class ServiceStateTrackerTest extends TelephonyTest {
mSubInfoInternal = new SubscriptionInfoInternal.Builder().setId(1).build();
mServiceStateStats = Mockito.mock(ServiceStateStats.class);
+ mSatelliteController = Mockito.mock(SatelliteController.class);
+ replaceInstance(SatelliteController.class, "sInstance", null,
+ mSatelliteController);
+ doReturn(new ArrayList<>()).when(mSatelliteController).getSatellitePlmnList();
+
mContextFixture.putResource(R.string.kg_text_message_separator, " \u2014 ");
doReturn(mSubInfoInternal).when(mSubscriptionManagerService)
@@ -2763,6 +2774,11 @@ public class ServiceStateTrackerTest extends TelephonyTest {
ss.setEmergencyOnly(true);
sst.mSS = ss;
+ // The other phone is in service
+ ss = new ServiceState();
+ doReturn(ss).when(mSST).getServiceState();
+ doReturn(ServiceState.STATE_IN_SERVICE).when(mSST).getCombinedRegState(ss);
+
// update the spn
sst.updateSpnDisplay();
@@ -3208,4 +3224,55 @@ public class ServiceStateTrackerTest extends TelephonyTest {
assertTrue(sst.mSS.isIwlanPreferred());
}
+
+ @Test
+ public void testRegisterToSatellite() {
+ int[] satelliteSupportedServices = {SERVICE_TYPE_SMS, SERVICE_TYPE_EMERGENCY};
+ List<Integer> satelliteSupportedServiceList =
+ Arrays.stream(satelliteSupportedServices).boxed().collect(Collectors.toList());
+ CellIdentityGsm cellIdentity =
+ new CellIdentityGsm(0, 1, 900, 5, "101", "23", "test", "tst",
+ Collections.emptyList());
+ doReturn(Arrays.asList("10123")).when(mSatelliteController).getSatellitePlmnList();
+ doReturn(satelliteSupportedServiceList).when(mSatelliteController)
+ .getSupportedSatelliteServices(sst.mSubId, "10123");
+
+ assertFalse(sst.mSS.isUsingNonTerrestrialNetwork());
+
+ // Data registered to satellite roaming PLMN - "00101"
+ NetworkRegistrationInfo dataReg = new NetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+ 5, 16, 0, false, null, cellIdentity, getPlmnFromCellIdentity(cellIdentity),
+ 1, false, false, false, null);
+
+ // CS out of service
+ NetworkRegistrationInfo voiceReg = new NetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+ 0, 16, 0, true, null, cellIdentity, getPlmnFromCellIdentity(cellIdentity),
+ false, 0, 0, 0);
+
+ sst.mPollingContext[0] = 2;
+ // Update voice reg state to be in oos
+ sst.sendMessage(sst.obtainMessage(
+ ServiceStateTracker.EVENT_POLL_STATE_CS_CELLULAR_REGISTRATION,
+ new AsyncResult(sst.mPollingContext, voiceReg, null)));
+ waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
+
+ // Update data registered to satellite roaming PLMN
+ sst.sendMessage(sst.obtainMessage(
+ ServiceStateTracker.EVENT_POLL_STATE_PS_CELLULAR_REGISTRATION,
+ new AsyncResult(sst.mPollingContext, dataReg, null)));
+ waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
+
+ assertTrue(sst.mSS.isUsingNonTerrestrialNetwork());
+ List<NetworkRegistrationInfo> nriList =
+ sst.mSS.getNetworkRegistrationInfoListForTransportType(
+ AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ assertEquals(2, nriList.size());
+ for (NetworkRegistrationInfo nri : nriList) {
+ assertTrue(Arrays.equals(satelliteSupportedServices, nri.getAvailableServices().stream()
+ .mapToInt(Integer::intValue)
+ .toArray()));
+ }
+ }
}