Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f161e1e authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Use fresh device properties in BondStateMachine test cases" into main

parents 6782ade1 cef4ba08
Loading
Loading
Loading
Loading
+133 −65
Original line number Original line Diff line number Diff line
@@ -54,6 +54,11 @@ public class BondStateMachineTest {
    private static final int TEST_BOND_REASON = 0;
    private static final int TEST_BOND_REASON = 0;
    private static final byte[] TEST_BT_ADDR_BYTES = {00, 11, 22, 33, 44, 55};
    private static final byte[] TEST_BT_ADDR_BYTES = {00, 11, 22, 33, 44, 55};
    private static final byte[] TEST_BT_ADDR_BYTES_2 = {00, 11, 22, 33, 44, 66};
    private static final byte[] TEST_BT_ADDR_BYTES_2 = {00, 11, 22, 33, 44, 66};
    private static final int[] DEVICE_TYPES = {
        BluetoothDevice.DEVICE_TYPE_CLASSIC,
        BluetoothDevice.DEVICE_TYPE_DUAL,
        BluetoothDevice.DEVICE_TYPE_LE
    };
    private static final ParcelUuid[] TEST_UUIDS =
    private static final ParcelUuid[] TEST_UUIDS =
            {ParcelUuid.fromString("0000111E-0000-1000-8000-00805F9B34FB")};
            {ParcelUuid.fromString("0000111E-0000-1000-8000-00805F9B34FB")};


@@ -233,20 +238,25 @@ public class BondStateMachineTest {
        Assert.assertTrue(mBondStateMachine.mPendingBondedDevices.isEmpty());
        Assert.assertTrue(mBondStateMachine.mPendingBondedDevices.isEmpty());
    }
    }


    @Test
    private void resetRemoteDevice(int deviceType) {
    public void testSendIntent() {
        int badBondState = 42;
        mVerifyCount = 0;

        // Reset mRemoteDevices for the test.
        // Reset mRemoteDevices for the test.
        mRemoteDevices.reset();
        mRemoteDevices.reset();
        mDeviceProperties = mRemoteDevices.addDeviceProperties(TEST_BT_ADDR_BYTES);
        mDeviceProperties = mRemoteDevices.addDeviceProperties(TEST_BT_ADDR_BYTES);
        mDevice = mDeviceProperties.getDevice();
        mDevice = mDeviceProperties.getDevice();
        Assert.assertNotNull(mDevice);
        Assert.assertNotNull(mDevice);
        mDeviceProperties.mDeviceType = deviceType;
        mBondStateMachine.mPendingBondedDevices.clear();
    }

    @Test
    public void testSendIntent() {
        int badBondState = 42;
        mVerifyCount = 0;


        // Uuid not available, mPendingBondedDevice is empty.
        // Uuid not available, mPendingBondedDevice is empty.
        testSendIntentNoPendingDevice(BOND_NONE, BOND_NONE, false, BOND_NONE,
        testSendIntentNoPendingDevice(
                false, BOND_NONE, BOND_NONE, false);
                BOND_NONE, BOND_NONE, false, BOND_NONE, false, BOND_NONE, BOND_NONE, false);

        testSendIntentNoPendingDevice(BOND_NONE, BOND_BONDING, false, BOND_BONDING,
        testSendIntentNoPendingDevice(BOND_NONE, BOND_BONDING, false, BOND_BONDING,
                true, BOND_NONE, BOND_BONDING, false);
                true, BOND_NONE, BOND_BONDING, false);
        testSendIntentNoPendingDevice(BOND_NONE, BOND_BONDED, false, BOND_BONDED,
        testSendIntentNoPendingDevice(BOND_NONE, BOND_BONDED, false, BOND_BONDED,
@@ -463,7 +473,11 @@ public class BondStateMachineTest {
        } catch (IllegalArgumentException e) {
        } catch (IllegalArgumentException e) {
            // Do nothing.
            // Do nothing.
        }
        }

        // Properties are removed when bond is removed
        if (newState != BluetoothDevice.BOND_NONE) {
            Assert.assertEquals(expectedNewState, mDeviceProperties.getBondState());
            Assert.assertEquals(expectedNewState, mDeviceProperties.getBondState());
        }


        // Check for bond state Intent status.
        // Check for bond state Intent status.
        if (shouldBroadcast) {
        if (shouldBroadcast) {
@@ -485,70 +499,124 @@ public class BondStateMachineTest {
        }
        }
    }
    }


    private void testSendIntentNoPendingDeviceWithUuid(int oldState, int newState,
    private void testSendIntentForAllDeviceTypes(
            boolean isTriggerFromDelayMessage, int expectedNewState, boolean shouldBroadcast,
            int oldState,
            int broadcastOldState, int broadcastNewState, boolean shouldDelayMessageExist) {
            int newState,
            boolean isTriggerFromDelayMessage,
            int expectedNewState,
            boolean shouldBroadcast,
            int broadcastOldState,
            int broadcastNewState,
            boolean shouldDelayMessageExist,
            BluetoothDevice pendingBondedDevice,
            ParcelUuid[] uuids) {
        for (int deviceType : DEVICE_TYPES) {
            resetRemoteDevice(deviceType);
            if (pendingBondedDevice != null) {
                mBondStateMachine.mPendingBondedDevices.add(mDevice);
            }
            if (uuids != null) {
                // Add dummy UUID for the device.
                // Add dummy UUID for the device.
                mDeviceProperties.mUuids = TEST_UUIDS;
                mDeviceProperties.mUuids = TEST_UUIDS;
        testSendIntentNoPendingDevice(oldState, newState, isTriggerFromDelayMessage,
            }
                expectedNewState, shouldBroadcast, broadcastOldState, broadcastNewState,
            testSendIntentCase(
                    oldState,
                    newState,
                    isTriggerFromDelayMessage,
                    expectedNewState,
                    shouldBroadcast,
                    broadcastOldState,
                    broadcastNewState,
                    shouldDelayMessageExist);
                    shouldDelayMessageExist);
        }
        }

    private void testSendIntentPendingDeviceWithUuid(int oldState, int newState,
            boolean isTriggerFromDelayMessage, int expectedNewState, boolean shouldBroadcast,
            int broadcastOldState, int broadcastNewState, boolean shouldDelayMessageExist) {
        // Add dummy UUID for the device.
        mDeviceProperties.mUuids = TEST_UUIDS;
        testSendIntentPendingDevice(oldState, newState, isTriggerFromDelayMessage, expectedNewState,
                shouldBroadcast, broadcastOldState, broadcastNewState, shouldDelayMessageExist);
    }
    }


    private void testSendIntentPendingDevice(int oldState, int newState,
    private void testSendIntentNoPendingDeviceWithUuid(
            boolean isTriggerFromDelayMessage, int expectedNewState, boolean shouldBroadcast,
            int oldState,
            int broadcastOldState, int broadcastNewState, boolean shouldDelayMessageExist) {
            int newState,
        // Test for classic remote device.
            boolean isTriggerFromDelayMessage,
        mDeviceProperties.mDeviceType = BluetoothDevice.DEVICE_TYPE_CLASSIC;
            int expectedNewState,
        mBondStateMachine.mPendingBondedDevices.clear();
            boolean shouldBroadcast,
        mBondStateMachine.mPendingBondedDevices.add(mDevice);
            int broadcastOldState,
        testSendIntentCase(oldState, newState, isTriggerFromDelayMessage, expectedNewState,
            int broadcastNewState,
                shouldBroadcast, broadcastOldState, broadcastNewState, shouldDelayMessageExist);
            boolean shouldDelayMessageExist) {

        testSendIntentForAllDeviceTypes(
        // Test for dual-mode remote device.
                oldState,
        mDeviceProperties.mDeviceType = BluetoothDevice.DEVICE_TYPE_DUAL;
                newState,
        mBondStateMachine.mPendingBondedDevices.clear();
                isTriggerFromDelayMessage,
        mBondStateMachine.mPendingBondedDevices.add(mDevice);
                expectedNewState,
        testSendIntentCase(oldState, newState, isTriggerFromDelayMessage, expectedNewState,
                shouldBroadcast,
                shouldBroadcast, broadcastOldState, broadcastNewState, shouldDelayMessageExist);
                broadcastOldState,

                broadcastNewState,
        // Test for low energy remote device.
                shouldDelayMessageExist,
        mDeviceProperties.mDeviceType = BluetoothDevice.DEVICE_TYPE_LE;
                null,
        mBondStateMachine.mPendingBondedDevices.clear();
                TEST_UUIDS);
        mBondStateMachine.mPendingBondedDevices.add(mDevice);
        testSendIntentCase(oldState, newState, isTriggerFromDelayMessage, expectedNewState,
                shouldBroadcast, broadcastOldState, broadcastNewState, shouldDelayMessageExist);
    }
    }


    private void testSendIntentNoPendingDevice(int oldState, int newState,
    private void testSendIntentPendingDeviceWithUuid(
            boolean isTriggerFromDelayMessage, int expectedNewState, boolean shouldBroadcast,
            int oldState,
            int broadcastOldState, int broadcastNewState, boolean shouldDelayMessageExist) {
            int newState,
        // Test for classic remote device.
            boolean isTriggerFromDelayMessage,
        mDeviceProperties.mDeviceType = BluetoothDevice.DEVICE_TYPE_CLASSIC;
            int expectedNewState,
        mBondStateMachine.mPendingBondedDevices.clear();
            boolean shouldBroadcast,
        testSendIntentCase(oldState, newState, isTriggerFromDelayMessage, expectedNewState,
            int broadcastOldState,
                shouldBroadcast, broadcastOldState, broadcastNewState, shouldDelayMessageExist);
            int broadcastNewState,
            boolean shouldDelayMessageExist) {
        testSendIntentForAllDeviceTypes(
                oldState,
                newState,
                isTriggerFromDelayMessage,
                expectedNewState,
                shouldBroadcast,
                broadcastOldState,
                broadcastNewState,
                shouldDelayMessageExist,
                mDevice,
                TEST_UUIDS);
    }


        // Test for dual-mode remote device.
    private void testSendIntentPendingDevice(
        mDeviceProperties.mDeviceType = BluetoothDevice.DEVICE_TYPE_DUAL;
            int oldState,
        mBondStateMachine.mPendingBondedDevices.clear();
            int newState,
        testSendIntentCase(oldState, newState, isTriggerFromDelayMessage, expectedNewState,
            boolean isTriggerFromDelayMessage,
                shouldBroadcast, broadcastOldState, broadcastNewState, shouldDelayMessageExist);
            int expectedNewState,
            boolean shouldBroadcast,
            int broadcastOldState,
            int broadcastNewState,
            boolean shouldDelayMessageExist) {
        testSendIntentForAllDeviceTypes(
                oldState,
                newState,
                isTriggerFromDelayMessage,
                expectedNewState,
                shouldBroadcast,
                broadcastOldState,
                broadcastNewState,
                shouldDelayMessageExist,
                mDevice,
                null);
    }


        // Test for low energy remote device.
    private void testSendIntentNoPendingDevice(
        mDeviceProperties.mDeviceType = BluetoothDevice.DEVICE_TYPE_LE;
            int oldState,
        mBondStateMachine.mPendingBondedDevices.clear();
            int newState,
        testSendIntentCase(oldState, newState, isTriggerFromDelayMessage, expectedNewState,
            boolean isTriggerFromDelayMessage,
                shouldBroadcast, broadcastOldState, broadcastNewState, shouldDelayMessageExist);
            int expectedNewState,
            boolean shouldBroadcast,
            int broadcastOldState,
            int broadcastNewState,
            boolean shouldDelayMessageExist) {
        testSendIntentForAllDeviceTypes(
                oldState,
                newState,
                isTriggerFromDelayMessage,
                expectedNewState,
                shouldBroadcast,
                broadcastOldState,
                broadcastNewState,
                shouldDelayMessageExist,
                null,
                null);
    }
    }


    private void verifyBondStateChangeIntent(int oldState, int newState, Intent intent) {
    private void verifyBondStateChangeIntent(int oldState, int newState, Intent intent) {