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 19b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbachimport android.os.Bundle; 20168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.os.Parcel; 21d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chenimport android.telephony.AccessNetworkConstants; 22d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chenimport android.telephony.NetworkRegistrationState; 23168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.telephony.ServiceState; 24168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.telephony.TelephonyManager; 25168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.test.suitebuilder.annotation.SmallTest; 26168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport android.util.Pair; 27168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 28168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport junit.framework.TestCase; 29168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 30168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yuimport java.util.ArrayList; 31f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbachimport java.util.Arrays; 32168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 33168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yupublic class ServiceStateTest extends TestCase { 34168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 35168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 36168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testRoaming() { 37168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 38168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 39168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaDefaultRoamingIndicator(1); 40168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(1, ss.getCdmaDefaultRoamingIndicator()); 41168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 42168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaEriIconIndex(2); 43168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(2, ss.getCdmaEriIconIndex()); 44168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 45168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaEriIconMode(3); 46168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(3, ss.getCdmaEriIconMode()); 47168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 48168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaRoamingIndicator(4); 49168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(4, ss.getCdmaRoamingIndicator()); 50168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 51168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRoamingType(ServiceState.ROAMING_TYPE_DOMESTIC); 52168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.getDataRoaming()); 53168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.ROAMING_TYPE_DOMESTIC, ss.getDataRoamingType()); 54168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 55168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRoamingFromRegistration(true); 56168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.getDataRoamingFromRegistration()); 57168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 58168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_DOMESTIC); 59168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.getVoiceRoaming()); 60168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.ROAMING_TYPE_DOMESTIC, ss.getVoiceRoamingType()); 61168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 62168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 63168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 64168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testRegState() { 65168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 66168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 67168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRegState(ServiceState.STATE_IN_SERVICE); 68168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.STATE_IN_SERVICE, ss.getDataRegState()); 69168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 70168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); 71168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.STATE_IN_SERVICE, ss.getVoiceRegState()); 72168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 73168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 74168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 75176f28521fd45bb739709d309e7970b1558c9f61Cassie public void testBitmaskFromString() { 76176f28521fd45bb739709d309e7970b1558c9f61Cassie String networkTypeList = "4|7|5|6|12|13|14|19"; 77176f28521fd45bb739709d309e7970b1558c9f61Cassie int networkTypeBitmask = 1 << (4 - 1) | 1 << (7 - 1) | 1 << (5 - 1) | 1 << (6 - 1) 78176f28521fd45bb739709d309e7970b1558c9f61Cassie | 1 << (12 - 1) | 1 << (14 - 1) | 1 << (13 - 1) | 1 << (19 - 1); 79176f28521fd45bb739709d309e7970b1558c9f61Cassie assertEquals(networkTypeBitmask, 80176f28521fd45bb739709d309e7970b1558c9f61Cassie ServiceState.getBitmaskFromString(networkTypeList)); 81176f28521fd45bb739709d309e7970b1558c9f61Cassie 82176f28521fd45bb739709d309e7970b1558c9f61Cassie networkTypeList = "13"; 83176f28521fd45bb739709d309e7970b1558c9f61Cassie networkTypeBitmask = 1 << (13 - 1); 84176f28521fd45bb739709d309e7970b1558c9f61Cassie assertEquals(networkTypeBitmask, 85176f28521fd45bb739709d309e7970b1558c9f61Cassie ServiceState.getBitmaskFromString(networkTypeList)); 86176f28521fd45bb739709d309e7970b1558c9f61Cassie 87176f28521fd45bb739709d309e7970b1558c9f61Cassie networkTypeList = ""; 88176f28521fd45bb739709d309e7970b1558c9f61Cassie networkTypeBitmask = 0; 89176f28521fd45bb739709d309e7970b1558c9f61Cassie assertEquals(networkTypeBitmask, 90176f28521fd45bb739709d309e7970b1558c9f61Cassie ServiceState.getBitmaskFromString(networkTypeList)); 91176f28521fd45bb739709d309e7970b1558c9f61Cassie } 92176f28521fd45bb739709d309e7970b1558c9f61Cassie 93176f28521fd45bb739709d309e7970b1558c9f61Cassie @SmallTest 94176f28521fd45bb739709d309e7970b1558c9f61Cassie public void testConvertNetworkTypeBitmaskToBearerBitmask() { 95176f28521fd45bb739709d309e7970b1558c9f61Cassie // The value was calculated by adding "4|4|7|5|6|12|14|13|19". 96176f28521fd45bb739709d309e7970b1558c9f61Cassie int networkTypeBitmask = 276600; 97176f28521fd45bb739709d309e7970b1558c9f61Cassie // The value was calculated by adding "4|5|6|7|8|12|13|14|19". 98176f28521fd45bb739709d309e7970b1558c9f61Cassie int bearerBitmask = 276728; 99176f28521fd45bb739709d309e7970b1558c9f61Cassie assertEquals(bearerBitmask, 100176f28521fd45bb739709d309e7970b1558c9f61Cassie ServiceState.convertNetworkTypeBitmaskToBearerBitmask(networkTypeBitmask)); 101176f28521fd45bb739709d309e7970b1558c9f61Cassie 102176f28521fd45bb739709d309e7970b1558c9f61Cassie networkTypeBitmask = 0; 103176f28521fd45bb739709d309e7970b1558c9f61Cassie bearerBitmask = 0; 104176f28521fd45bb739709d309e7970b1558c9f61Cassie assertEquals(bearerBitmask, 105176f28521fd45bb739709d309e7970b1558c9f61Cassie ServiceState.convertNetworkTypeBitmaskToBearerBitmask(networkTypeBitmask)); 106176f28521fd45bb739709d309e7970b1558c9f61Cassie } 107176f28521fd45bb739709d309e7970b1558c9f61Cassie 108176f28521fd45bb739709d309e7970b1558c9f61Cassie @SmallTest 109176f28521fd45bb739709d309e7970b1558c9f61Cassie public void testConvertBearerBitmaskToNetworkTypeBitmask() { 110176f28521fd45bb739709d309e7970b1558c9f61Cassie // The value was calculated by adding "4|4|7|5|6|12|14|13|19". 111176f28521fd45bb739709d309e7970b1558c9f61Cassie int networkTypeBitmask = 276600; 112176f28521fd45bb739709d309e7970b1558c9f61Cassie // The value was calculated by adding "4|5|6|7|8|12|13|14|19". 113176f28521fd45bb739709d309e7970b1558c9f61Cassie int bearerBitmask = 276728; 114176f28521fd45bb739709d309e7970b1558c9f61Cassie assertEquals(networkTypeBitmask, 115176f28521fd45bb739709d309e7970b1558c9f61Cassie ServiceState.convertBearerBitmaskToNetworkTypeBitmask(bearerBitmask)); 116176f28521fd45bb739709d309e7970b1558c9f61Cassie 117176f28521fd45bb739709d309e7970b1558c9f61Cassie networkTypeBitmask = 0; 118176f28521fd45bb739709d309e7970b1558c9f61Cassie bearerBitmask = 0; 119176f28521fd45bb739709d309e7970b1558c9f61Cassie assertEquals(networkTypeBitmask, 120176f28521fd45bb739709d309e7970b1558c9f61Cassie ServiceState.convertBearerBitmaskToNetworkTypeBitmask(bearerBitmask)); 121176f28521fd45bb739709d309e7970b1558c9f61Cassie } 122176f28521fd45bb739709d309e7970b1558c9f61Cassie 123176f28521fd45bb739709d309e7970b1558c9f61Cassie @SmallTest 124168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testRAT() { 125168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 126168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 127168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); 128168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.RIL_RADIO_TECHNOLOGY_LTE, ss.getRilDataRadioTechnology()); 129168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(TelephonyManager.NETWORK_TYPE_LTE, ss.getDataNetworkType()); 130168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 131168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); 132168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT, ss.getRilVoiceRadioTechnology()); 133168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(TelephonyManager.NETWORK_TYPE_1xRTT, ss.getVoiceNetworkType()); 134168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 135168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ArrayList<Pair<Integer, Boolean>> rats = new ArrayList<Pair<Integer, Boolean>>(); 136168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 137168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IS95A, true)); 138168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IS95B, true)); 139168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT, true)); 140168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0, true)); 141168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A, true)); 142168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B, true)); 143168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD, true)); 144168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 145168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_GPRS, false)); 146168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_EDGE, false)); 147168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS, false)); 148168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA, false)); 149168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA, false)); 150168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSPA, false)); 151168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_LTE, false)); 152168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP, false)); 153168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_GSM, false)); 154168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA, false)); 155168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN, false)); 156168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 157168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu for (Pair<Integer, Boolean> rat : rats) { 158168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu boolean isCdma = rat.second; 159168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 160168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu if (isCdma) { 161168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue("RAT " + rat + " should be CDMA", ServiceState.isCdma(rat.first)); 162168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertFalse("RAT " + rat + " should not be GSM", ServiceState.isGsm(rat.first)); 163168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } else { 164168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertFalse("RAT " + rat + " should not be CDMA", ServiceState.isCdma(rat.first)); 165168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue("RAT " + rat + " should be GSM", ServiceState.isGsm(rat.first)); 166168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 167168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 168168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 169f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach @SmallTest 170f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach public void testGetCellBandwidths() { 171f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach ServiceState ss = new ServiceState(); 172f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach 173f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach ss.setCellBandwidths(null); 174f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach assertTrue(Arrays.equals(ss.getCellBandwidths(), new int[0])); 175f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach 176f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach int[] cellBandwidths = new int[]{5000, 10000}; 177f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach ss.setCellBandwidths(cellBandwidths); 178f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach assertTrue(Arrays.equals(ss.getCellBandwidths(), cellBandwidths)); 179f223e107508d50a9ad174b3179f741fb93da8a93Eric Schwarzenbach } 180168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 181168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 182168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testOperatorName() { 183168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 184168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 185168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataOperatorAlphaLong("abc"); 186168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("abc", ss.getDataOperatorAlphaLong()); 187168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 188168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataOperatorName("def", "xyz", "123456"); 189168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("xyz", ss.getDataOperatorAlphaShort()); 190168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 191168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setOperatorName("long", "short", "numeric"); 192168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("long", ss.getVoiceOperatorAlphaLong()); 193168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("short", ss.getVoiceOperatorAlphaShort()); 194168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("numeric", ss.getVoiceOperatorNumeric()); 195168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("long", ss.getDataOperatorAlphaLong()); 196168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("short", ss.getDataOperatorAlphaShort()); 197168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals("numeric", ss.getDataOperatorNumeric()); 198477c55f901492d5c09c460e0a708ff3627e6850cZoran Jovanovic assertEquals("long", ss.getOperatorAlpha()); 199477c55f901492d5c09c460e0a708ff3627e6850cZoran Jovanovic 200477c55f901492d5c09c460e0a708ff3627e6850cZoran Jovanovic ss.setOperatorName("", "short", ""); 201477c55f901492d5c09c460e0a708ff3627e6850cZoran Jovanovic assertEquals("short", ss.getOperatorAlpha()); 202168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 203168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 204168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 205168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testMisc() { 206168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 207168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 208168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCssIndicator(100); 209168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(1, ss.getCssIndicator()); 210168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 211168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setIsManualSelection(true); 212168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.getIsManualSelection()); 213168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 214cb209509f5a3489b06a5d9b89b2c1fd8f6499c83Jack Yu ss.setCdmaSystemAndNetworkId(123, 456); 215cb209509f5a3489b06a5d9b89b2c1fd8f6499c83Jack Yu assertEquals(123, ss.getCdmaSystemId()); 216cb209509f5a3489b06a5d9b89b2c1fd8f6499c83Jack Yu assertEquals(456, ss.getCdmaNetworkId()); 217168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 218168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setEmergencyOnly(true); 219168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertTrue(ss.isEmergencyOnly()); 220168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 221168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 222168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu @SmallTest 223168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu public void testParcel() { 224168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 225168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState ss = new ServiceState(); 226168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); 227168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRegState(ServiceState.STATE_OUT_OF_SERVICE); 228168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL); 229168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRoamingType(ServiceState.ROAMING_TYPE_UNKNOWN); 230168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setOperatorName("long", "short", "numeric"); 231168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setIsManualSelection(true); 232168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); 233168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0); 234168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCssIndicator(1); 235cb209509f5a3489b06a5d9b89b2c1fd8f6499c83Jack Yu ss.setCdmaSystemAndNetworkId(2, 3); 236168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaRoamingIndicator(4); 237168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaDefaultRoamingIndicator(5); 238168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaEriIconIndex(6); 239168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setCdmaEriIconMode(7); 240168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setEmergencyOnly(true); 241168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.setDataRoamingFromRegistration(true); 242b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setChannelNumber(2100); 243b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setCellBandwidths(new int[]{1400, 5000, 10000}); 244168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 245168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu Parcel p = Parcel.obtain(); 246168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ss.writeToParcel(p, 0); 247168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu p.setDataPosition(0); 248168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu 249168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu ServiceState newSs = new ServiceState(p); 250168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu assertEquals(ss, newSs); 251168ba9c4a5234e8cccc9d23879aea4c1740d3510Jack Yu } 252b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach 253b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach @SmallTest 254b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach public void testBundle() { 255b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ServiceState ss = new ServiceState(); 256b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); 257b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setDataRegState(ServiceState.STATE_OUT_OF_SERVICE); 258b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL); 259b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setDataRoamingType(ServiceState.ROAMING_TYPE_UNKNOWN); 260b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setOperatorName("long", "short", "numeric"); 261b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setIsManualSelection(true); 262b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); 263b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0); 264b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setCssIndicator(1); 265cb209509f5a3489b06a5d9b89b2c1fd8f6499c83Jack Yu ss.setCdmaSystemAndNetworkId(2, 3); 266b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setCdmaRoamingIndicator(4); 267b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setCdmaDefaultRoamingIndicator(5); 268b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setCdmaEriIconIndex(6); 269b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setCdmaEriIconMode(7); 270b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setEmergencyOnly(true); 271b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setDataRoamingFromRegistration(true); 272b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setChannelNumber(2100); 273b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.setCellBandwidths(new int[]{3, 4, 10}); 274b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach 275b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach Bundle b = new Bundle(); 276b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ss.fillInNotifierBundle(b); 277b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach ServiceState newSs = ServiceState.newFromBundle(b); 278b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach 279b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach assertEquals(ss, newSs); 280b364e1980a0553a4cea5a322a3822268479ea085Eric Schwarzenbach } 281d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 282d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen @SmallTest 283d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen public void testNetworkRegistrationState() { 284d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen NetworkRegistrationState wwanVoiceRegState = new NetworkRegistrationState( 285d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_CS, 286d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 0, 0, 0, false, 287d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen null, null, true, 0, 0, 0); 288d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 289d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 290d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen NetworkRegistrationState wwanDataRegState = new NetworkRegistrationState( 291d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS, 292d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 0, 0, 0, false, 293d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen null, null, 0); 294d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 295d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen NetworkRegistrationState wlanRegState = new NetworkRegistrationState( 296d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen AccessNetworkConstants.TransportType.WLAN, NetworkRegistrationState.DOMAIN_PS, 297d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 0, 0, 0, false, 298d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen null, null); 299d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 300d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen ServiceState ss = new ServiceState(); 301d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 302d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen ss.addNetworkRegistrationState(wwanVoiceRegState); 303d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen ss.addNetworkRegistrationState(wwanDataRegState); 304d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen ss.addNetworkRegistrationState(wlanRegState); 305d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 306d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN, 307d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen NetworkRegistrationState.DOMAIN_CS), wwanVoiceRegState); 308d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN, 309d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen NetworkRegistrationState.DOMAIN_PS), wwanDataRegState); 310d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WLAN, 311d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen NetworkRegistrationState.DOMAIN_PS), wlanRegState); 312d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 313d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen wwanDataRegState = new NetworkRegistrationState( 314d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS, 315d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen 0, 0, 0, true, 316d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen null, null, 0); 317d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen ss.addNetworkRegistrationState(wwanDataRegState); 318d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN, 319d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen NetworkRegistrationState.DOMAIN_PS), wwanDataRegState); 320d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen } 32199cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 32299cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach @SmallTest 32399cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach public void testDuplexMode_notLte() { 32499cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ServiceState ss = new ServiceState(); 32599cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_GSM); 32699cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ss.setChannelNumber(2400); 32799cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 32899cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_UNKNOWN); 32999cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach } 33099cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 33199cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach @SmallTest 33299cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach public void testDuplexMode_invalidEarfcn() { 33399cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ServiceState ss = new ServiceState(); 33499cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); 33599cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ss.setChannelNumber(-1); 33699cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 33799cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_UNKNOWN); 33899cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 33999cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ss.setChannelNumber(Integer.MAX_VALUE); 34099cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 34199cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_UNKNOWN); 34299cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach } 34399cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 34499cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach @SmallTest 34599cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach public void testDuplexMode_FddChannel() { 34699cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ServiceState ss = new ServiceState(); 34799cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); 34899cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ss.setChannelNumber(2400); // band 5 34999cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 35099cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_FDD); 35199cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach } 35299cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 35399cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach @SmallTest 35499cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach public void testDuplexMode_TddChannel() { 35599cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ServiceState ss = new ServiceState(); 35699cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); 35799cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach ss.setChannelNumber(36000); // band 33 35899cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach 35999cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_TDD); 36099cc5e6ad7be178e9b17e58ac55bb5136ef50ee9Eric Schwarzenbach } 361d06d599321a587f0c697bda4c791a5f3618479d1Malcolm Chen} 362