1168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu/* 2168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * Copyright (C) 2016 The Android Open Source Project 3168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * 4168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * Licensed under the Apache License, Version 2.0 (the "License"); 5168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * you may not use this file except in compliance with the License. 6168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * You may obtain a copy of the License at 7168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * 8168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * http://www.apache.org/licenses/LICENSE-2.0 9168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * 10168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * Unless required by applicable law or agreed to in writing, software 11168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * distributed under the License is distributed on an "AS IS" BASIS, 12168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * See the License for the specific language governing permissions and 14168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu * limitations under the License. 15168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu */ 16168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 17168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yupackage com.android.internal.telephony; 18168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 19168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.os.Parcel; 20168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.telephony.ServiceState; 21168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.telephony.TelephonyManager; 22168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.test.suitebuilder.annotation.SmallTest; 23168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.util.Pair; 24168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 25168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport junit.framework.TestCase; 26168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 27168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport java.util.ArrayList; 28168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 29168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yupublic class ServiceStateTest extends TestCase { 30168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 31168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 32168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testRoaming() { 33168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 34168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 35168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaDefaultRoamingIndicator(1); 36168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(1, ss.getCdmaDefaultRoamingIndicator()); 37168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 38168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaEriIconIndex(2); 39168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(2, ss.getCdmaEriIconIndex()); 40168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 41168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaEriIconMode(3); 42168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(3, ss.getCdmaEriIconMode()); 43168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 44168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaRoamingIndicator(4); 45168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(4, ss.getCdmaRoamingIndicator()); 46168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 47168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRoamingType(ServiceState.ROAMING_TYPE_DOMESTIC); 48168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.getDataRoaming()); 49168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.ROAMING_TYPE_DOMESTIC, ss.getDataRoamingType()); 50168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 51168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRoamingFromRegistration(true); 52168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.getDataRoamingFromRegistration()); 53168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 54168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_DOMESTIC); 55168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.getVoiceRoaming()); 56168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.ROAMING_TYPE_DOMESTIC, ss.getVoiceRoamingType()); 57168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 58168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 59168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 60168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testRegState() { 61168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 62168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 63168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRegState(ServiceState.STATE_IN_SERVICE); 64168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.STATE_IN_SERVICE, ss.getDataRegState()); 65168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 66168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); 67168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.STATE_IN_SERVICE, ss.getVoiceRegState()); 68168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 69168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 70168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 71168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testRAT() { 72168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 73168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 74168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); 75168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.RIL_RADIO_TECHNOLOGY_LTE, ss.getRilDataRadioTechnology()); 76168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(TelephonyManager.NETWORK_TYPE_LTE, ss.getDataNetworkType()); 77168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 78168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); 79168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT, ss.getRilVoiceRadioTechnology()); 80168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(TelephonyManager.NETWORK_TYPE_1xRTT, ss.getVoiceNetworkType()); 81168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 82168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ArrayList<Pair<Integer, Boolean>> rats = new ArrayList<Pair<Integer, Boolean>>(); 83168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 84168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IS95A, true)); 85168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IS95B, true)); 86168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT, true)); 87168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0, true)); 88168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A, true)); 89168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B, true)); 90168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD, true)); 91168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 92168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_GPRS, false)); 93168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EDGE, false)); 94168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS, false)); 95168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA, false)); 96168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA, false)); 97168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSPA, false)); 98168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_LTE, false)); 99168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP, false)); 100168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_GSM, false)); 101168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA, false)); 102168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN, false)); 103168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 104168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu for (Pair<Integer, Boolean> rat : rats) { 105168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu boolean isCdma = rat.second; 106168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 107168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu if (isCdma) { 108168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue("RAT " + rat + " should be CDMA", ServiceState.isCdma(rat.first)); 109168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertFalse("RAT " + rat + " should not be GSM", ServiceState.isGsm(rat.first)); 110168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } else { 111168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertFalse("RAT " + rat + " should not be CDMA", ServiceState.isCdma(rat.first)); 112168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue("RAT " + rat + " should be GSM", ServiceState.isGsm(rat.first)); 113168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 114168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 115168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 116168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 117168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 118168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testOperatorName() { 119168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 120168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 121168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataOperatorAlphaLong("abc"); 122168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("abc", ss.getDataOperatorAlphaLong()); 123168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 124168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataOperatorName("def", "xyz", "123456"); 125168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("xyz", ss.getDataOperatorAlphaShort()); 126168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 127168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setOperatorName("long", "short", "numeric"); 128168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("long", ss.getVoiceOperatorAlphaLong()); 129168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("short", ss.getVoiceOperatorAlphaShort()); 130168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("numeric", ss.getVoiceOperatorNumeric()); 131168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("long", ss.getDataOperatorAlphaLong()); 132168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("short", ss.getDataOperatorAlphaShort()); 133168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("numeric", ss.getDataOperatorNumeric()); 134168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 135168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 136168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 137168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testMisc() { 138168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 139168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 140168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCssIndicator(100); 141168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(1, ss.getCssIndicator()); 142168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 143168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setIsManualSelection(true); 144168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.getIsManualSelection()); 145168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 146168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setSystemAndNetworkId(123, 456); 147168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(123, ss.getSystemId()); 148168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(456, ss.getNetworkId()); 149168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 150168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setEmergencyOnly(true); 151168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.isEmergencyOnly()); 152168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 153168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 154168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 155168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testParcel() { 156168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 157168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 158168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); 159168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRegState(ServiceState.STATE_OUT_OF_SERVICE); 160168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL); 161168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRoamingType(ServiceState.ROAMING_TYPE_UNKNOWN); 162168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setOperatorName("long", "short", "numeric"); 163168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setIsManualSelection(true); 164168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); 165168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0); 166168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCssIndicator(1); 167168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setSystemAndNetworkId(2, 3); 168168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaRoamingIndicator(4); 169168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaDefaultRoamingIndicator(5); 170168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaEriIconIndex(6); 171168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaEriIconMode(7); 172168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setEmergencyOnly(true); 173168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRoamingFromRegistration(true); 174168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 175168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu Parcel p = Parcel.obtain(); 176168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.writeToParcel(p, 0); 177168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu p.setDataPosition(0); 178168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 179168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState newSs = new ServiceState(p); 180168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ss, newSs); 181168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 182168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu}