diff options
Diffstat (limited to 'Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java')
-rw-r--r-- | Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java | 97 |
1 files changed, 96 insertions, 1 deletions
diff --git a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java index 569219e93..a1ce37670 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/device/displaysound/AdvancedVolumeFragmentTest.java @@ -61,7 +61,8 @@ import java.util.stream.IntStream; @RunWith(RobolectricTestRunner.class) public class AdvancedVolumeFragmentTest { - @Spy private AudioManager mAudioManager; + @Spy + private AudioManager mAudioManager; @Before public void setUp() { @@ -161,6 +162,100 @@ public class AdvancedVolumeFragmentTest { } @Test + public void testOnPreferenceTreeClick_withDTSFormatsDisabled_disablesFormatInAudioManager() { + Map<Integer, Boolean> formats = ImmutableMap.of( + AudioFormat.ENCODING_DTS_HD, true, + AudioFormat.ENCODING_DTS_HD_MA, true, + AudioFormat.ENCODING_DTS_UHD_P1, true, + AudioFormat.ENCODING_DTS_UHD_P2, true); + List<Integer> reportedFormats = Arrays.asList( + AudioFormat.ENCODING_DTS_HD, + AudioFormat.ENCODING_DTS_HD_MA, + AudioFormat.ENCODING_DTS_UHD_P1, + AudioFormat.ENCODING_DTS_UHD_P2); + AdvancedVolumeFragment fragment = + createAdvancedVolumeFragmentWithAudioManagerReturning(formats, reportedFormats); + + Preference preference = fragment.findPreference(KEY_SURROUND_SOUND_MANUAL); + fragment.onPreferenceTreeClick(preference); + + SwitchPreference pref = (SwitchPreference) fragment.findPreference( + KEY_SURROUND_SOUND_FORMAT_PREFIX + AudioFormat.ENCODING_DTS_HD); + pref.setChecked(false); + fragment.onPreferenceTreeClick(pref); + + pref = (SwitchPreference) fragment.findPreference( + KEY_SURROUND_SOUND_FORMAT_PREFIX + AudioFormat.ENCODING_DTS_UHD_P1); + pref.setChecked(false); + fragment.onPreferenceTreeClick(pref); + + ArgumentCaptor<Integer> audioFormat = ArgumentCaptor.forClass(Integer.class); + ArgumentCaptor<Boolean> formatEnabled = ArgumentCaptor.forClass(Boolean.class); + verify(mAudioManager, times(8)).setSurroundFormatEnabled( + audioFormat.capture(), formatEnabled.capture()); + List<Integer> expectedFormats = Arrays.asList( + AudioFormat.ENCODING_DTS_HD, + AudioFormat.ENCODING_DTS_HD_MA, + AudioFormat.ENCODING_DTS_UHD_P1, + AudioFormat.ENCODING_DTS_UHD_P2, + AudioFormat.ENCODING_DTS_HD, + AudioFormat.ENCODING_DTS_HD_MA, + AudioFormat.ENCODING_DTS_UHD_P1, + AudioFormat.ENCODING_DTS_UHD_P2); + List<Boolean> expectedValues = Arrays.asList( + true, true, true, true, false, false, false, false); + assertThat(audioFormat.getAllValues()).containsExactlyElementsIn(expectedFormats); + assertThat(formatEnabled.getAllValues()).containsExactlyElementsIn(expectedValues); + } + + @Test + public void testOnPreferenceTreeClick_withDTSFormatsEnabled_enablesFormatInAudioManager() { + Map<Integer, Boolean> formats = ImmutableMap.of( + AudioFormat.ENCODING_DTS_HD, false, + AudioFormat.ENCODING_DTS_HD_MA, false, + AudioFormat.ENCODING_DTS_UHD_P1, false, + AudioFormat.ENCODING_DTS_UHD_P2, false); + List<Integer> reportedFormats = Arrays.asList( + AudioFormat.ENCODING_DTS_HD, + AudioFormat.ENCODING_DTS_HD_MA, + AudioFormat.ENCODING_DTS_UHD_P1, + AudioFormat.ENCODING_DTS_UHD_P2); + AdvancedVolumeFragment fragment = + createAdvancedVolumeFragmentWithAudioManagerReturning(formats, reportedFormats); + + Preference preference = fragment.findPreference(KEY_SURROUND_SOUND_MANUAL); + fragment.onPreferenceTreeClick(preference); + + SwitchPreference pref = (SwitchPreference) fragment.findPreference( + KEY_SURROUND_SOUND_FORMAT_PREFIX + AudioFormat.ENCODING_DTS_HD); + pref.setChecked(true); + fragment.onPreferenceTreeClick(pref); + + pref = (SwitchPreference) fragment.findPreference( + KEY_SURROUND_SOUND_FORMAT_PREFIX + AudioFormat.ENCODING_DTS_UHD_P1); + pref.setChecked(true); + fragment.onPreferenceTreeClick(pref); + + ArgumentCaptor<Integer> audioFormat = ArgumentCaptor.forClass(Integer.class); + ArgumentCaptor<Boolean> formatEnabled = ArgumentCaptor.forClass(Boolean.class); + verify(mAudioManager, times(8)).setSurroundFormatEnabled( + audioFormat.capture(), formatEnabled.capture()); + List<Integer> expectedFormats = Arrays.asList( + AudioFormat.ENCODING_DTS_HD, + AudioFormat.ENCODING_DTS_HD_MA, + AudioFormat.ENCODING_DTS_UHD_P1, + AudioFormat.ENCODING_DTS_UHD_P2, + AudioFormat.ENCODING_DTS_HD, + AudioFormat.ENCODING_DTS_HD_MA, + AudioFormat.ENCODING_DTS_UHD_P1, + AudioFormat.ENCODING_DTS_UHD_P2); + List<Boolean> expectedValues = Arrays.asList( + true, true, true, true, true, true, true, true); + assertThat(audioFormat.getAllValues()).containsExactlyElementsIn(expectedFormats); + assertThat(formatEnabled.getAllValues()).containsExactlyElementsIn(expectedValues); + } + + @Test public void testGetPreferenceScreen_whenManual_returnsFormatsInCorrectPreferenceGroup() { Map<Integer, Boolean> formats = ImmutableMap.of( AudioFormat.ENCODING_DTS, true, |