• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.bluetooth;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import static org.mockito.Mockito.when;
22 
23 import com.android.settings.R;
24 import com.android.settings.applications.SpacePreference;
25 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
26 import com.android.settingslib.bluetooth.HearingAidInfo;
27 import com.android.settingslib.widget.ButtonPreference;
28 
29 import org.junit.Rule;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.Mock;
33 import org.mockito.junit.MockitoJUnit;
34 import org.mockito.junit.MockitoRule;
35 import org.robolectric.RobolectricTestRunner;
36 
37 /** Tests for {@link BluetoothDetailsPairOtherController}. */
38 @RunWith(RobolectricTestRunner.class)
39 public class BluetoothDetailsPairOtherControllerTest extends BluetoothDetailsControllerTestBase  {
40     @Rule
41     public final MockitoRule mockito = MockitoJUnit.rule();
42 
43     @Mock
44     private CachedBluetoothDevice mSubCachedDevice;
45     private BluetoothDetailsPairOtherController mController;
46     private ButtonPreference mPreference;
47     private SpacePreference mSpacePreference;
48 
49     @Override
setUp()50     public void setUp() {
51         super.setUp();
52 
53         mController = new BluetoothDetailsPairOtherController(mContext, mFragment, mCachedDevice,
54                 mLifecycle);
55         mPreference = new ButtonPreference(mContext);
56         mSpacePreference = new SpacePreference(mContext, null);
57         mPreference.setKey(mController.getPreferenceKey());
58         mSpacePreference.setKey(BluetoothDetailsPairOtherController.KEY_SPACE);
59         mScreen.addPreference(mPreference);
60         mScreen.addPreference(mSpacePreference);
61     }
62 
63     @Test
init_leftSideDevice_rightSideButtonTitle()64     public void init_leftSideDevice_rightSideButtonTitle() {
65         when(mCachedDevice.getDeviceSide()).thenReturn(HearingAidInfo.DeviceSide.SIDE_LEFT);
66 
67         mController.init(mScreen);
68 
69         assertThat(mPreference.getTitle().toString()).isEqualTo(
70                 mContext.getString(R.string.bluetooth_pair_right_ear_button));
71     }
72 
73     @Test
init_rightSideDevice_leftSideButtonTitle()74     public void init_rightSideDevice_leftSideButtonTitle() {
75         when(mCachedDevice.getDeviceSide()).thenReturn(HearingAidInfo.DeviceSide.SIDE_RIGHT);
76 
77         mController.init(mScreen);
78 
79         assertThat(mPreference.getTitle().toString()).isEqualTo(
80                 mContext.getString(R.string.bluetooth_pair_left_ear_button));
81     }
82 
83     @Test
init_isNotConnectedAshaHearingAidDevice_notVisiblePreference()84     public void init_isNotConnectedAshaHearingAidDevice_notVisiblePreference() {
85         when(mCachedDevice.isConnectedAshaHearingAidDevice()).thenReturn(false);
86 
87         mController.init(mScreen);
88 
89         assertThat(mPreference.isVisible()).isFalse();
90         assertThat(mSpacePreference.isVisible()).isFalse();
91     }
92 
93     @Test
isAvailable_isNotConnectedAshaHearingAidDevice_notAvailable()94     public void isAvailable_isNotConnectedAshaHearingAidDevice_notAvailable() {
95         when(mCachedDevice.isConnectedAshaHearingAidDevice()).thenReturn(false);
96 
97         assertThat(mController.isAvailable()).isFalse();
98     }
99 
100     @Test
isAvailable_isConnectedAshaHearingAidDevice_isMonaural_notAvailable()101     public void isAvailable_isConnectedAshaHearingAidDevice_isMonaural_notAvailable() {
102         when(mCachedDevice.isConnectedAshaHearingAidDevice()).thenReturn(true);
103         when(mCachedDevice.getDeviceMode()).thenReturn(HearingAidInfo.DeviceMode.MODE_MONAURAL);
104 
105         assertThat(mController.isAvailable()).isFalse();
106     }
107 
108     @Test
isAvailable_subDeviceIsConnectedAshaHearingAidDevice_notAvailable()109     public void isAvailable_subDeviceIsConnectedAshaHearingAidDevice_notAvailable() {
110         when(mCachedDevice.isConnectedAshaHearingAidDevice()).thenReturn(true);
111         when(mCachedDevice.getDeviceMode()).thenReturn(HearingAidInfo.DeviceMode.MODE_BINAURAL);
112         when(mSubCachedDevice.isConnectedAshaHearingAidDevice()).thenReturn(true);
113         when(mCachedDevice.getSubDevice()).thenReturn(mSubCachedDevice);
114 
115         assertThat(mController.isAvailable()).isFalse();
116     }
117 
118     @Test
isAvailable_subDeviceIsNotConnectedAshaHearingAidDevice_available()119     public void isAvailable_subDeviceIsNotConnectedAshaHearingAidDevice_available() {
120         when(mCachedDevice.isConnectedAshaHearingAidDevice()).thenReturn(true);
121         when(mCachedDevice.getDeviceMode()).thenReturn(HearingAidInfo.DeviceMode.MODE_BINAURAL);
122         when(mSubCachedDevice.isConnectedAshaHearingAidDevice()).thenReturn(false);
123         when(mCachedDevice.getSubDevice()).thenReturn(mSubCachedDevice);
124 
125         assertThat(mController.isAvailable()).isTrue();
126     }
127 
128     @Test
isAvailable_subDeviceNotExist_available()129     public void isAvailable_subDeviceNotExist_available() {
130         when(mCachedDevice.isConnectedAshaHearingAidDevice()).thenReturn(true);
131         when(mCachedDevice.getDeviceMode()).thenReturn(HearingAidInfo.DeviceMode.MODE_BINAURAL);
132         when(mCachedDevice.getSubDevice()).thenReturn(null);
133 
134         assertThat(mController.isAvailable()).isTrue();
135     }
136 
137     @Test
refresh_leftSideDevice_leftSideButtonTitle()138     public void refresh_leftSideDevice_leftSideButtonTitle() {
139         when(mCachedDevice.getDeviceSide()).thenReturn(HearingAidInfo.DeviceSide.SIDE_RIGHT);
140         mController.init(mScreen);
141 
142         mController.refresh();
143 
144         assertThat(mPreference.getTitle().toString()).isEqualTo(
145                 mContext.getString(R.string.bluetooth_pair_left_ear_button));
146     }
147 
148     @Test
refresh_isNotConnectedAshaHearingAidDevice_notVisiblePreference()149     public void refresh_isNotConnectedAshaHearingAidDevice_notVisiblePreference() {
150         when(mCachedDevice.isConnectedAshaHearingAidDevice()).thenReturn(false);
151         mController.init(mScreen);
152 
153         mController.refresh();
154 
155         assertThat(mPreference.isVisible()).isFalse();
156         assertThat(mSpacePreference.isVisible()).isFalse();
157     }
158 }
159