1 /* 2 * Copyright (C) 2022 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 17 package com.android.car.audio.hal; 18 19 import static com.google.common.truth.Truth.assertWithMessage; 20 21 import android.hardware.automotive.audiocontrol.AudioGainConfigInfo; 22 import android.hardware.automotive.audiocontrol.Reasons; 23 24 import androidx.test.ext.junit.runners.AndroidJUnit4; 25 26 import org.junit.Test; 27 import org.junit.runner.RunWith; 28 29 import java.util.List; 30 31 @RunWith(AndroidJUnit4.class) 32 public final class HalAudioGainCallbackTest { 33 private static final int PRIMARY_ZONE_ID = 0; 34 private static final String PRIMARY_ZONE_ID_LITERAL = "0"; 35 private static final String PRIMARY_MUSIC_ADDRESS = "primary music"; 36 37 @Test isReasonValid_withValidReasons_succeeds()38 public void isReasonValid_withValidReasons_succeeds() { 39 List<Integer> validReasons = 40 List.of( 41 Reasons.FORCED_MASTER_MUTE, 42 Reasons.REMOTE_MUTE, 43 Reasons.TCU_MUTE, 44 Reasons.ADAS_DUCKING, 45 Reasons.NAV_DUCKING, 46 Reasons.PROJECTION_DUCKING, 47 Reasons.THERMAL_LIMITATION, 48 Reasons.SUSPEND_EXIT_VOL_LIMITATION, 49 Reasons.EXTERNAL_AMP_VOL_FEEDBACK, 50 Reasons.OTHER); 51 52 for (int index = 0; index < validReasons.size(); index++) { 53 int validReason = validReasons.get(index); 54 assertWithMessage("Reason " + HalAudioGainCallback.reasonToString(validReason)) 55 .that(HalAudioGainCallback.isReasonValid(validReason)) 56 .isTrue(); 57 } 58 } 59 60 @Test isReasonValid_withInvalidReasons_fails()61 public void isReasonValid_withInvalidReasons_fails() { 62 List<Integer> invalidReasons = List.of(-1, -10, 666); 63 64 for (int index = 0; index < invalidReasons.size(); index++) { 65 int invalidReason = invalidReasons.get(index); 66 assertWithMessage("Reason " + HalAudioGainCallback.reasonToString(invalidReason)) 67 .that(HalAudioGainCallback.isReasonValid(invalidReason)) 68 .isFalse(); 69 } 70 } 71 72 @Test reasonToString_validReasons_succeeds()73 public void reasonToString_validReasons_succeeds() { 74 List<Integer> reasons = 75 List.of( 76 Reasons.FORCED_MASTER_MUTE, 77 Reasons.REMOTE_MUTE, 78 Reasons.TCU_MUTE, 79 Reasons.ADAS_DUCKING, 80 Reasons.NAV_DUCKING, 81 Reasons.PROJECTION_DUCKING, 82 Reasons.THERMAL_LIMITATION, 83 Reasons.SUSPEND_EXIT_VOL_LIMITATION, 84 Reasons.EXTERNAL_AMP_VOL_FEEDBACK, 85 Reasons.OTHER); 86 for (int index = 0; index < reasons.size(); index++) { 87 int reason = reasons.get(index); 88 String literalReason = HalAudioGainCallback.reasonToString(reasons.get(index)); 89 assertWithMessage("Valid Reason " + reason).that(literalReason).isNotNull(); 90 assertWithMessage("Valid Reason " + reason) 91 .that(literalReason) 92 .doesNotContain("Unsupported reason"); 93 } 94 } 95 96 @Test reasonToString_invalidReasons_succeeds()97 public void reasonToString_invalidReasons_succeeds() { 98 List<Integer> reasons = List.of(-1, -10, 666); 99 for (int index = 0; index < reasons.size(); index++) { 100 int reason = reasons.get(index); 101 String literalReason = HalAudioGainCallback.reasonToString(reasons.get(index)); 102 assertWithMessage("Invalid Reason " + reason).that(literalReason).isNotNull(); 103 assertWithMessage("Invalid Reason " + reason) 104 .that(literalReason) 105 .contains("Unsupported reason"); 106 } 107 } 108 109 @Test gainToString_succeeds()110 public void gainToString_succeeds() { 111 AudioGainConfigInfo audioGainConfigInfo = new AudioGainConfigInfo(); 112 audioGainConfigInfo.zoneId = PRIMARY_ZONE_ID; 113 audioGainConfigInfo.devicePortAddress = PRIMARY_MUSIC_ADDRESS; 114 audioGainConfigInfo.volumeIndex = 666; 115 116 String literalGain = HalAudioGainCallback.gainToString(audioGainConfigInfo); 117 assertWithMessage("Audio Gain Config Info Literal").that(literalGain).isNotNull(); 118 assertWithMessage("Audio Gain Config Info Literal").that(literalGain).contains("zone:"); 119 assertWithMessage("Audio Gain Config Info Literal") 120 .that(literalGain) 121 .contains(PRIMARY_ZONE_ID_LITERAL); 122 assertWithMessage("Audio Gain Config Info Literal").that(literalGain).contains("address:"); 123 assertWithMessage("Audio Gain Config Info Literal") 124 .that(literalGain) 125 .contains(PRIMARY_MUSIC_ADDRESS); 126 assertWithMessage("Audio Gain Config Info Literal") 127 .that(literalGain) 128 .contains("Volume Index:"); 129 assertWithMessage("Audio Gain Config Info Literal").that(literalGain).contains("666"); 130 } 131 } 132