198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalpackage com.android.bluetooth.hfpclient;
298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.bluetooth.BluetoothAdapter;
498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.bluetooth.BluetoothDevice;
598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.bluetooth.BluetoothProfile;
698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.content.Context;
798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.content.Intent;
898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.media.AudioManager;
998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.os.Bundle;
1098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.test.AndroidTestCase;
1198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.util.Log;
1298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
1398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport java.nio.ByteBuffer;
1498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport java.util.List;
1598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport java.util.Arrays;
1698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport java.util.ArrayList;
1798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
1898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport com.android.bluetooth.btservice.AdapterService;
1998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
2098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport static org.mockito.Mockito.*;
214c31193092e765e590ed7b45bb24540fe50120cekai
2298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport org.mockito.ArgumentCaptor;
2398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
2498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalpublic class HeadsetClientStateMachineTest extends AndroidTestCase {
2598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    private BluetoothAdapter mAdapter = null;
2698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
2798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    @Override
2898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    protected void setUp() throws Exception {
294c31193092e765e590ed7b45bb24540fe50120cekai        AdapterService inst = mock(AdapterService.class);
3098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertTrue(inst != null);
3198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        mAdapter = BluetoothAdapter.getDefaultAdapter();
3298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    }
3398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
3498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    // Test that default state is disconnected
3598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    public void testDefaultDisconnectedState() {
3698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        HeadsetClientService mockService = mock(HeadsetClientService.class);
3798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        AudioManager mockAudioManager = mock(AudioManager.class);
3898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
3998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockService.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mockAudioManager);
4098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
4198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        HeadsetClientStateMachine mockSM = new HeadsetClientStateMachine(
4298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            mockService, getContext().getMainLooper());
4398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertEquals(
4498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            mockSM.getConnectionState((BluetoothDevice) null), BluetoothProfile.STATE_DISCONNECTED);
4598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    }
4698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
4798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    // Test that an incoming connection with low priority is rejected
4898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    public void testIncomingPriorityReject() {
4998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        HeadsetClientService mockService = mock(HeadsetClientService.class);
5098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        AudioManager mockAudioManager = mock(AudioManager.class);
5198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        BluetoothDevice device = mAdapter.getRemoteDevice("00:01:02:03:04:05");
5298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
5398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockService.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mockAudioManager);
5498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
5598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        HeadsetClientStateMachine mockSM = new HeadsetClientStateMachine(
5698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            mockService, getContext().getMainLooper());
5798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        mockSM.start();
5898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
5998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Return false for priority.
6098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockService.getPriority(any(BluetoothDevice.class))).thenReturn(
6198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            BluetoothProfile.PRIORITY_OFF);
6298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
6398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Inject an event for when incoming connection is requested
6498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        StackEvent connStCh =
6598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            new StackEvent(StackEvent.EVENT_TYPE_CONNECTION_STATE_CHANGED);
6698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.valueInt = HeadsetClientHalConstants.CONNECTION_STATE_CONNECTED;
6798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.valueInt2 = 0;
6898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.valueInt3 = 0;
6998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.device = device;
7098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        mockSM.sendMessage(StackEvent.STACK_EVENT, connStCh);
7198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
7298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Verify that no connection state broadcast is executed
7398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        verify(mockService, never()).sendBroadcast(any(Intent.class), anyString());
7498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Check we are in disconnected state still.
7598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertTrue(mockSM.getCurrentState() instanceof HeadsetClientStateMachine.Disconnected);
7698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    }
7798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
7898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    // Test that an incoming connection with high priority is accepted
7998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    public void testIncomingPriorityAccept() {
8098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        HeadsetClientService mockService = mock(HeadsetClientService.class);
8198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        AudioManager mockAudioManager = mock(AudioManager.class);
8298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        BluetoothDevice device = mAdapter.getRemoteDevice("00:01:02:03:04:05");
8398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
8498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockService.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mockAudioManager);
8598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Set a valid volume
8698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockAudioManager.getStreamVolume(anyInt())).thenReturn(2);
8798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockAudioManager.getStreamMaxVolume(anyInt())).thenReturn(10);
8898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockAudioManager.getStreamMinVolume(anyInt())).thenReturn(1);
8998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
9098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
9198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        HeadsetClientStateMachine mockSM = new HeadsetClientStateMachine(
9298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            mockService, getContext().getMainLooper());
9398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        mockSM.start();
9498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
9598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Return false for priority.
9698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockService.getPriority(any(BluetoothDevice.class))).thenReturn(
9798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            BluetoothProfile.PRIORITY_ON);
9898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
9998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Inject an event for when incoming connection is requested
10098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        StackEvent connStCh =
10198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            new StackEvent(StackEvent.EVENT_TYPE_CONNECTION_STATE_CHANGED);
10298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.valueInt = HeadsetClientHalConstants.CONNECTION_STATE_CONNECTED;
10398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.valueInt2 = 0;
10498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.valueInt3 = 0;
10598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.device = device;
10698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        mockSM.sendMessage(StackEvent.STACK_EVENT, connStCh);
10798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
10898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Verify that one connection state broadcast is executed
10998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        ArgumentCaptor<Intent> intentArgument1 = ArgumentCaptor.forClass(Intent.class);
11098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        verify(mockService,
11198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            timeout(1000)).sendBroadcast(intentArgument1.capture(), anyString());
11298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertEquals(BluetoothProfile.STATE_CONNECTING,
11398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            intentArgument1.getValue().getIntExtra(BluetoothProfile.EXTRA_STATE, -1));
11498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
11598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Check we are in connecting state now.
11698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertTrue(mockSM.getCurrentState() instanceof HeadsetClientStateMachine.Connecting);
11798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
11898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Send a message to trigger SLC connection
11998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        StackEvent slcEvent =
12098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            new StackEvent(StackEvent.EVENT_TYPE_CONNECTION_STATE_CHANGED);
12198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        slcEvent.valueInt = HeadsetClientHalConstants.CONNECTION_STATE_SLC_CONNECTED;
12298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        slcEvent.valueInt2 = HeadsetClientHalConstants.PEER_FEAT_ECS;
12398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        slcEvent.valueInt3 = 0;
12498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        slcEvent.device = device;
12598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        mockSM.sendMessage(StackEvent.STACK_EVENT, slcEvent);
12698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
12798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Verify that one connection state broadcast is executed
12898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        ArgumentCaptor<Intent> intentArgument2 = ArgumentCaptor.forClass(Intent.class);
12998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        verify(mockService,
13098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            timeout(1000).times(2)).sendBroadcast(intentArgument2.capture(), anyString());
13198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertEquals(BluetoothProfile.STATE_CONNECTED,
13298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            intentArgument2.getValue().getIntExtra(BluetoothProfile.EXTRA_STATE, -1));
13398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Check we are in connecting state now.
13498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertTrue(mockSM.getCurrentState() instanceof HeadsetClientStateMachine.Connected);
13598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    }
13698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
13798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    // Test that an incoming connection that times out
13898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    public void testIncomingTimeout() {
13998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        HeadsetClientService mockService = mock(HeadsetClientService.class);
14098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        AudioManager mockAudioManager = mock(AudioManager.class);
14198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        BluetoothDevice device = mAdapter.getRemoteDevice("00:01:02:03:04:05");
14298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
14398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockService.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mockAudioManager);
14498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Set a valid volume
14598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockAudioManager.getStreamVolume(anyInt())).thenReturn(2);
14698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockAudioManager.getStreamMaxVolume(anyInt())).thenReturn(10);
14798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockAudioManager.getStreamMinVolume(anyInt())).thenReturn(1);
14898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
14998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
15098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        HeadsetClientStateMachine mockSM = new HeadsetClientStateMachine(
15198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            mockService, getContext().getMainLooper());
15298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        mockSM.start();
15398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
15498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Return false for priority.
15598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        when(mockService.getPriority(any(BluetoothDevice.class))).thenReturn(
15698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            BluetoothProfile.PRIORITY_ON);
15798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
15898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Inject an event for when incoming connection is requested
15998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        StackEvent connStCh =
16098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            new StackEvent(StackEvent.EVENT_TYPE_CONNECTION_STATE_CHANGED);
16198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.valueInt = HeadsetClientHalConstants.CONNECTION_STATE_CONNECTED;
16298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.valueInt2 = 0;
16398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.valueInt3 = 0;
16498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        connStCh.device = device;
16598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        mockSM.sendMessage(StackEvent.STACK_EVENT, connStCh);
16698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
16798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Verify that one connection state broadcast is executed
16898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        ArgumentCaptor<Intent> intentArgument1 = ArgumentCaptor.forClass(Intent.class);
16998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        verify(mockService, timeout(1000)).sendBroadcast(intentArgument1.capture(), anyString());
17098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertEquals(BluetoothProfile.STATE_CONNECTING,
17198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            intentArgument1.getValue().getIntExtra(BluetoothProfile.EXTRA_STATE, -1));
17298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
17398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Check we are in connecting state now.
17498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertTrue(mockSM.getCurrentState() instanceof HeadsetClientStateMachine.Connecting);
17598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
17698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Verify that one connection state broadcast is executed
17798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        ArgumentCaptor<Intent> intentArgument2 = ArgumentCaptor.forClass(Intent.class);
17898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        verify(mockService,
17998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            timeout(HeadsetClientStateMachine.CONNECTING_TIMEOUT_MS * 2).times(2)).sendBroadcast(
18098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            intentArgument2.capture(), anyString());
18198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertEquals(BluetoothProfile.STATE_DISCONNECTED,
18298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal            intentArgument2.getValue().getIntExtra(BluetoothProfile.EXTRA_STATE, -1));
18398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal
18498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        // Check we are in connecting state now.
18598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal        assertTrue(mockSM.getCurrentState() instanceof HeadsetClientStateMachine.Disconnected);
18698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal    }
18798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal}
188