• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 android.car.oem;
18 
19 import static org.junit.Assert.assertThrows;
20 
21 import android.car.feature.Flags;
22 import android.car.media.CarVolumeGroupInfo;
23 import android.car.test.AbstractExpectableTestCase;
24 import android.os.Parcel;
25 import android.platform.test.annotations.EnableFlags;
26 import android.platform.test.flag.junit.SetFlagsRule;
27 
28 import org.junit.ClassRule;
29 import org.junit.Rule;
30 import org.junit.Test;
31 
32 @EnableFlags({
33         Flags.FLAG_CAR_AUDIO_MIN_MAX_ACTIVATION_VOLUME,
34         Flags.FLAG_CAR_AUDIO_DYNAMIC_DEVICES,
35         Flags.FLAG_CAR_AUDIO_MUTE_AMBIGUITY
36 })
37 public final class OemCarVolumeChangeInfoUnitTest extends AbstractExpectableTestCase {
38     @ClassRule public static final SetFlagsRule.ClassRule mClassRule = new SetFlagsRule.ClassRule();
39     @Rule public final SetFlagsRule mSetFlagsRule = mClassRule.createSetFlagsRule();
40 
41     private static final int TEST_ZONE_ID = 8;
42     private static final int TEST_PRIMARY_GROUP_ID = 7;
43     private static final String TEST_GROUP_NAME = "3";
44 
45     private final CarVolumeGroupInfo mTestVolumeInfo;
46 
OemCarVolumeChangeInfoUnitTest()47     public OemCarVolumeChangeInfoUnitTest() {
48         mTestVolumeInfo = new CarVolumeGroupInfo.Builder(TEST_GROUP_NAME, TEST_ZONE_ID,
49                 TEST_PRIMARY_GROUP_ID)
50                 .setMaxVolumeGainIndex(9_000).setMinVolumeGainIndex(0)
51                 .setMaxActivationVolumeGainIndex(8_000).setMinActivationVolumeGainIndex(100)
52                 .build();
53     }
54 
55     @Test
build()56     public void build() {
57         OemCarVolumeChangeInfo info =
58                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ true).build();
59 
60         expectWithMessage("Car volume change build info changed")
61                 .that(info.isVolumeChanged()).isTrue();
62     }
63 
64     @Test
setChangedVolumeGroup()65     public void setChangedVolumeGroup() {
66         OemCarVolumeChangeInfo info =
67                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ false)
68                         .setChangedVolumeGroup(mTestVolumeInfo).build();
69 
70         expectWithMessage("Car volume change build changed volume")
71                 .that(info.getChangedVolumeGroup()).isEqualTo(mTestVolumeInfo);
72     }
73 
74 
75     @Test
builder_withReuse_fails()76     public void builder_withReuse_fails() {
77         OemCarVolumeChangeInfo.Builder builder =
78                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ false);
79         builder.build();
80 
81         IllegalStateException thrown = assertThrows(IllegalStateException.class, () ->
82                 builder.build()
83         );
84 
85         expectWithMessage("Reuse builder exception")
86                 .that(thrown).hasMessageThat().contains("should not be reused");
87     }
88 
89     @Test
writeToParcel()90     public void writeToParcel() {
91         Parcel parcel = Parcel.obtain();
92         OemCarVolumeChangeInfo info =
93                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ true).build();
94 
95         info.writeToParcel(parcel, /* flags= */ 0);
96         parcel.setDataPosition(/* pos= */ 0);
97 
98         expectWithMessage("Car volume change from parcel")
99                 .that(OemCarVolumeChangeInfo.CREATOR.createFromParcel(parcel)).isEqualTo(info);
100     }
101 
102     @Test
newArray()103     public void newArray() {
104         OemCarVolumeChangeInfo[] infos = OemCarVolumeChangeInfo.CREATOR.newArray(/* size= */ 3);
105 
106         expectWithMessage("Car volume changes").that(infos).hasLength(3);
107     }
108 
109     @Test
equals_forSameContent()110     public void equals_forSameContent() {
111         OemCarVolumeChangeInfo info =
112                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ false)
113                         .setChangedVolumeGroup(mTestVolumeInfo).build();
114         OemCarVolumeChangeInfo info2 =
115                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ false)
116                         .setChangedVolumeGroup(mTestVolumeInfo).build();
117 
118         expectWithMessage("Car volume change with same content").that(info2).isEqualTo(info);
119     }
120 
121     @Test
equals_forDifferentContent()122     public void equals_forDifferentContent() {
123         OemCarVolumeChangeInfo info =
124                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ true)
125                         .setChangedVolumeGroup(mTestVolumeInfo).build();
126         OemCarVolumeChangeInfo info2 =
127                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ false)
128                         .setChangedVolumeGroup(mTestVolumeInfo).build();
129 
130         expectWithMessage("Car volume change with different content").that(info2)
131                 .isNotEqualTo(info);
132     }
133 
134     @Test
equals_forNull()135     public void equals_forNull() {
136         OemCarVolumeChangeInfo info =
137                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ false)
138                         .setChangedVolumeGroup(mTestVolumeInfo).build();
139 
140         expectWithMessage("Car volume change equal for null").that(info.equals(null)).isFalse();
141     }
142 
143     @Test
hashCode_forSameContent()144     public void hashCode_forSameContent() {
145         OemCarVolumeChangeInfo info =
146                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ false)
147                         .setChangedVolumeGroup(mTestVolumeInfo).build();
148         OemCarVolumeChangeInfo info2 =
149                 new OemCarVolumeChangeInfo.Builder(/* volumeChanged= */ false)
150                         .setChangedVolumeGroup(mTestVolumeInfo).build();
151 
152         expectWithMessage("Car volume change hash with same content")
153                 .that(info2.hashCode()).isEqualTo(info.hashCode());
154     }
155 
156     @Test
emptyChange_isEmpty()157     public void emptyChange_isEmpty() {
158         expectWithMessage("Empty volume change")
159                 .that(OemCarVolumeChangeInfo.EMPTY_OEM_VOLUME_CHANGE.isVolumeChanged()).isFalse();
160     }
161 
162     @Test
describeContents()163     public void describeContents() {
164         expectWithMessage("Volume change empty description")
165                 .that(OemCarVolumeChangeInfo.EMPTY_OEM_VOLUME_CHANGE.describeContents())
166                 .isEqualTo(0);
167     }
168 }
169