• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.server.telecom.tests;
18 
19 import static org.junit.Assert.assertFalse;
20 import static org.junit.Assert.assertTrue;
21 import static org.mockito.ArgumentMatchers.any;
22 import static org.mockito.ArgumentMatchers.anyInt;
23 import static org.mockito.Mockito.never;
24 import static org.mockito.Mockito.verify;
25 import static org.mockito.Mockito.when;
26 
27 import android.test.suitebuilder.annotation.SmallTest;
28 
29 import com.android.server.telecom.AsyncRingtonePlayer;
30 import com.android.server.telecom.CallAudioRoutePeripheralAdapter;
31 import com.android.server.telecom.CallAudioRouteStateMachine;
32 import com.android.server.telecom.DockManager;
33 import com.android.server.telecom.WiredHeadsetManager;
34 import com.android.server.telecom.bluetooth.BluetoothRouteManager;
35 
36 import org.junit.After;
37 import org.junit.Before;
38 import org.junit.Test;
39 import org.junit.runner.RunWith;
40 import org.junit.runners.JUnit4;
41 import org.mockito.Mock;
42 
43 @RunWith(JUnit4.class)
44 public class CallAudioRoutePeripheralAdapterTest extends TelecomTestCase {
45     CallAudioRoutePeripheralAdapter mAdapter;
46 
47     @Mock private CallAudioRouteStateMachine mCallAudioRouteStateMachine;
48     @Mock private BluetoothRouteManager mBluetoothRouteManager;
49     @Mock private WiredHeadsetManager mWiredHeadsetManager;
50     @Mock private DockManager mDockManager;
51     @Mock private AsyncRingtonePlayer mRingtonePlayer;
52 
53     @Override
54     @Before
setUp()55     public void setUp() throws Exception {
56         super.setUp();
57 
58         mAdapter = new CallAudioRoutePeripheralAdapter(
59                 mCallAudioRouteStateMachine,
60                 mBluetoothRouteManager,
61                 mWiredHeadsetManager,
62                 mDockManager,
63                 mRingtonePlayer);
64     }
65 
66     @Override
67     @After
tearDown()68     public void tearDown() throws Exception {
69         super.tearDown();
70     }
71 
72     @SmallTest
73     @Test
testIsBluetoothAudioOn()74     public void testIsBluetoothAudioOn() {
75         when(mBluetoothRouteManager.isBluetoothAudioConnectedOrPending()).thenReturn(false);
76         assertFalse(mAdapter.isBluetoothAudioOn());
77 
78         when(mBluetoothRouteManager.isBluetoothAudioConnectedOrPending()).thenReturn(true);
79         assertTrue(mAdapter.isBluetoothAudioOn());
80     }
81 
82     @SmallTest
83     @Test
testIsHearingAidDeviceOn()84     public void testIsHearingAidDeviceOn() {
85         when(mBluetoothRouteManager.isCachedHearingAidDevice(any())).thenReturn(false);
86         assertFalse(mAdapter.isHearingAidDeviceOn());
87 
88         when(mBluetoothRouteManager.isCachedHearingAidDevice(any())).thenReturn(true);
89         assertTrue(mAdapter.isHearingAidDeviceOn());
90     }
91 
92     @SmallTest
93     @Test
testIsLeAudioDeviceOn()94     public void testIsLeAudioDeviceOn() {
95         when(mBluetoothRouteManager.isCachedLeAudioDevice(any())).thenReturn(false);
96         assertFalse(mAdapter.isLeAudioDeviceOn());
97 
98         when(mBluetoothRouteManager.isCachedLeAudioDevice(any())).thenReturn(true);
99         assertTrue(mAdapter.isLeAudioDeviceOn());
100     }
101 
102     @SmallTest
103     @Test
testOnBluetoothDeviceListChanged()104     public void testOnBluetoothDeviceListChanged() {
105         mAdapter.onBluetoothDeviceListChanged();
106         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
107                 CallAudioRouteStateMachine.BLUETOOTH_DEVICE_LIST_CHANGED);
108     }
109 
110     @SmallTest
111     @Test
testOnBluetoothActiveDevicePresent()112     public void testOnBluetoothActiveDevicePresent() {
113         mAdapter.onBluetoothActiveDevicePresent();
114         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
115                 CallAudioRouteStateMachine.BT_ACTIVE_DEVICE_PRESENT);
116     }
117 
118     @SmallTest
119     @Test
testOnBluetoothActiveDeviceGone()120     public void testOnBluetoothActiveDeviceGone() {
121         mAdapter.onBluetoothActiveDeviceGone();
122         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
123                 CallAudioRouteStateMachine.BT_ACTIVE_DEVICE_GONE);
124     }
125 
126     @SmallTest
127     @Test
testOnBluetoothAudioConnected()128     public void testOnBluetoothAudioConnected() {
129         mAdapter.onBluetoothAudioConnected();
130         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
131                 CallAudioRouteStateMachine.BT_AUDIO_CONNECTED);
132         verify(mRingtonePlayer).updateBtActiveState(true);
133     }
134 
135     @SmallTest
136     @Test
testOnBluetoothAudioConnecting()137     public void testOnBluetoothAudioConnecting() {
138         mAdapter.onBluetoothAudioConnecting();
139         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
140                 CallAudioRouteStateMachine.BT_AUDIO_CONNECTED);
141         verify(mRingtonePlayer).updateBtActiveState(false);
142     }
143 
144     @SmallTest
145     @Test
testOnBluetoothAudioDisconnected()146     public void testOnBluetoothAudioDisconnected() {
147         mAdapter.onBluetoothAudioDisconnected();
148         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
149                 CallAudioRouteStateMachine.BT_AUDIO_DISCONNECTED);
150         verify(mRingtonePlayer).updateBtActiveState(false);
151     }
152 
153     @SmallTest
154     @Test
testOnUnexpectedBluetoothStateChange()155     public void testOnUnexpectedBluetoothStateChange() {
156         mAdapter.onUnexpectedBluetoothStateChange();
157         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
158                 CallAudioRouteStateMachine.UPDATE_SYSTEM_AUDIO_ROUTE);
159     }
160 
161     @SmallTest
162     @Test
testOnWiredHeadsetPluggedInChangedNoChange()163     public void testOnWiredHeadsetPluggedInChangedNoChange() {
164         mAdapter.onWiredHeadsetPluggedInChanged(false, false);
165         mAdapter.onWiredHeadsetPluggedInChanged(true, true);
166         verify(mCallAudioRouteStateMachine, never()).sendMessageWithSessionInfo(anyInt());
167     }
168 
169     @SmallTest
170     @Test
testOnWiredHeadsetPluggedInChangedPlugged()171     public void testOnWiredHeadsetPluggedInChangedPlugged() {
172         mAdapter.onWiredHeadsetPluggedInChanged(false, true);
173         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
174                 CallAudioRouteStateMachine.CONNECT_WIRED_HEADSET);
175     }
176 
177     @SmallTest
178     @Test
testOnWiredHeadsetPluggedInChangedUnplugged()179     public void testOnWiredHeadsetPluggedInChangedUnplugged() {
180         mAdapter.onWiredHeadsetPluggedInChanged(true, false);
181         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
182                 CallAudioRouteStateMachine.DISCONNECT_WIRED_HEADSET);
183     }
184 
185     @SmallTest
186     @Test
testOnDockChangedConnected()187     public void testOnDockChangedConnected() {
188         mAdapter.onDockChanged(true);
189         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
190                 CallAudioRouteStateMachine.CONNECT_DOCK);
191     }
192 
193     @SmallTest
194     @Test
testOnDockChangedDisconnected()195     public void testOnDockChangedDisconnected() {
196         mAdapter.onDockChanged(false);
197         verify(mCallAudioRouteStateMachine).sendMessageWithSessionInfo(
198                 CallAudioRouteStateMachine.DISCONNECT_DOCK);
199     }
200 }
201