blob: 5697a453589d94527b1094ddcaec2aa5260541ed [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.internal.telephony;
import android.os.Parcel;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.Pair;
import junit.framework.TestCase;
import java.util.ArrayList;
public class ServiceStateTest extends TestCase {
@SmallTest
public void testRoaming() {
ServiceState ss = new ServiceState();
ss.setCdmaDefaultRoamingIndicator(1);
assertEquals(1, ss.getCdmaDefaultRoamingIndicator());
ss.setCdmaEriIconIndex(2);
assertEquals(2, ss.getCdmaEriIconIndex());
ss.setCdmaEriIconMode(3);
assertEquals(3, ss.getCdmaEriIconMode());
ss.setCdmaRoamingIndicator(4);
assertEquals(4, ss.getCdmaRoamingIndicator());
ss.setDataRoamingType(ServiceState.ROAMING_TYPE_DOMESTIC);
assertTrue(ss.getDataRoaming());
assertEquals(ServiceState.ROAMING_TYPE_DOMESTIC, ss.getDataRoamingType());
ss.setDataRoamingFromRegistration(true);
assertTrue(ss.getDataRoamingFromRegistration());
ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_DOMESTIC);
assertTrue(ss.getVoiceRoaming());
assertEquals(ServiceState.ROAMING_TYPE_DOMESTIC, ss.getVoiceRoamingType());
}
@SmallTest
public void testRegState() {
ServiceState ss = new ServiceState();
ss.setDataRegState(ServiceState.STATE_IN_SERVICE);
assertEquals(ServiceState.STATE_IN_SERVICE, ss.getDataRegState());
ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE);
assertEquals(ServiceState.STATE_IN_SERVICE, ss.getVoiceRegState());
}
@SmallTest
public void testRAT() {
ServiceState ss = new ServiceState();
ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE);
assertEquals(ServiceState.RIL_RADIO_TECHNOLOGY_LTE, ss.getRilDataRadioTechnology());
assertEquals(TelephonyManager.NETWORK_TYPE_LTE, ss.getDataNetworkType());
ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT);
assertEquals(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT, ss.getRilVoiceRadioTechnology());
assertEquals(TelephonyManager.NETWORK_TYPE_1xRTT, ss.getVoiceNetworkType());
ArrayList<Pair<Integer, Boolean>> rats = new ArrayList<Pair<Integer, Boolean>>();
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IS95A, true));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IS95B, true));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT, true));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0, true));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A, true));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B, true));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD, true));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_GPRS, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EDGE, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSPA, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_LTE, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_GSM, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA, false));
rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN, false));
for (Pair<Integer, Boolean> rat : rats) {
boolean isCdma = rat.second;
if (isCdma) {
assertTrue("RAT " + rat + " should be CDMA", ServiceState.isCdma(rat.first));
assertFalse("RAT " + rat + " should not be GSM", ServiceState.isGsm(rat.first));
} else {
assertFalse("RAT " + rat + " should not be CDMA", ServiceState.isCdma(rat.first));
assertTrue("RAT " + rat + " should be GSM", ServiceState.isGsm(rat.first));
}
}
}
@SmallTest
public void testOperatorName() {
ServiceState ss = new ServiceState();
ss.setDataOperatorAlphaLong("abc");
assertEquals("abc", ss.getDataOperatorAlphaLong());
ss.setDataOperatorName("def", "xyz", "123456");
assertEquals("xyz", ss.getDataOperatorAlphaShort());
ss.setOperatorName("long", "short", "numeric");
assertEquals("long", ss.getVoiceOperatorAlphaLong());
assertEquals("short", ss.getVoiceOperatorAlphaShort());
assertEquals("numeric", ss.getVoiceOperatorNumeric());
assertEquals("long", ss.getDataOperatorAlphaLong());
assertEquals("short", ss.getDataOperatorAlphaShort());
assertEquals("numeric", ss.getDataOperatorNumeric());
assertEquals("long", ss.getOperatorAlpha());
ss.setOperatorName("", "short", "");
assertEquals("short", ss.getOperatorAlpha());
}
@SmallTest
public void testMisc() {
ServiceState ss = new ServiceState();
ss.setCssIndicator(100);
assertEquals(1, ss.getCssIndicator());
ss.setIsManualSelection(true);
assertTrue(ss.getIsManualSelection());
ss.setSystemAndNetworkId(123, 456);
assertEquals(123, ss.getSystemId());
assertEquals(456, ss.getNetworkId());
ss.setEmergencyOnly(true);
assertTrue(ss.isEmergencyOnly());
}
@SmallTest
public void testParcel() {
ServiceState ss = new ServiceState();
ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE);
ss.setDataRegState(ServiceState.STATE_OUT_OF_SERVICE);
ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL);
ss.setDataRoamingType(ServiceState.ROAMING_TYPE_UNKNOWN);
ss.setOperatorName("long", "short", "numeric");
ss.setIsManualSelection(true);
ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT);
ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0);
ss.setCssIndicator(1);
ss.setSystemAndNetworkId(2, 3);
ss.setCdmaRoamingIndicator(4);
ss.setCdmaDefaultRoamingIndicator(5);
ss.setCdmaEriIconIndex(6);
ss.setCdmaEriIconMode(7);
ss.setEmergencyOnly(true);
ss.setDataRoamingFromRegistration(true);
Parcel p = Parcel.obtain();
ss.writeToParcel(p, 0);
p.setDataPosition(0);
ServiceState newSs = new ServiceState(p);
assertEquals(ss, newSs);
}
}