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}