Loading services/tests/servicestests/src/com/android/server/hdmi/FakeNativeWrapper.java +13 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ import android.hardware.hdmi.HdmiPortInfo; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.MessageQueue; import com.android.server.hdmi.HdmiCecController.NativeWrapper; import java.util.ArrayList; import java.util.List; /** Fake {@link NativeWrapper} useful for testing. */ final class FakeNativeWrapper implements NativeWrapper { Loading @@ -41,7 +43,7 @@ final class FakeNativeWrapper implements NativeWrapper { SendMessageResult.NACK, }; private HdmiCecMessage mResultMessage; private final List<HdmiCecMessage> mResultMessages = new ArrayList<>(); @Override public long nativeInit(HdmiCecController handler, MessageQueue messageQueue) { Loading @@ -54,7 +56,7 @@ final class FakeNativeWrapper implements NativeWrapper { if (body.length == 0) { return mPollAddressResponse[dstAddress]; } else { mResultMessage = HdmiCecMessageBuilder.of(srcAddress, dstAddress, body); mResultMessages.add(HdmiCecMessageBuilder.of(srcAddress, dstAddress, body)); } return SendMessageResult.SUCCESS; } Loading Loading @@ -103,8 +105,15 @@ final class FakeNativeWrapper implements NativeWrapper { return false; } public HdmiCecMessage getResultMessage() { return mResultMessage; public List<HdmiCecMessage> getResultMessages() { return new ArrayList<>(mResultMessages); } public HdmiCecMessage getOnlyResultMessage() throws Exception { if (mResultMessages.size() != 1) { throw new Exception("There is not exactly one message"); } return mResultMessages.get(0); } public void setPollAddressResponse(int logicalAddress, int response) { Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java +42 −85 Original line number Diff line number Diff line Loading @@ -52,11 +52,9 @@ public class HdmiCecLocalDeviceAudioSystemTest { private int mMusicVolume; private int mMusicMaxVolume; private boolean mMusicMute; private boolean isAwake; @Before public void SetUp() { isAwake = false; mHdmiControlService = new HdmiControlService(null) { @Override AudioManager getAudioManager() { Loading Loading @@ -108,29 +106,24 @@ public class HdmiCecLocalDeviceAudioSystemTest { @Override void wakeUp() { isAwake = true; } }; mMyLooper = mTestLooper.getLooper(); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(mHdmiControlService); mHdmiCecLocalDeviceAudioSystem.init(); mHdmiControlService.setIoLooper(mMyLooper); mNativeWrapper = new FakeNativeWrapper(); mHdmiCecController = HdmiCecController.createWithNativeWrapper( mHdmiControlService, mNativeWrapper); mHdmiControlService.setCecController(mHdmiCecController); mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem); mHdmiControlService.initPortInfo(); // No TV device interacts with AVR so system audio control won't be turned on here mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); mTestLooper.dispatchAll(); } @Test public void handleGiveAudioStatus_volume_10_mute_true() { mMusicVolume = 10; Loading @@ -141,26 +134,22 @@ public class HdmiCecLocalDeviceAudioSystemTest { ADDR_AUDIO_SYSTEM, ADDR_TV, scaledVolume, true); HdmiCecMessage messageGive = HdmiCecMessageBuilder.buildGiveAudioStatus( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveAudioStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleGiveSystemAudioModeStatus_originalOff() { HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, false); HdmiCecMessage messageGive = HdmiCecMessageBuilder .buildGiveSystemAudioModeStatus(ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleRequestArcInitiate() { // TODO(b/80296911): Add tests when finishing handler impl. Loading @@ -168,13 +157,11 @@ public class HdmiCecLocalDeviceAudioSystemTest { .buildInitiateArc(ADDR_AUDIO_SYSTEM, ADDR_TV); HdmiCecMessage message = HdmiCecMessageBuilder .buildRequestArcInitiation(ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mHdmiCecLocalDeviceAudioSystem.handleRequestArcInitiate(message)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleRequestArcTermination() { // TODO(b/80297105): Add tests when finishing handler impl. Loading @@ -182,13 +169,11 @@ public class HdmiCecLocalDeviceAudioSystemTest { .buildTerminateArc(ADDR_AUDIO_SYSTEM, ADDR_TV); HdmiCecMessage messageRequestOff = HdmiCecMessageBuilder .buildRequestArcTermination(ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mHdmiCecLocalDeviceAudioSystem.handleRequestArcTermination(messageRequestOff)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleSetSystemAudioMode_setOn_orignalOff() { mMusicMute = true; Loading @@ -196,157 +181,129 @@ public class HdmiCecLocalDeviceAudioSystemTest { .buildSetSystemAudioMode(ADDR_TV, ADDR_AUDIO_SYSTEM, true); HdmiCecMessage messageGive = HdmiCecMessageBuilder .buildGiveSystemAudioModeStatus(ADDR_TV, ADDR_AUDIO_SYSTEM); // Check if originally off HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, false); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); // Check if correctly turned on expectedMessage = HdmiCecMessageBuilder .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, true); assertThat(mHdmiCecLocalDeviceAudioSystem.handleSetSystemAudioMode(messageSet)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); assertThat(mMusicMute).isEqualTo(false); } @Test public void handleSystemAudioModeRequest_turnOffByTv() { assertThat(mMusicMute).isEqualTo(false); // Check if feature correctly turned off HdmiCecMessage messageGive = HdmiCecMessageBuilder .buildGiveSystemAudioModeStatus(ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage messageRequestOff = HdmiCecMessageBuilder .buildSystemAudioModeRequest(ADDR_TV, ADDR_AUDIO_SYSTEM, 2, false); HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false); assertThat(mHdmiCecLocalDeviceAudioSystem.handleSystemAudioModeRequest(messageRequestOff)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); expectedMessage = HdmiCecMessageBuilder .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, false); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); assertThat(mMusicMute).isEqualTo(true); } @Test public void onStandbyAudioSystem_currentSystemAudioControlOn() { // Set system audio control on first mHdmiCecLocalDeviceAudioSystem.setSystemAudioMode(true); // Check if standby correctly turns off the feature mHdmiCecLocalDeviceAudioSystem.onStandby(false, STANDBY_SCREEN_OFF); mTestLooper.dispatchAll(); HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); assertThat(mMusicMute).isEqualTo(true); } @Test public void systemAudioControlOnPowerOn_alwaysOn() { mHdmiCecLocalDeviceAudioSystem.removeAction( SystemAudioInitiationActionFromAvr.class); mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( Constants.ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true); assertThat(mHdmiCecLocalDeviceAudioSystem .getActions(SystemAudioInitiationActionFromAvr.class)).isNotEmpty(); } @Test public void systemAudioControlOnPowerOn_neverOn() { mHdmiCecLocalDeviceAudioSystem.removeAction( SystemAudioInitiationActionFromAvr.class); mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( Constants.NEVER_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, false); assertThat(mHdmiCecLocalDeviceAudioSystem .getActions(SystemAudioInitiationActionFromAvr.class)).isEmpty(); } @Test public void systemAudioControlOnPowerOn_useLastState_off() { mHdmiCecLocalDeviceAudioSystem.removeAction( SystemAudioInitiationActionFromAvr.class); mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( Constants.USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, false); assertThat(mHdmiCecLocalDeviceAudioSystem .getActions(SystemAudioInitiationActionFromAvr.class)).isEmpty(); } @Test public void systemAudioControlOnPowerOn_useLastState_on() { mHdmiCecLocalDeviceAudioSystem.removeAction( SystemAudioInitiationActionFromAvr.class); mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( Constants.USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true); assertThat(mHdmiCecLocalDeviceAudioSystem .getActions(SystemAudioInitiationActionFromAvr.class)).isNotEmpty(); } @Test public void handleActiveSource_updateActiveSource() { HdmiCecMessage message = HdmiCecMessageBuilder .buildActiveSource(ADDR_TV, 0x0000); ActiveSource expectedActiveSource = new ActiveSource(ADDR_TV, 0x0000); assertThat(mHdmiCecLocalDeviceAudioSystem.handleActiveSource(message)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mHdmiCecLocalDeviceAudioSystem.getActiveSource().equals(expectedActiveSource)) .isEqualTo(true); } @Test public void terminateSystemAudioMode_systemAudioModeOff() { mHdmiCecLocalDeviceAudioSystem.setSystemAudioMode(false); assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(false); mMusicMute = false; HdmiCecMessage message = HdmiCecMessageBuilder .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false); mHdmiCecLocalDeviceAudioSystem.terminateSystemAudioMode(); assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(false); assertThat(mMusicMute).isEqualTo(false); assertThat(mNativeWrapper.getResultMessage()).isNotEqualTo(message); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(message); } @Test public void terminateSystemAudioMode_systemAudioModeOn() { mHdmiCecLocalDeviceAudioSystem.setSystemAudioMode(true); assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(true); mMusicMute = false; HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false); mHdmiCecLocalDeviceAudioSystem.terminateSystemAudioMode(); assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(false); assertThat(mMusicMute).isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } } Loading
services/tests/servicestests/src/com/android/server/hdmi/FakeNativeWrapper.java +13 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ import android.hardware.hdmi.HdmiPortInfo; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.MessageQueue; import com.android.server.hdmi.HdmiCecController.NativeWrapper; import java.util.ArrayList; import java.util.List; /** Fake {@link NativeWrapper} useful for testing. */ final class FakeNativeWrapper implements NativeWrapper { Loading @@ -41,7 +43,7 @@ final class FakeNativeWrapper implements NativeWrapper { SendMessageResult.NACK, }; private HdmiCecMessage mResultMessage; private final List<HdmiCecMessage> mResultMessages = new ArrayList<>(); @Override public long nativeInit(HdmiCecController handler, MessageQueue messageQueue) { Loading @@ -54,7 +56,7 @@ final class FakeNativeWrapper implements NativeWrapper { if (body.length == 0) { return mPollAddressResponse[dstAddress]; } else { mResultMessage = HdmiCecMessageBuilder.of(srcAddress, dstAddress, body); mResultMessages.add(HdmiCecMessageBuilder.of(srcAddress, dstAddress, body)); } return SendMessageResult.SUCCESS; } Loading Loading @@ -103,8 +105,15 @@ final class FakeNativeWrapper implements NativeWrapper { return false; } public HdmiCecMessage getResultMessage() { return mResultMessage; public List<HdmiCecMessage> getResultMessages() { return new ArrayList<>(mResultMessages); } public HdmiCecMessage getOnlyResultMessage() throws Exception { if (mResultMessages.size() != 1) { throw new Exception("There is not exactly one message"); } return mResultMessages.get(0); } public void setPollAddressResponse(int logicalAddress, int response) { Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java +42 −85 Original line number Diff line number Diff line Loading @@ -52,11 +52,9 @@ public class HdmiCecLocalDeviceAudioSystemTest { private int mMusicVolume; private int mMusicMaxVolume; private boolean mMusicMute; private boolean isAwake; @Before public void SetUp() { isAwake = false; mHdmiControlService = new HdmiControlService(null) { @Override AudioManager getAudioManager() { Loading Loading @@ -108,29 +106,24 @@ public class HdmiCecLocalDeviceAudioSystemTest { @Override void wakeUp() { isAwake = true; } }; mMyLooper = mTestLooper.getLooper(); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(mHdmiControlService); mHdmiCecLocalDeviceAudioSystem.init(); mHdmiControlService.setIoLooper(mMyLooper); mNativeWrapper = new FakeNativeWrapper(); mHdmiCecController = HdmiCecController.createWithNativeWrapper( mHdmiControlService, mNativeWrapper); mHdmiControlService.setCecController(mHdmiCecController); mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem); mHdmiControlService.initPortInfo(); // No TV device interacts with AVR so system audio control won't be turned on here mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); mTestLooper.dispatchAll(); } @Test public void handleGiveAudioStatus_volume_10_mute_true() { mMusicVolume = 10; Loading @@ -141,26 +134,22 @@ public class HdmiCecLocalDeviceAudioSystemTest { ADDR_AUDIO_SYSTEM, ADDR_TV, scaledVolume, true); HdmiCecMessage messageGive = HdmiCecMessageBuilder.buildGiveAudioStatus( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveAudioStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleGiveSystemAudioModeStatus_originalOff() { HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, false); HdmiCecMessage messageGive = HdmiCecMessageBuilder .buildGiveSystemAudioModeStatus(ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleRequestArcInitiate() { // TODO(b/80296911): Add tests when finishing handler impl. Loading @@ -168,13 +157,11 @@ public class HdmiCecLocalDeviceAudioSystemTest { .buildInitiateArc(ADDR_AUDIO_SYSTEM, ADDR_TV); HdmiCecMessage message = HdmiCecMessageBuilder .buildRequestArcInitiation(ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mHdmiCecLocalDeviceAudioSystem.handleRequestArcInitiate(message)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleRequestArcTermination() { // TODO(b/80297105): Add tests when finishing handler impl. Loading @@ -182,13 +169,11 @@ public class HdmiCecLocalDeviceAudioSystemTest { .buildTerminateArc(ADDR_AUDIO_SYSTEM, ADDR_TV); HdmiCecMessage messageRequestOff = HdmiCecMessageBuilder .buildRequestArcTermination(ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mHdmiCecLocalDeviceAudioSystem.handleRequestArcTermination(messageRequestOff)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } @Test public void handleSetSystemAudioMode_setOn_orignalOff() { mMusicMute = true; Loading @@ -196,157 +181,129 @@ public class HdmiCecLocalDeviceAudioSystemTest { .buildSetSystemAudioMode(ADDR_TV, ADDR_AUDIO_SYSTEM, true); HdmiCecMessage messageGive = HdmiCecMessageBuilder .buildGiveSystemAudioModeStatus(ADDR_TV, ADDR_AUDIO_SYSTEM); // Check if originally off HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, false); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); // Check if correctly turned on expectedMessage = HdmiCecMessageBuilder .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, true); assertThat(mHdmiCecLocalDeviceAudioSystem.handleSetSystemAudioMode(messageSet)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); assertThat(mMusicMute).isEqualTo(false); } @Test public void handleSystemAudioModeRequest_turnOffByTv() { assertThat(mMusicMute).isEqualTo(false); // Check if feature correctly turned off HdmiCecMessage messageGive = HdmiCecMessageBuilder .buildGiveSystemAudioModeStatus(ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage messageRequestOff = HdmiCecMessageBuilder .buildSystemAudioModeRequest(ADDR_TV, ADDR_AUDIO_SYSTEM, 2, false); HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false); assertThat(mHdmiCecLocalDeviceAudioSystem.handleSystemAudioModeRequest(messageRequestOff)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); expectedMessage = HdmiCecMessageBuilder .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, false); assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); assertThat(mMusicMute).isEqualTo(true); } @Test public void onStandbyAudioSystem_currentSystemAudioControlOn() { // Set system audio control on first mHdmiCecLocalDeviceAudioSystem.setSystemAudioMode(true); // Check if standby correctly turns off the feature mHdmiCecLocalDeviceAudioSystem.onStandby(false, STANDBY_SCREEN_OFF); mTestLooper.dispatchAll(); HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); assertThat(mMusicMute).isEqualTo(true); } @Test public void systemAudioControlOnPowerOn_alwaysOn() { mHdmiCecLocalDeviceAudioSystem.removeAction( SystemAudioInitiationActionFromAvr.class); mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( Constants.ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true); assertThat(mHdmiCecLocalDeviceAudioSystem .getActions(SystemAudioInitiationActionFromAvr.class)).isNotEmpty(); } @Test public void systemAudioControlOnPowerOn_neverOn() { mHdmiCecLocalDeviceAudioSystem.removeAction( SystemAudioInitiationActionFromAvr.class); mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( Constants.NEVER_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, false); assertThat(mHdmiCecLocalDeviceAudioSystem .getActions(SystemAudioInitiationActionFromAvr.class)).isEmpty(); } @Test public void systemAudioControlOnPowerOn_useLastState_off() { mHdmiCecLocalDeviceAudioSystem.removeAction( SystemAudioInitiationActionFromAvr.class); mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( Constants.USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, false); assertThat(mHdmiCecLocalDeviceAudioSystem .getActions(SystemAudioInitiationActionFromAvr.class)).isEmpty(); } @Test public void systemAudioControlOnPowerOn_useLastState_on() { mHdmiCecLocalDeviceAudioSystem.removeAction( SystemAudioInitiationActionFromAvr.class); mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn( Constants.USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true); assertThat(mHdmiCecLocalDeviceAudioSystem .getActions(SystemAudioInitiationActionFromAvr.class)).isNotEmpty(); } @Test public void handleActiveSource_updateActiveSource() { HdmiCecMessage message = HdmiCecMessageBuilder .buildActiveSource(ADDR_TV, 0x0000); ActiveSource expectedActiveSource = new ActiveSource(ADDR_TV, 0x0000); assertThat(mHdmiCecLocalDeviceAudioSystem.handleActiveSource(message)) .isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mHdmiCecLocalDeviceAudioSystem.getActiveSource().equals(expectedActiveSource)) .isEqualTo(true); } @Test public void terminateSystemAudioMode_systemAudioModeOff() { mHdmiCecLocalDeviceAudioSystem.setSystemAudioMode(false); assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(false); mMusicMute = false; HdmiCecMessage message = HdmiCecMessageBuilder .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false); mHdmiCecLocalDeviceAudioSystem.terminateSystemAudioMode(); assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(false); assertThat(mMusicMute).isEqualTo(false); assertThat(mNativeWrapper.getResultMessage()).isNotEqualTo(message); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(message); } @Test public void terminateSystemAudioMode_systemAudioModeOn() { mHdmiCecLocalDeviceAudioSystem.setSystemAudioMode(true); assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(true); mMusicMute = false; HdmiCecMessage expectedMessage = HdmiCecMessageBuilder .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false); mHdmiCecLocalDeviceAudioSystem.terminateSystemAudioMode(); assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(false); assertThat(mMusicMute).isEqualTo(true); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getResultMessages()).contains(expectedMessage); } }