Merge "Decouple BluetoothDevicePreference and DeviceListPreferenceFragment"

This commit is contained in:
Lei Yu
2017-11-20 21:27:20 +00:00
committed by Android (Google) Code Review
3 changed files with 19 additions and 42 deletions

View File

@@ -41,6 +41,7 @@ import org.robolectric.util.ReflectionHelpers;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
@@ -51,6 +52,7 @@ import static org.mockito.Mockito.when;
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
shadows = SettingsShadowResources.class)
public class BluetoothDevicePreferenceTest {
private static final boolean SHOW_DEVICES_WITHOUT_NAMES = true;
private Context mContext;
@Mock
@@ -70,7 +72,7 @@ public class BluetoothDevicePreferenceTest {
mFakeFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
mMetricsFeatureProvider = mFakeFeatureFactory.getMetricsFeatureProvider();
mPreference = new BluetoothDevicePreference(mContext, mCachedBluetoothDevice,
mDeviceListPreferenceFragment);
SHOW_DEVICES_WITHOUT_NAMES);
}
@Test
@@ -177,47 +179,22 @@ public class BluetoothDevicePreferenceTest {
}
@Test
public void testVisible_notVisibleThenVisible() {
when(mDeviceListPreferenceFragment.shouldShowDevicesWithoutNames()).thenReturn(false);
final boolean[] humanReadableName = {false};
doAnswer(invocation -> humanReadableName[0]).when(mCachedBluetoothDevice)
.hasHumanReadableName();
public void testVisible_showDeviceWithoutNames_visible() {
doReturn(false).when(mCachedBluetoothDevice).hasHumanReadableName();
BluetoothDevicePreference preference =
new BluetoothDevicePreference(mContext, mCachedBluetoothDevice,
mDeviceListPreferenceFragment);
assertThat(preference.isVisible()).isFalse();
humanReadableName[0] = true;
preference.onDeviceAttributesChanged();
SHOW_DEVICES_WITHOUT_NAMES);
assertThat(preference.isVisible()).isTrue();
}
@Test
public void testVisible_visibleThenNotVisible() {
when(mDeviceListPreferenceFragment.shouldShowDevicesWithoutNames()).thenReturn(false);
final boolean[] humanReadableName = {true};
doAnswer(invocation -> humanReadableName[0]).when(mCachedBluetoothDevice)
.hasHumanReadableName();
public void testVisible_hideDeviceWithoutNames_invisible() {
doReturn(false).when(mCachedBluetoothDevice).hasHumanReadableName();
BluetoothDevicePreference preference =
new BluetoothDevicePreference(mContext, mCachedBluetoothDevice,
mDeviceListPreferenceFragment);
assertThat(preference.isVisible()).isTrue();
humanReadableName[0] = false;
preference.onDeviceAttributesChanged();
assertThat(preference.isVisible()).isFalse();
}
false);
@Test
public void testVisible_alwaysVisibleWhenEnabled() {
when(mDeviceListPreferenceFragment.shouldShowDevicesWithoutNames()).thenReturn(true);
final boolean[] humanReadableName = {true};
doAnswer(invocation -> humanReadableName[0]).when(mCachedBluetoothDevice)
.hasHumanReadableName();
BluetoothDevicePreference preference =
new BluetoothDevicePreference(mContext, mCachedBluetoothDevice,
mDeviceListPreferenceFragment);
assertThat(preference.isVisible()).isTrue();
humanReadableName[0] = false;
preference.onDeviceAttributesChanged();
assertThat(preference.isVisible()).isTrue();
assertThat(preference.isVisible()).isFalse();
}
}