DefaultPhoneNotifierTest.java revision efe268c9e4dea78a03170684fa11d0f7e9e54cd0
1ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu/* 2ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * Copyright (C) 2016 The Android Open Source Project 3ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * 4ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * Licensed under the Apache License, Version 2.0 (the "License"); 5ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * you may not use this file except in compliance with the License. 6ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * You may obtain a copy of the License at 7ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * 8ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * http://www.apache.org/licenses/LICENSE-2.0 9ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * 10ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * Unless required by applicable law or agreed to in writing, software 11ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * distributed under the License is distributed on an "AS IS" BASIS, 12ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * See the License for the specific language governing permissions and 14ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu * limitations under the License. 15ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu */ 16ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxupackage com.android.internal.telephony; 17ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 18ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport org.junit.After; 19ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport org.junit.Before; 20ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport org.junit.Test; 21ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport org.mockito.Mock; 22ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 23ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport java.util.List; 24ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport java.util.ArrayList; 25ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 26ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport static org.mockito.Matchers.anyString; 27ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport static org.mockito.Matchers.eq; 28ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport static org.mockito.Mockito.doReturn; 29ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport static org.junit.Assert.assertEquals; 30ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport static org.mockito.Mockito.verify; 31efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxuimport static org.mockito.Mockito.anyInt; 32efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxuimport static org.mockito.Mockito.times; 33ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport org.mockito.ArgumentCaptor; 34ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport android.telephony.CellInfo; 35efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxuimport android.telephony.DisconnectCause; 36efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxuimport android.telephony.PreciseCallState; 37efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxuimport android.telephony.PreciseDisconnectCause; 38ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport android.telephony.SignalStrength; 39ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport android.telephony.TelephonyManager; 40efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxuimport android.telephony.VoLteServiceState; 41efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxuimport android.telephony.gsm.GsmCellLocation; 42efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxuimport android.os.Bundle; 43ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport android.test.suitebuilder.annotation.SmallTest; 44ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxuimport com.android.internal.telephony.mocks.TelephonyRegistryMock; 45ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 46ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxupublic class DefaultPhoneNotifierTest extends TelephonyTest { 47ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 48ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu private DefaultPhoneNotifier mDefaultPhoneNotifierUT; 49ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu @Mock 50ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu TelephonyRegistryMock mTelephonyRegisteryMock; 51ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu @Mock 52ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu SignalStrength mSignalStrength; 53ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu @Mock 54ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu CellInfo mCellInfo; 55efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Mock 56efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu GsmCdmaCall mForeGroundCall; 57efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Mock 58efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu GsmCdmaCall mBackGroundCall; 59efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Mock 60efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu GsmCdmaCall mRingingCall; 61ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 62ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu @Before 63ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu public void setUp() throws Exception { 64ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu super.setUp(getClass().getSimpleName()); 65ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mServiceManagerMockedServices.put("telephony.registry", mTelephonyRegisteryMock); 66ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu doReturn(mTelephonyRegisteryMock).when(mTelephonyRegisteryMock) 67ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu .queryLocalInterface(anyString()); 68ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 69ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mDefaultPhoneNotifierUT = new DefaultPhoneNotifier(); 70ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu } 71ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 72ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu @After 73ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu public void tearDown() throws Exception { 74ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu super.tearDown(); 75ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu } 76ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 77ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu @Test @SmallTest 78ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu public void testNotifyCallForwarding() throws Exception { 79ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mDefaultPhoneNotifierUT.notifyCallForwardingChanged(mPhone); 80ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu verify(mTelephonyRegisteryMock).notifyCallForwardingChangedForSubscriber(eq(0), eq(false)); 81ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 82ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu doReturn(true).when(mPhone).getCallForwardingIndicator(); 83ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu doReturn(1).when(mPhone).getSubId(); 84ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mDefaultPhoneNotifierUT.notifyCallForwardingChanged(mPhone); 85ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu verify(mTelephonyRegisteryMock).notifyCallForwardingChangedForSubscriber(eq(1), eq(true)); 86ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu } 87ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 88ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu @Test @SmallTest 89ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu public void testNotifyDataActivity() throws Exception { 90ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu //mock data activity state 91ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu doReturn(Phone.DataActivityState.NONE).when(mPhone).getDataActivityState(); 92ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mDefaultPhoneNotifierUT.notifyDataActivity(mPhone); 93ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu verify(mTelephonyRegisteryMock).notifyDataActivityForSubscriber(eq(0), 94ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu eq(TelephonyManager.DATA_ACTIVITY_NONE)); 95ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 96ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu doReturn(1).when(mPhone).getSubId(); 97ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu doReturn(Phone.DataActivityState.DATAIN).when(mPhone).getDataActivityState(); 98ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mDefaultPhoneNotifierUT.notifyDataActivity(mPhone); 99ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu verify(mTelephonyRegisteryMock).notifyDataActivityForSubscriber(eq(1), 100ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu eq(TelephonyManager.DATA_ACTIVITY_IN)); 101ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu } 102ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 103ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu @Test @SmallTest 104ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu public void testNotifySignalStrength() throws Exception { 105ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu //mock signal strength value 106ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu doReturn(99).when(mSignalStrength).getGsmSignalStrength(); 107ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu doReturn(mSignalStrength).when(mPhone).getSignalStrength(); 108ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu ArgumentCaptor<SignalStrength> signalStrengthArgumentCaptor = 109ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu ArgumentCaptor.forClass(SignalStrength.class); 110ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 111ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mDefaultPhoneNotifierUT.notifySignalStrength(mPhone); 112ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu verify(mTelephonyRegisteryMock).notifySignalStrengthForSubscriber(eq(0), 113ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu signalStrengthArgumentCaptor.capture()); 114ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu assertEquals(99, signalStrengthArgumentCaptor.getValue().getGsmSignalStrength()); 115ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 116ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu doReturn(1).when(mPhone).getSubId(); 117ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mDefaultPhoneNotifierUT.notifySignalStrength(mPhone); 118ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu verify(mTelephonyRegisteryMock).notifySignalStrengthForSubscriber(eq(1), 119ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu signalStrengthArgumentCaptor.capture()); 120ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu assertEquals(99, signalStrengthArgumentCaptor.getValue().getGsmSignalStrength()); 121ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu } 122ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 123ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu @Test @SmallTest 124ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu public void testNotifyCellInfo() throws Exception { 125ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu //mock cellinfo 126ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu List<CellInfo> mCellInfoList = new ArrayList<>(); 127ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mCellInfoList.add(mCellInfo); 128ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu ArgumentCaptor<List> cellInfoArgumentCaptor = ArgumentCaptor.forClass(List.class); 129ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 130ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu mDefaultPhoneNotifierUT.notifyCellInfo(mPhone, mCellInfoList); 131ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 132ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu verify(mTelephonyRegisteryMock).notifyCellInfoForSubscriber(eq(0), 133ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu cellInfoArgumentCaptor.capture()); 134ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu assertEquals(mCellInfo, cellInfoArgumentCaptor.getValue().get(0)); 135ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu } 136ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu 137efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Test @SmallTest 138efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu public void testNotifyMessageWaiting() { 139efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(1).when(mPhone).getPhoneId(); 140efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyMessageWaitingChanged(mPhone); 141efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyMessageWaitingChangedForPhoneId(1, 0, false); 142efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 143efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(2).when(mPhone).getPhoneId(); 144efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyMessageWaitingChanged(mPhone); 145efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyMessageWaitingChangedForPhoneId(2, 0, false); 146efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 147efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(1).when(mPhone).getSubId(); 148efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyMessageWaitingChanged(mPhone); 149efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyMessageWaitingChangedForPhoneId(2, 1, false); 150efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 151efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(true).when(mPhone).getMessageWaitingIndicator(); 152efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyMessageWaitingChanged(mPhone); 153efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyMessageWaitingChangedForPhoneId(2, 1, true); 154efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu } 155efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 156efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Test @SmallTest 157efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu public void testNotifyDisconnectCause() { 158efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyDisconnectCause(DisconnectCause.NOT_VALID, 159efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseDisconnectCause.FDN_BLOCKED); 160efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyDisconnectCause(DisconnectCause.NOT_VALID, 161efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseDisconnectCause.FDN_BLOCKED); 162efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 163efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyDisconnectCause(DisconnectCause.LOCAL, 164efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseDisconnectCause.CHANNEL_NOT_AVAIL); 165efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyDisconnectCause(DisconnectCause.LOCAL, 166efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseDisconnectCause.CHANNEL_NOT_AVAIL); 167efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu } 168efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 169efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Test @SmallTest 170efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu public void testNotifyDataConnectionFailed() { 171efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyDataConnectionFailed(mPhone, "BUSY", "APN_0"); 172efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyDataConnectionFailedForSubscriber(0, "BUSY", "APN_0"); 173efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 174efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyDataConnectionFailed(mPhone, "LOCAL", "APN_0"); 175efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyDataConnectionFailedForSubscriber(0, "LOCAL", 176efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu "APN_0"); 177efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 178efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyDataConnectionFailed(mPhone, "LOCAL", "APN_1"); 179efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyDataConnectionFailedForSubscriber(0, "LOCAL", 180efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu "APN_1"); 181efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 182efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(1).when(mPhone).getSubId(); 183efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyDataConnectionFailed(mPhone, "LOCAL", "APN_1"); 184efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyDataConnectionFailedForSubscriber(1, "LOCAL", 185efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu "APN_1"); 186efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu } 187efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 188efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Test @SmallTest 189efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu public void testNotifyPreciseCallState() { 190efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 191efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu //mock forground/background/ringing call and call state 192efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(Call.State.IDLE).when(mForeGroundCall).getState(); 193efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(Call.State.IDLE).when(mBackGroundCall).getState(); 194efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(Call.State.IDLE).when(mRingingCall).getState(); 195efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 196efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyPreciseCallState(mPhone); 197efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock, times(0)).notifyPreciseCallState(anyInt(), anyInt(), 198efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu anyInt()); 199efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 200efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(mForeGroundCall).when(mPhone).getForegroundCall(); 201efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyPreciseCallState(mPhone); 202efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock, times(0)).notifyPreciseCallState(anyInt(), anyInt(), 203efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu anyInt()); 204efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 205efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(mBackGroundCall).when(mPhone).getBackgroundCall(); 206efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyPreciseCallState(mPhone); 207efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock, times(0)).notifyPreciseCallState(anyInt(), anyInt(), 208efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu anyInt()); 209efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 210efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(mRingingCall).when(mPhone).getRingingCall(); 211efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyPreciseCallState(mPhone); 212efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock, times(1)).notifyPreciseCallState( 213efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_IDLE, 214efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_IDLE, 215efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_IDLE); 216efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 217efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(Call.State.ACTIVE).when(mForeGroundCall).getState(); 218efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyPreciseCallState(mPhone); 219efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock, times(1)).notifyPreciseCallState( 220efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_IDLE, 221efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_ACTIVE, 222efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_IDLE); 223efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 224efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(Call.State.HOLDING).when(mBackGroundCall).getState(); 225efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyPreciseCallState(mPhone); 226efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock, times(1)).notifyPreciseCallState( 227efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_IDLE, 228efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_ACTIVE, 229efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_HOLDING); 230efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 231efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(Call.State.ALERTING).when(mRingingCall).getState(); 232efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyPreciseCallState(mPhone); 233efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock, times(1)).notifyPreciseCallState( 234efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_ALERTING, 235efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_ACTIVE, 236efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu PreciseCallState.PRECISE_CALL_STATE_HOLDING); 237efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu } 238efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 239efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Test @SmallTest 240efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu public void testNotifyCellLocation() { 241efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu // mock gsm cell location 242efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu GsmCellLocation mGsmCellLocation = new GsmCellLocation(); 243efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mGsmCellLocation.setLacAndCid(2, 3); 244efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(mGsmCellLocation).when(mPhone).getCellLocation(); 245efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu ArgumentCaptor<Bundle> cellLocationCapture = 246efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu ArgumentCaptor.forClass(Bundle.class); 247efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 248efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyCellLocation(mPhone); 249efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyCellLocationForSubscriber(eq(0), 250efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu cellLocationCapture.capture()); 251efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu assertEquals(2, cellLocationCapture.getValue().getInt("lac")); 252efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu assertEquals(3, cellLocationCapture.getValue().getInt("cid")); 253efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu assertEquals(-1, cellLocationCapture.getValue().getInt("psc")); 254efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 255efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu doReturn(1).when(mPhone).getSubId(); 256efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mGsmCellLocation.setPsc(5); 257efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyCellLocation(mPhone); 258efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyCellLocationForSubscriber(eq(1), 259efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu cellLocationCapture.capture()); 260efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu assertEquals(2, cellLocationCapture.getValue().getInt("lac")); 261efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu assertEquals(3, cellLocationCapture.getValue().getInt("cid")); 262efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu assertEquals(5, cellLocationCapture.getValue().getInt("psc")); 263efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu } 264efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 265efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Test @SmallTest 266efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu public void testNotifyOtaspChanged() { 267efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyOtaspChanged(mPhone, ServiceStateTracker.OTASP_NEEDED); 268efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyOtaspChanged(ServiceStateTracker.OTASP_NEEDED); 269efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 270efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyOtaspChanged(mPhone, ServiceStateTracker.OTASP_UNKNOWN); 271efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyOtaspChanged(ServiceStateTracker.OTASP_UNKNOWN); 272efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu } 273efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 274efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu @Test @SmallTest 275efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu public void testNotifyVoLteServiceStateChanged() { 276efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu VoLteServiceState state = new VoLteServiceState(VoLteServiceState.NOT_SUPPORTED); 277efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyVoLteServiceStateChanged(mPhone, state); 278efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyVoLteServiceStateChanged(state); 279efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu 280efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu state = new VoLteServiceState(VoLteServiceState.HANDOVER_COMPLETED); 281efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu mDefaultPhoneNotifierUT.notifyVoLteServiceStateChanged(mPhone, state); 282efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu verify(mTelephonyRegisteryMock).notifyVoLteServiceStateChanged(state); 283efe268c9e4dea78a03170684fa11d0f7e9e54cd0fionaxu } 284ec6e2f9f13bac23cdfa0de0a56826b21050b6487fionaxu} 285