Merge "Apply new preference and controller for Bluetooth developer option"

This commit is contained in:
tim peng
2019-12-16 01:24:53 +00:00
committed by Android (Google) Code Review
14 changed files with 74 additions and 1168 deletions

View File

@@ -1,114 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.development;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothCodecConfig;
import android.content.Context;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class BluetoothAudioBitsPerSamplePreferenceControllerTest {
@Mock
private BluetoothCodecConfig mBluetoothCodecConfig;
@Mock
private ListPreference mPreference;
@Mock
private PreferenceScreen mScreen;
@Mock
private BluetoothA2dpConfigStore mBluetoothA2dpConfigStore;
/**
* 0: Use System Selection (Default)
* 1: 16 bits/sample
* 2: 24 bits/sample
* 3: 32 bits/sample
*/
private String[] mListValues;
private Context mContext;
private BluetoothAudioBitsPerSamplePreferenceController mController;
private LifecycleOwner mLifecycleOwner;
private Lifecycle mLifecycle;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
mController = spy(new BluetoothAudioBitsPerSamplePreferenceController(mContext,
mLifecycle, mBluetoothA2dpConfigStore));
mListValues = mController.getListValues();
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
mController.displayPreference(mScreen);
}
@Test
public void writeConfigurationValues_option2_shouldWriteOption2ToSharedStore() {
when(mPreference.findIndexOfValue(mListValues[2])).thenReturn(2);
mController.writeConfigurationValues(mListValues[2]);
verify(mBluetoothA2dpConfigStore).setBitsPerSample(BluetoothCodecConfig.BITS_PER_SAMPLE_24);
}
@Test
public void writeConfigurationValues_default_shouldSetDefault() {
when(mPreference.findIndexOfValue(mListValues[0])).thenReturn(0);
mController.writeConfigurationValues(mListValues[0]);
verify(mBluetoothA2dpConfigStore).setBitsPerSample(
BluetoothCodecConfig.BITS_PER_SAMPLE_NONE);
}
@Test
public void getCurrentA2dpSettingIndex_option2_shouldReturnSecondIndex() {
when(mBluetoothCodecConfig.getBitsPerSample()).thenReturn(
BluetoothCodecConfig.BITS_PER_SAMPLE_24);
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(2);
}
@Test
public void getCurrentA2dpSettingIndex_unknownOption_shouldReturnDefault() {
when(mBluetoothCodecConfig.getCodecType()).thenReturn(1381391835);
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(0);
}
}

View File

@@ -1,112 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.development;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothCodecConfig;
import android.content.Context;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class BluetoothAudioChannelModePreferenceControllerTest {
@Mock
private BluetoothCodecConfig mBluetoothCodecConfig;
@Mock
private ListPreference mPreference;
@Mock
private PreferenceScreen mScreen;
@Mock
private BluetoothA2dpConfigStore mBluetoothA2dpConfigStore;
/**
* 0: Use System Selection (Default)
* 1: Mono
* 2: Stereo
*/
private String[] mListValues;
private Context mContext;
private BluetoothAudioChannelModePreferenceController mController;
private LifecycleOwner mLifecycleOwner;
private Lifecycle mLifecycle;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
mController = spy(new BluetoothAudioChannelModePreferenceController(mContext,
mLifecycle, mBluetoothA2dpConfigStore));
mListValues = mController.getListValues();
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
mController.displayPreference(mScreen);
}
@Test
public void writeConfigurationValues_option2_shouldWriteOption2ToSharedStore() {
when(mPreference.findIndexOfValue(mListValues[2])).thenReturn(2);
mController.writeConfigurationValues(mListValues[2]);
verify(mBluetoothA2dpConfigStore).setChannelMode(BluetoothCodecConfig.CHANNEL_MODE_STEREO);
}
@Test
public void writeConfigurationValues_default_shouldSetDefault() {
when(mPreference.findIndexOfValue(mListValues[0])).thenReturn(0);
mController.writeConfigurationValues(mListValues[0]);
verify(mBluetoothA2dpConfigStore).setChannelMode(BluetoothCodecConfig.CHANNEL_MODE_NONE);
}
@Test
public void getCurrentA2dpSettingIndex_option2_shouldReturnSecondIndex() {
when(mBluetoothCodecConfig.getChannelMode())
.thenReturn(BluetoothCodecConfig.CHANNEL_MODE_STEREO);
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(2);
}
@Test
public void getCurrentA2dpSettingIndex_unknownOption_shouldReturnDefault() {
when(mBluetoothCodecConfig.getCodecType()).thenReturn(1381391835);
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(0);
}
}

View File

@@ -1,120 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.development;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothCodecConfig;
import android.content.Context;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class BluetoothAudioCodecPreferenceControllerTest {
@Mock
private BluetoothCodecConfig mBluetoothCodecConfig;
@Mock
private ListPreference mPreference;
@Mock
private PreferenceScreen mScreen;
@Mock
private BluetoothA2dpConfigStore mBluetoothA2dpConfigStore;
/**
* 0: Use System Selection (Default)
* 1: SBC
* 2: AAC
* 3: Qualcomm aptX audio
* 4: Qualcomm aptX HD audio
* 5: LDAC
* 6: Enable Optional Codecs
* 7: Disable Optional Codecs
*/
private String[] mListValues;
private Context mContext;
private BluetoothAudioCodecPreferenceController mController;
private LifecycleOwner mLifecycleOwner;
private Lifecycle mLifecycle;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
mController = spy(new BluetoothAudioCodecPreferenceController(mContext, mLifecycle,
mBluetoothA2dpConfigStore));
mListValues = mController.getListValues();
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
mController.displayPreference(mScreen);
}
@Test
public void writeConfigurationValues_option2_shouldWriteOption2ToSharedStore() {
when(mPreference.findIndexOfValue(mListValues[2])).thenReturn(2);
mController.writeConfigurationValues(mListValues[2]);
verify(mBluetoothA2dpConfigStore).setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC);
verify(mBluetoothA2dpConfigStore).setCodecPriority(
BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST);
}
@Test
public void writeConfigurationValues_default_shouldSetDefaultPriority() {
when(mPreference.findIndexOfValue(mListValues[0])).thenReturn(0);
mController.writeConfigurationValues(mListValues[0]);
verify(mBluetoothA2dpConfigStore).setCodecPriority(
BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT);
}
@Test
public void getCurrentA2dpSettingIndex_option2_shouldReturnSecondIndex() {
when(mBluetoothCodecConfig.getCodecType()).thenReturn(
BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC);
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(2);
}
@Test
public void getCurrentA2dpSettingIndex_unknownOption_shouldReturnDefault() {
when(mBluetoothCodecConfig.getCodecType()).thenReturn(1381391835);
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(0);
}
}

View File

@@ -1,111 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.development;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothCodecConfig;
import android.content.Context;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class BluetoothAudioQualityPreferenceControllerTest {
@Mock
private BluetoothCodecConfig mBluetoothCodecConfig;
@Mock
private ListPreference mPreference;
@Mock
private PreferenceScreen mScreen;
@Mock
private BluetoothA2dpConfigStore mBluetoothA2dpConfigStore;
/**
* 0: Optimized for Audio Quality (990kbps/909kbps)
* 1: Balanced Audio And Connection Quality (660kbps/606kbps)
* 2: Stereo
*/
private String[] mListValues;
private Context mContext;
private BluetoothAudioQualityPreferenceController mController;
private LifecycleOwner mLifecycleOwner;
private Lifecycle mLifecycle;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
mController = spy(new BluetoothAudioQualityPreferenceController(mContext,
mLifecycle, mBluetoothA2dpConfigStore));
mListValues = mController.getListValues();
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
mController.displayPreference(mScreen);
}
@Test
public void writeConfigurationValues_option3_shouldWrite1003ToSharedStore() {
when(mPreference.findIndexOfValue(mListValues[3])).thenReturn(3);
mController.writeConfigurationValues(mListValues[3]);
verify(mBluetoothA2dpConfigStore).setCodecSpecific1Value(1003);
}
@Test
public void writeConfigurationValues_default_shouldSetDefault() {
when(mPreference.findIndexOfValue(mListValues[0])).thenReturn(0);
mController.writeConfigurationValues(mListValues[0]);
verify(mBluetoothA2dpConfigStore).setCodecSpecific1Value(1000);
}
@Test
public void getCurrentA2dpSettingIndex_option2_shouldReturnSecondIndex() {
when(mBluetoothCodecConfig.getCodecSpecific1()).thenReturn(Long.valueOf(2));
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(2);
}
@Test
public void getCurrentA2dpSettingIndex_unknownOption_shouldReturnDefault() {
when(mBluetoothCodecConfig.getCodecType()).thenReturn(1381391835);
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(3);
}
}

View File

@@ -1,106 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.development;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothCodecConfig;
import android.content.Context;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class BluetoothAudioSampleRatePreferenceControllerTest {
@Mock
private BluetoothCodecConfig mBluetoothCodecConfig;
@Mock
private ListPreference mPreference;
@Mock
private PreferenceScreen mScreen;
@Mock
private BluetoothA2dpConfigStore mBluetoothA2dpConfigStore;
/**
* 0: Use System Selection (Default)
* 1: 44.1 kHz
* 2: 48.0 kHz
* 3: 88.2 kHz
* 4: 96.0 kHz
*/
private String[] mListValues;
private LifecycleOwner mLifecycleOwner;
private Lifecycle mLifecycle;
private Context mContext;
private BluetoothAudioSampleRatePreferenceController mController;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
mController = spy(new BluetoothAudioSampleRatePreferenceController(mContext, mLifecycle,
mBluetoothA2dpConfigStore));
mListValues = mController.getListValues();
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
mController.displayPreference(mScreen);
}
@Test
public void writeConfigurationValues_option2_shouldWriteOption2ToSharedStore() {
when(mPreference.findIndexOfValue(mListValues[2])).thenReturn(2);
mController.writeConfigurationValues(mListValues[2]);
verify(mBluetoothA2dpConfigStore).setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_48000);
}
@Test
public void getCurrentA2dpSettingIndex_option2_shouldReturnSecondIndex() {
when(mBluetoothCodecConfig.getSampleRate()).thenReturn(
BluetoothCodecConfig.SAMPLE_RATE_48000);
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(2);
}
@Test
public void getCurrentA2dpSettingIndex_unknownOption_shouldReturnDefault() {
when(mBluetoothCodecConfig.getSampleRate()).thenReturn(1381391835);
final int index = mController.getCurrentA2dpSettingIndex(mBluetoothCodecConfig);
assertThat(index).isEqualTo(0);
}
}