Loading android/app/tests/unit/src/com/android/bluetooth/bas/BatteryStateMachineTest.java +81 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.bluetooth.bas; import static android.bluetooth.BluetoothGatt.GATT_SUCCESS; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; Loading @@ -32,6 +34,7 @@ import static org.mockito.Mockito.when; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.os.HandlerThread; Loading Loading @@ -189,6 +192,72 @@ public class BatteryStateMachineTest { IsInstanceOf.instanceOf(BatteryStateMachine.Connected.class)); } @Test public void testConnectedStateChanges() { allowConnection(true); allowConnectGatt(true); // Connected -> CONNECT reconnect(); mBatteryStateMachine.sendMessage(BatteryStateMachine.CONNECT); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Connected.class); // Connected -> DISCONNECT reconnect(); mBatteryStateMachine.sendMessage(BatteryStateMachine.DISCONNECT); TestUtils.waitForLooperToFinishScheduledTask(mBatteryStateMachine.getHandler().getLooper()); mBatteryStateMachine.notifyConnectionStateChanged( GATT_SUCCESS, BluetoothProfile.STATE_DISCONNECTED); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Disconnected.class); // Connected -> STATE_DISCONNECTED reconnect(); mBatteryStateMachine.sendMessage( BatteryStateMachine.CONNECTION_STATE_CHANGED, BluetoothGatt.STATE_DISCONNECTED); TestUtils.waitForLooperToFinishScheduledTask(mBatteryStateMachine.getHandler().getLooper()); mBatteryStateMachine.notifyConnectionStateChanged( GATT_SUCCESS, BluetoothProfile.STATE_DISCONNECTED); // Connected -> STATE_CONNECTED reconnect(); mBatteryStateMachine.sendMessage( BatteryStateMachine.CONNECTION_STATE_CHANGED, BluetoothGatt.STATE_CONNECTED); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Connected.class); // Connected -> ILLEGAL_STATE reconnect(); int badState = -1; mBatteryStateMachine.sendMessage( BatteryStateMachine.CONNECTION_STATE_CHANGED, badState); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Connected.class); // Connected -> NOT_HANDLED reconnect(); int notHandled = -1; mBatteryStateMachine.sendMessage(notHandled); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Connected.class); } @Test public void testConnectGattTimeout() { allowConnection(true); Loading Loading @@ -244,6 +313,18 @@ public class BatteryStateMachineTest { .handleBatteryChanged(any(BluetoothDevice.class), anyInt()); } private void reconnect() { // Inject an event for when incoming connection is requested mBatteryStateMachine.sendMessage(BatteryStateMachine.CONNECT); TestUtils.waitForLooperToFinishScheduledTask(mBatteryStateMachine.getHandler().getLooper()); mBatteryStateMachine.notifyConnectionStateChanged( GATT_SUCCESS, BluetoothProfile.STATE_CONNECTED); TestUtils.waitForLooperToFinishScheduledTask(mBatteryStateMachine.getHandler().getLooper()); } // It simulates GATT connection for testing. public class StubBatteryStateMachine extends BatteryStateMachine { boolean mShouldAllowGatt = true; Loading Loading
android/app/tests/unit/src/com/android/bluetooth/bas/BatteryStateMachineTest.java +81 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.bluetooth.bas; import static android.bluetooth.BluetoothGatt.GATT_SUCCESS; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; Loading @@ -32,6 +34,7 @@ import static org.mockito.Mockito.when; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.os.HandlerThread; Loading Loading @@ -189,6 +192,72 @@ public class BatteryStateMachineTest { IsInstanceOf.instanceOf(BatteryStateMachine.Connected.class)); } @Test public void testConnectedStateChanges() { allowConnection(true); allowConnectGatt(true); // Connected -> CONNECT reconnect(); mBatteryStateMachine.sendMessage(BatteryStateMachine.CONNECT); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Connected.class); // Connected -> DISCONNECT reconnect(); mBatteryStateMachine.sendMessage(BatteryStateMachine.DISCONNECT); TestUtils.waitForLooperToFinishScheduledTask(mBatteryStateMachine.getHandler().getLooper()); mBatteryStateMachine.notifyConnectionStateChanged( GATT_SUCCESS, BluetoothProfile.STATE_DISCONNECTED); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Disconnected.class); // Connected -> STATE_DISCONNECTED reconnect(); mBatteryStateMachine.sendMessage( BatteryStateMachine.CONNECTION_STATE_CHANGED, BluetoothGatt.STATE_DISCONNECTED); TestUtils.waitForLooperToFinishScheduledTask(mBatteryStateMachine.getHandler().getLooper()); mBatteryStateMachine.notifyConnectionStateChanged( GATT_SUCCESS, BluetoothProfile.STATE_DISCONNECTED); // Connected -> STATE_CONNECTED reconnect(); mBatteryStateMachine.sendMessage( BatteryStateMachine.CONNECTION_STATE_CHANGED, BluetoothGatt.STATE_CONNECTED); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Connected.class); // Connected -> ILLEGAL_STATE reconnect(); int badState = -1; mBatteryStateMachine.sendMessage( BatteryStateMachine.CONNECTION_STATE_CHANGED, badState); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Connected.class); // Connected -> NOT_HANDLED reconnect(); int notHandled = -1; mBatteryStateMachine.sendMessage(notHandled); assertThat(mBatteryStateMachine.getCurrentState()) .isInstanceOf(BatteryStateMachine.Connected.class); } @Test public void testConnectGattTimeout() { allowConnection(true); Loading Loading @@ -244,6 +313,18 @@ public class BatteryStateMachineTest { .handleBatteryChanged(any(BluetoothDevice.class), anyInt()); } private void reconnect() { // Inject an event for when incoming connection is requested mBatteryStateMachine.sendMessage(BatteryStateMachine.CONNECT); TestUtils.waitForLooperToFinishScheduledTask(mBatteryStateMachine.getHandler().getLooper()); mBatteryStateMachine.notifyConnectionStateChanged( GATT_SUCCESS, BluetoothProfile.STATE_CONNECTED); TestUtils.waitForLooperToFinishScheduledTask(mBatteryStateMachine.getHandler().getLooper()); } // It simulates GATT connection for testing. public class StubBatteryStateMachine extends BatteryStateMachine { boolean mShouldAllowGatt = true; Loading