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