1 /* 2 * Copyright (C) 2018 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 package com.android.server.hdmi; 17 18 import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM; 19 import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1; 20 import static com.android.server.hdmi.Constants.ADDR_TV; 21 import static com.android.server.hdmi.HdmiUtils.buildMessage; 22 23 import static com.google.common.truth.Truth.assertThat; 24 25 import android.hardware.hdmi.HdmiDeviceInfo; 26 import android.platform.test.annotations.Presubmit; 27 28 import androidx.test.filters.SmallTest; 29 30 import org.junit.Test; 31 import org.junit.runner.RunWith; 32 import org.junit.runners.JUnit4; 33 34 @SmallTest 35 @Presubmit 36 @RunWith(JUnit4.class) 37 /** Tests for {@link HdmiCecMessageBuilder}.. */ 38 public class HdmiCecMessageBuilderTest { 39 40 @Test buildReportPhysicalAddressCommand()41 public void buildReportPhysicalAddressCommand() { 42 HdmiCecMessage message = 43 HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( 44 ADDR_PLAYBACK_1, 0x1234, HdmiDeviceInfo.DEVICE_PLAYBACK); 45 assertThat(message).isEqualTo(buildMessage("4f:84:12:34:04")); 46 } 47 48 @Test buildRequestShortAudioDescriptor()49 public void buildRequestShortAudioDescriptor() { 50 HdmiCecMessage message = 51 HdmiCecMessageBuilder.buildRequestShortAudioDescriptor( 52 ADDR_TV, 53 ADDR_AUDIO_SYSTEM, 54 new int[] {Constants.AUDIO_CODEC_AAC, Constants.AUDIO_CODEC_LPCM}); 55 assertThat(message).isEqualTo(buildMessage("05:A4:06:01")); 56 } 57 58 @Test buildRoutingInformation()59 public void buildRoutingInformation() { 60 HdmiCecMessage message = 61 HdmiCecMessageBuilder.buildRoutingInformation( 62 ADDR_AUDIO_SYSTEM, 0x2100); 63 assertThat(message).isEqualTo(buildMessage("5F:81:21:00")); 64 } 65 66 @Test buildSetOsdName_short()67 public void buildSetOsdName_short() { 68 String deviceName = "abc"; 69 HdmiCecMessage message = HdmiCecMessageBuilder.buildSetOsdNameCommand(ADDR_PLAYBACK_1, 70 ADDR_TV, deviceName); 71 assertThat(message).isEqualTo(buildMessage("40:47:61:62:63")); 72 } 73 74 @Test buildSetOsdName_maximumLength()75 public void buildSetOsdName_maximumLength() { 76 String deviceName = "abcdefghijklmn"; 77 HdmiCecMessage message = HdmiCecMessageBuilder.buildSetOsdNameCommand(ADDR_PLAYBACK_1, 78 ADDR_TV, deviceName); 79 assertThat(message).isEqualTo( 80 buildMessage("40:47:61:62:63:64:65:66:67:68:69:6A:6B:6C:6D:6E")); 81 } 82 83 @Test buildSetOsdName_tooLong()84 public void buildSetOsdName_tooLong() { 85 String deviceName = "abcdefghijklmnop"; 86 HdmiCecMessage message = HdmiCecMessageBuilder.buildSetOsdNameCommand(ADDR_PLAYBACK_1, 87 ADDR_TV, deviceName); 88 assertThat(message).isEqualTo( 89 buildMessage("40:47:61:62:63:64:65:66:67:68:69:6A:6B:6C:6D:6E")); 90 } 91 92 @Test buildGiveFeatures()93 public void buildGiveFeatures() { 94 HdmiCecMessage message = HdmiCecMessageBuilder.buildGiveFeatures(ADDR_PLAYBACK_1, ADDR_TV); 95 96 assertThat(message).isEqualTo(buildMessage("40:A5")); 97 } 98 } 99