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