1 /* 2 * Copyright (C) 2020 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; 18 19 import static com.google.common.truth.Truth.assertWithMessage; 20 21 import static org.mockito.ArgumentMatchers.any; 22 import static org.mockito.ArgumentMatchers.anyInt; 23 import static org.mockito.Mockito.when; 24 25 import android.car.media.CarAudioManager; 26 import android.car.settings.CarSettings; 27 import android.car.test.mocks.AbstractExtendedMockitoTestCase; 28 import android.car.test.mocks.MockSettings; 29 import android.content.ContentResolver; 30 import android.content.Context; 31 32 import androidx.test.ext.junit.runners.AndroidJUnit4; 33 34 import org.junit.Before; 35 import org.junit.Test; 36 import org.junit.runner.RunWith; 37 import org.mockito.Mock; 38 39 @RunWith(AndroidJUnit4.class) 40 public class CarAudioSettingsUnitTest extends AbstractExtendedMockitoTestCase { 41 42 private static final int TEST_USER_ID_1 = 11; 43 private static final int TEST_ZONE_ID = CarAudioManager.PRIMARY_AUDIO_ZONE; 44 private static final int TEST_CONFIG_ID = 1; 45 private static final int TEST_GROUP_ID = 0; 46 private static final int TEST_GAIN_INDEX = 10; 47 private static final String TEST_GAIN_INDEX_KEY = "android.car.VOLUME_GROUP/" + TEST_ZONE_ID 48 + "/" + TEST_CONFIG_ID + "/" + TEST_GROUP_ID; 49 private static final String TEST_MUTE_KEY = "android.car.VOLUME_GROUP_MUTE/" + TEST_ZONE_ID 50 + "/" + TEST_CONFIG_ID + "/" + TEST_GROUP_ID; 51 52 @Mock 53 private Context mMockContext; 54 55 @Mock 56 private ContentResolver mMockContentResolver; 57 58 private CarAudioSettings mCarAudioSettings; 59 60 private MockSettings mMockSettings; 61 CarAudioSettingsUnitTest()62 public CarAudioSettingsUnitTest() { 63 super(NO_LOG_TAGS); 64 } 65 66 @Override onSessionBuilder(CustomMockitoSessionBuilder session)67 protected void onSessionBuilder(CustomMockitoSessionBuilder session) { 68 mMockSettings = new MockSettings(session); 69 } 70 71 @Before setUp()72 public void setUp() { 73 when(mMockContext.getContentResolver()).thenReturn(mMockContentResolver); 74 when(mMockContext.createContextAsUser(any(), anyInt())).thenReturn(mMockContext); 75 mCarAudioSettings = new CarAudioSettings(mMockContext); 76 } 77 78 @Test isRejectNavigationOnCallEnabledInSettings_whenSetToNotToReject_returnsFalse()79 public void isRejectNavigationOnCallEnabledInSettings_whenSetToNotToReject_returnsFalse() { 80 setRejectNavigationOnCallSettingsValues(0); 81 82 assertWithMessage("Reject Navigation On Call Setting for userId %s", 83 TEST_USER_ID_1).that(mCarAudioSettings 84 .isRejectNavigationOnCallEnabledInSettings(TEST_USER_ID_1)).isFalse(); 85 } 86 87 @Test isRejectNavigationOnCallEnabledInSettings_whenSetToToReject_returnsTrue()88 public void isRejectNavigationOnCallEnabledInSettings_whenSetToToReject_returnsTrue() { 89 setRejectNavigationOnCallSettingsValues(1); 90 91 assertWithMessage("Reject Navigation On Call Setting for userId %s", 92 TEST_USER_ID_1).that(mCarAudioSettings 93 .isRejectNavigationOnCallEnabledInSettings(TEST_USER_ID_1)).isTrue(); 94 } 95 96 @Test getStoredVolumeGainIndexForUser_returnsSavedValue()97 public void getStoredVolumeGainIndexForUser_returnsSavedValue() { 98 setStoredVolumeGainIndexForUser(TEST_GAIN_INDEX); 99 100 assertWithMessage("Volume Group Gain for userId %s, zoneId %s, and groupId %s", 101 TEST_USER_ID_1, TEST_ZONE_ID, TEST_USER_ID_1).that(mCarAudioSettings 102 .getStoredVolumeGainIndexForUser(TEST_USER_ID_1, TEST_ZONE_ID, TEST_CONFIG_ID, 103 TEST_GROUP_ID)).isEqualTo(TEST_GAIN_INDEX); 104 } 105 106 @Test storedVolumeGainIndexForUser_savesValue()107 public void storedVolumeGainIndexForUser_savesValue() { 108 mCarAudioSettings.storeVolumeGainIndexForUser(TEST_USER_ID_1, TEST_ZONE_ID, TEST_CONFIG_ID, 109 TEST_GROUP_ID, TEST_GAIN_INDEX); 110 111 assertWithMessage("Volume Gain Setting Stored for userId %s, zoneId %s, and groupId %s", 112 TEST_USER_ID_1, TEST_ZONE_ID, TEST_USER_ID_1) 113 .that(mMockSettings.getInt(TEST_GAIN_INDEX_KEY)).isEqualTo(TEST_GAIN_INDEX); 114 } 115 116 @Test storeVolumeGroupMuteForUser_withUnMutedState_savesValue()117 public void storeVolumeGroupMuteForUser_withUnMutedState_savesValue() { 118 mCarAudioSettings.storeVolumeGroupMuteForUser(TEST_USER_ID_1, TEST_ZONE_ID, TEST_CONFIG_ID, 119 TEST_GROUP_ID, /* isMuted= */ false); 120 121 assertWithMessage("Volume Group Setting Stored for userId %s, zoneId %s, and groupId %s", 122 TEST_USER_ID_1, TEST_ZONE_ID, TEST_USER_ID_1) 123 .that(mMockSettings.getInt(TEST_MUTE_KEY)).isEqualTo(0); 124 } 125 126 @Test storeVolumeGroupMuteForUser_withMutedState_savesValue()127 public void storeVolumeGroupMuteForUser_withMutedState_savesValue() { 128 mCarAudioSettings.storeVolumeGroupMuteForUser(TEST_USER_ID_1, TEST_ZONE_ID, TEST_CONFIG_ID, 129 TEST_GROUP_ID, /* isMuted= */ true); 130 131 assertWithMessage("Volume Group Setting Stored for userId %s, zoneId %s, and groupId %s", 132 TEST_USER_ID_1, TEST_ZONE_ID, TEST_USER_ID_1) 133 .that(mMockSettings.getInt(TEST_MUTE_KEY)).isEqualTo(1); 134 } 135 136 @Test getVolumeGroupMuteForUser_withUnMutedState_returnsFalse()137 public void getVolumeGroupMuteForUser_withUnMutedState_returnsFalse() { 138 setStoredVolumeMuteForUser(0); 139 140 boolean muteState = mCarAudioSettings.getVolumeGroupMuteForUser(TEST_USER_ID_1, 141 TEST_ZONE_ID, TEST_CONFIG_ID, TEST_GROUP_ID); 142 143 assertWithMessage("Mute State for userId %s, zoneId %s, and groupId %s", 144 TEST_USER_ID_1, TEST_ZONE_ID, TEST_USER_ID_1) 145 .that(muteState).isEqualTo(false); 146 } 147 148 @Test getVolumeGroupMuteForUser_withMutedState_returnsTrue()149 public void getVolumeGroupMuteForUser_withMutedState_returnsTrue() { 150 setStoredVolumeMuteForUser(1); 151 152 boolean muteState = mCarAudioSettings.getVolumeGroupMuteForUser(TEST_USER_ID_1, 153 TEST_ZONE_ID, TEST_CONFIG_ID, TEST_GROUP_ID); 154 155 assertWithMessage("Mute State for userId %s, zoneId %s, and groupId %s", 156 TEST_USER_ID_1, TEST_ZONE_ID, TEST_USER_ID_1) 157 .that(muteState).isEqualTo(true); 158 } 159 160 @Test isPersistVolumeGroupMuteEnabled_whenSetToNotToDisabled_returnsFalse()161 public void isPersistVolumeGroupMuteEnabled_whenSetToNotToDisabled_returnsFalse() { 162 setPersistVolumeGroupMuteSettingsValues(0); 163 164 assertWithMessage("Persist volume group mute for userId %s", 165 TEST_USER_ID_1).that(mCarAudioSettings 166 .isPersistVolumeGroupMuteEnabled(TEST_USER_ID_1)).isFalse(); 167 } 168 169 @Test isPersistVolumeGroupMuteEnabled_whenSetToToEnabled_returnsTrue()170 public void isPersistVolumeGroupMuteEnabled_whenSetToToEnabled_returnsTrue() { 171 setPersistVolumeGroupMuteSettingsValues(1); 172 173 assertWithMessage("Persist volume group mute for userId %s", 174 TEST_USER_ID_1).that(mCarAudioSettings 175 .isPersistVolumeGroupMuteEnabled(TEST_USER_ID_1)).isTrue(); 176 } 177 setStoredVolumeGainIndexForUser(int gainIndexForUser)178 private void setStoredVolumeGainIndexForUser(int gainIndexForUser) { 179 mMockSettings.putInt(TEST_GAIN_INDEX_KEY, gainIndexForUser); 180 } 181 setStoredVolumeMuteForUser(int volumeSetting)182 private void setStoredVolumeMuteForUser(int volumeSetting) { 183 mMockSettings.putInt(TEST_MUTE_KEY, volumeSetting); 184 } 185 setRejectNavigationOnCallSettingsValues(int settingsValue)186 private void setRejectNavigationOnCallSettingsValues(int settingsValue) { 187 mMockSettings.putInt(CarSettings.Secure.KEY_AUDIO_FOCUS_NAVIGATION_REJECTED_DURING_CALL, 188 settingsValue); 189 } 190 setPersistVolumeGroupMuteSettingsValues(int persistMuteSetting)191 private void setPersistVolumeGroupMuteSettingsValues(int persistMuteSetting) { 192 mMockSettings.putInt(CarSettings.Secure.KEY_AUDIO_PERSIST_VOLUME_GROUP_MUTE_STATES, 193 persistMuteSetting); 194 } 195 } 196