16258aae54824a7c3cd3974822b0b6835ab8a45deJack He/*
26258aae54824a7c3cd3974822b0b6835ab8a45deJack He * Copyright (C) 2017 The Android Open Source Project
36258aae54824a7c3cd3974822b0b6835ab8a45deJack He *
46258aae54824a7c3cd3974822b0b6835ab8a45deJack He * Licensed under the Apache License, Version 2.0 (the "License");
56258aae54824a7c3cd3974822b0b6835ab8a45deJack He * you may not use this file except in compliance with the License.
66258aae54824a7c3cd3974822b0b6835ab8a45deJack He * You may obtain a copy of the License at
76258aae54824a7c3cd3974822b0b6835ab8a45deJack He *
86258aae54824a7c3cd3974822b0b6835ab8a45deJack He *      http://www.apache.org/licenses/LICENSE-2.0
96258aae54824a7c3cd3974822b0b6835ab8a45deJack He *
106258aae54824a7c3cd3974822b0b6835ab8a45deJack He * Unless required by applicable law or agreed to in writing, software
116258aae54824a7c3cd3974822b0b6835ab8a45deJack He * distributed under the License is distributed on an "AS IS" BASIS,
126258aae54824a7c3cd3974822b0b6835ab8a45deJack He * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136258aae54824a7c3cd3974822b0b6835ab8a45deJack He * See the License for the specific language governing permissions and
146258aae54824a7c3cd3974822b0b6835ab8a45deJack He * limitations under the License.
156258aae54824a7c3cd3974822b0b6835ab8a45deJack He */
166258aae54824a7c3cd3974822b0b6835ab8a45deJack Hepackage com.android.settingslib.bluetooth;
176258aae54824a7c3cd3974822b0b6835ab8a45deJack He
186258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport static com.google.common.truth.Truth.assertThat;
196258aae54824a7c3cd3974822b0b6835ab8a45deJack He
20c219bc9b884f70b087b2d55412b128846a5d0ce1Jack Heimport static org.mockito.Matchers.any;
21c219bc9b884f70b087b2d55412b128846a5d0ce1Jack Heimport static org.mockito.Matchers.anyString;
226258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport static org.mockito.Mockito.doAnswer;
23c219bc9b884f70b087b2d55412b128846a5d0ce1Jack Heimport static org.mockito.Mockito.never;
246258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport static org.mockito.Mockito.spy;
25c219bc9b884f70b087b2d55412b128846a5d0ce1Jack Heimport static org.mockito.Mockito.verify;
266258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport static org.mockito.Mockito.when;
276258aae54824a7c3cd3974822b0b6835ab8a45deJack He
286258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport android.bluetooth.BluetoothAdapter;
296258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport android.bluetooth.BluetoothDevice;
306258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport android.bluetooth.BluetoothProfile;
316258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport android.content.Context;
326258aae54824a7c3cd3974822b0b6835ab8a45deJack He
336258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport com.android.settingslib.R;
346258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport com.android.settingslib.TestConfig;
356258aae54824a7c3cd3974822b0b6835ab8a45deJack He
366258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport org.junit.Before;
376258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport org.junit.Test;
386258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport org.junit.runner.RunWith;
396258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport org.mockito.Mock;
406258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport org.mockito.MockitoAnnotations;
416258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport org.robolectric.RobolectricTestRunner;
426258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport org.robolectric.RuntimeEnvironment;
436258aae54824a7c3cd3974822b0b6835ab8a45deJack Heimport org.robolectric.annotation.Config;
446258aae54824a7c3cd3974822b0b6835ab8a45deJack He
456258aae54824a7c3cd3974822b0b6835ab8a45deJack He@RunWith(RobolectricTestRunner.class)
466258aae54824a7c3cd3974822b0b6835ab8a45deJack He@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, resourceDir =
476258aae54824a7c3cd3974822b0b6835ab8a45deJack He        "../../res")
486258aae54824a7c3cd3974822b0b6835ab8a45deJack Hepublic class CachedBluetoothDeviceTest {
49c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    private final static String DEVICE_NAME = "TestName";
50c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    private final static String DEVICE_ALIAS = "TestAlias";
51c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    private final static String DEVICE_ADDRESS = "AA:BB:CC:DD:EE:FF";
52c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    private final static String DEVICE_ALIAS_NEW = "TestAliasNew";
536258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Mock
546258aae54824a7c3cd3974822b0b6835ab8a45deJack He    private LocalBluetoothAdapter mAdapter;
556258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Mock
566258aae54824a7c3cd3974822b0b6835ab8a45deJack He    private LocalBluetoothProfileManager mProfileManager;
576258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Mock
586258aae54824a7c3cd3974822b0b6835ab8a45deJack He    private HeadsetProfile mHfpProfile;
596258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Mock
606258aae54824a7c3cd3974822b0b6835ab8a45deJack He    private A2dpProfile mA2dpProfile;
616258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Mock
626258aae54824a7c3cd3974822b0b6835ab8a45deJack He    private HidProfile mHidProfile;
636258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Mock
646258aae54824a7c3cd3974822b0b6835ab8a45deJack He    private BluetoothDevice mDevice;
656258aae54824a7c3cd3974822b0b6835ab8a45deJack He    private CachedBluetoothDevice mCachedDevice;
666258aae54824a7c3cd3974822b0b6835ab8a45deJack He    private Context mContext;
676258aae54824a7c3cd3974822b0b6835ab8a45deJack He    private int mBatteryLevel = BluetoothDevice.BATTERY_LEVEL_UNKNOWN;
686258aae54824a7c3cd3974822b0b6835ab8a45deJack He
696258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Before
706258aae54824a7c3cd3974822b0b6835ab8a45deJack He    public void setUp() {
716258aae54824a7c3cd3974822b0b6835ab8a45deJack He        MockitoAnnotations.initMocks(this);
726258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mContext = RuntimeEnvironment.application;
73c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        when(mDevice.getAddress()).thenReturn(DEVICE_ADDRESS);
746258aae54824a7c3cd3974822b0b6835ab8a45deJack He        when(mAdapter.getBluetoothState()).thenReturn(BluetoothAdapter.STATE_ON);
756258aae54824a7c3cd3974822b0b6835ab8a45deJack He        when(mHfpProfile.isProfileReady()).thenReturn(true);
766258aae54824a7c3cd3974822b0b6835ab8a45deJack He        when(mA2dpProfile.isProfileReady()).thenReturn(true);
776258aae54824a7c3cd3974822b0b6835ab8a45deJack He        when(mHidProfile.isProfileReady()).thenReturn(true);
786258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice = spy(
796258aae54824a7c3cd3974822b0b6835ab8a45deJack He                new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice));
806258aae54824a7c3cd3974822b0b6835ab8a45deJack He        doAnswer((invocation) -> mBatteryLevel).when(mCachedDevice).getBatteryLevel();
816258aae54824a7c3cd3974822b0b6835ab8a45deJack He    }
826258aae54824a7c3cd3974822b0b6835ab8a45deJack He
836258aae54824a7c3cd3974822b0b6835ab8a45deJack He    /**
846258aae54824a7c3cd3974822b0b6835ab8a45deJack He     * Test to verify the current test context object works so that we are not checking null
856258aae54824a7c3cd3974822b0b6835ab8a45deJack He     * against null
866258aae54824a7c3cd3974822b0b6835ab8a45deJack He     */
876258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Test
886258aae54824a7c3cd3974822b0b6835ab8a45deJack He    public void testContextMock() {
896258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mContext.getString(R.string.bluetooth_connected)).isEqualTo("Connected");
906258aae54824a7c3cd3974822b0b6835ab8a45deJack He    }
916258aae54824a7c3cd3974822b0b6835ab8a45deJack He
926258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Test
936258aae54824a7c3cd3974822b0b6835ab8a45deJack He    public void testGetConnectionSummary_testSingleProfileConnectDisconnect() {
946258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Test without battery level
956258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Set HID profile to be connected and test connection state summary
966258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHidProfile, BluetoothProfile.STATE_CONNECTED);
976258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isEqualTo(mContext.getString(
986258aae54824a7c3cd3974822b0b6835ab8a45deJack He                R.string.bluetooth_connected));
996258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1006258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Set HID profile to be disconnected and test connection state summary
1016258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHidProfile, BluetoothProfile.STATE_DISCONNECTED);
1026258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isNull();
1036258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1046258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Test with battery level
1056258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mBatteryLevel = 10;
1066258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Set HID profile to be connected and test connection state summary
1076258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHidProfile, BluetoothProfile.STATE_CONNECTED);
1086258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isEqualTo(mContext.getString(
1096258aae54824a7c3cd3974822b0b6835ab8a45deJack He                R.string.bluetooth_connected_battery_level,
1106258aae54824a7c3cd3974822b0b6835ab8a45deJack He                com.android.settingslib.Utils.formatPercentage(mBatteryLevel)));
1116258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1126258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Set HID profile to be disconnected and test connection state summary
1136258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHidProfile, BluetoothProfile.STATE_DISCONNECTED);
1146258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isNull();
1156258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1166258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Test with BluetoothDevice.BATTERY_LEVEL_UNKNOWN battery level
1176258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mBatteryLevel = BluetoothDevice.BATTERY_LEVEL_UNKNOWN;
1186258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1196258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Set HID profile to be connected and test connection state summary
1206258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHidProfile, BluetoothProfile.STATE_CONNECTED);
1216258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isEqualTo(mContext.getString(
1226258aae54824a7c3cd3974822b0b6835ab8a45deJack He                R.string.bluetooth_connected));
1236258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1246258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Set HID profile to be disconnected and test connection state summary
1256258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHidProfile, BluetoothProfile.STATE_DISCONNECTED);
1266258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isNull();
1276258aae54824a7c3cd3974822b0b6835ab8a45deJack He    }
1286258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1296258aae54824a7c3cd3974822b0b6835ab8a45deJack He    @Test
1306258aae54824a7c3cd3974822b0b6835ab8a45deJack He    public void testGetConnectionSummary_testMultipleProfileConnectDisconnect() {
1316258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mBatteryLevel = 10;
1326258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1336258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Set HFP, A2DP and HID profile to be connected and test connection state summary
1346258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHfpProfile, BluetoothProfile.STATE_CONNECTED);
1356258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
1366258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHidProfile, BluetoothProfile.STATE_CONNECTED);
1376258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isEqualTo(mContext.getString(
1386258aae54824a7c3cd3974822b0b6835ab8a45deJack He                R.string.bluetooth_connected_battery_level,
1396258aae54824a7c3cd3974822b0b6835ab8a45deJack He                com.android.settingslib.Utils.formatPercentage(mBatteryLevel)));
1406258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1416258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Disconnect HFP only and test connection state summary
1426258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHfpProfile, BluetoothProfile.STATE_DISCONNECTED);
1436258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isEqualTo(mContext.getString(
1446258aae54824a7c3cd3974822b0b6835ab8a45deJack He                R.string.bluetooth_connected_no_headset_battery_level,
1456258aae54824a7c3cd3974822b0b6835ab8a45deJack He                com.android.settingslib.Utils.formatPercentage(mBatteryLevel)));
1466258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1476258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Disconnect A2DP only and test connection state summary
1486258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHfpProfile, BluetoothProfile.STATE_CONNECTED);
1496258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mA2dpProfile, BluetoothProfile.STATE_DISCONNECTED);
1506258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isEqualTo(mContext.getString(
1516258aae54824a7c3cd3974822b0b6835ab8a45deJack He                R.string.bluetooth_connected_no_a2dp_battery_level,
1526258aae54824a7c3cd3974822b0b6835ab8a45deJack He                com.android.settingslib.Utils.formatPercentage(mBatteryLevel)));
1536258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1546258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Disconnect both HFP and A2DP and test connection state summary
1556258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHfpProfile, BluetoothProfile.STATE_DISCONNECTED);
1566258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isEqualTo(mContext.getString(
1576258aae54824a7c3cd3974822b0b6835ab8a45deJack He                R.string.bluetooth_connected_no_headset_no_a2dp_battery_level,
1586258aae54824a7c3cd3974822b0b6835ab8a45deJack He                com.android.settingslib.Utils.formatPercentage(mBatteryLevel)));
1596258aae54824a7c3cd3974822b0b6835ab8a45deJack He
1606258aae54824a7c3cd3974822b0b6835ab8a45deJack He        // Disconnect all profiles and test connection state summary
1616258aae54824a7c3cd3974822b0b6835ab8a45deJack He        mCachedDevice.onProfileStateChanged(mHidProfile, BluetoothProfile.STATE_DISCONNECTED);
1626258aae54824a7c3cd3974822b0b6835ab8a45deJack He        assertThat(mCachedDevice.getConnectionSummary()).isNull();
1636258aae54824a7c3cd3974822b0b6835ab8a45deJack He    }
164c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He
165c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    @Test
166c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    public void testDeviceName_testAliasNameAvailable() {
167c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        when(mDevice.getAliasName()).thenReturn(DEVICE_ALIAS);
168c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        when(mDevice.getName()).thenReturn(DEVICE_NAME);
169c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        CachedBluetoothDevice cachedBluetoothDevice =
170c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He                new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice);
171c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        // Verify alias is returned on getName
172c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS);
173c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        // Verify device is visible
174c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        assertThat(cachedBluetoothDevice.hasHumanReadableName()).isTrue();
175c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    }
176c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He
177c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    @Test
178c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    public void testDeviceName_testNameNotAvailable() {
179c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        CachedBluetoothDevice cachedBluetoothDevice =
180c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He                new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice);
181c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        // Verify device address is returned on getName
182c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ADDRESS);
183c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        // Verify device is not visible
184c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        assertThat(cachedBluetoothDevice.hasHumanReadableName()).isFalse();
185c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    }
186c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He
187c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    @Test
188c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    public void testDeviceName_testRenameDevice() {
189c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        final String[] alias = {DEVICE_ALIAS};
190c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        doAnswer(invocation -> alias[0]).when(mDevice).getAliasName();
191c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        doAnswer(invocation -> {
192c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He            alias[0] = (String) invocation.getArguments()[0];
193c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He            return true;
194c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        }).when(mDevice).setAlias(anyString());
195c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        when(mDevice.getName()).thenReturn(DEVICE_NAME);
196c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        CachedBluetoothDevice cachedBluetoothDevice =
197c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He                new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice);
198c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        // Verify alias is returned on getName
199c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS);
200c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        // Verify null name does not get set
201c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        cachedBluetoothDevice.setName(null);
202c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        verify(mDevice, never()).setAlias(any());
203c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        // Verify new name is set properly
204c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        cachedBluetoothDevice.setName(DEVICE_ALIAS_NEW);
205c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        verify(mDevice).setAlias(DEVICE_ALIAS_NEW);
206c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        // Verify new alias is returned on getName
207c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He        assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS_NEW);
208c219bc9b884f70b087b2d55412b128846a5d0ce1Jack He    }
2096258aae54824a7c3cd3974822b0b6835ab8a45deJack He}
210