1 /* 2 * Copyright (C) 2025 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.settings.sound 18 19 import android.content.Context 20 21 import androidx.preference.SwitchPreferenceCompat 22 import androidx.test.core.app.ApplicationProvider 23 import androidx.test.ext.junit.runners.AndroidJUnit4 24 25 import com.android.settingslib.datastore.SettingsSecureStore 26 import com.android.settingslib.preference.createAndBindWidget 27 import com.google.common.truth.Truth.assertThat 28 29 import org.junit.After 30 import org.junit.Before 31 import org.junit.Test 32 import org.junit.runner.RunWith 33 34 // LINT.IfChange 35 @RunWith(AndroidJUnit4::class) 36 class MediaControlsSwitchPreferenceTest { 37 private val appContext: Context = ApplicationProvider.getApplicationContext() 38 private var originalValue: Boolean? = null 39 private val store = MediaControlsScreen.MediaControlsStore(SettingsSecureStore.get(appContext)) 40 private val key = MediaControlsSwitchPreference.KEY 41 42 private val preference = MediaControlsSwitchPreference(store) 43 44 @Before setUpnull45 fun setUp() { 46 originalValue = preference.storage(appContext).getBoolean(key) 47 } 48 49 @After tearDownnull50 fun tearDown() { 51 preference.storage(appContext).setBoolean(key, originalValue) 52 } 53 54 @Test mediaControlsLockScreenDefaultValue_isCheckednull55 fun mediaControlsLockScreenDefaultValue_isChecked() { 56 preference.storage(appContext).setBoolean(key, null) 57 58 val switchPreference = getSwitchPreferenceCompat() 59 60 assertThat(switchPreference.isChecked).isTrue() 61 } 62 63 @Test mediaControlsLockScreenEnabled_switchPreferenceIsCheckednull64 fun mediaControlsLockScreenEnabled_switchPreferenceIsChecked() { 65 setMediaControlsResumeEnabled(true) 66 67 val switchPreference = getSwitchPreferenceCompat() 68 69 assertThat(switchPreference.isChecked).isTrue() 70 } 71 72 @Test mediaControlsLockScreenDisabled_switchPreferenceIsNotCheckednull73 fun mediaControlsLockScreenDisabled_switchPreferenceIsNotChecked() { 74 setMediaControlsResumeEnabled(false) 75 76 val switchPreference = getSwitchPreferenceCompat() 77 78 assertThat(switchPreference.isChecked).isFalse() 79 } 80 81 @Test click_defaultMediaControlsLockScreenEnabled_turnOffnull82 fun click_defaultMediaControlsLockScreenEnabled_turnOff() { 83 setMediaControlsResumeEnabled(true) 84 85 val switchPreference = getSwitchPreferenceCompat().apply { performClick() } 86 87 assertThat(switchPreference.isChecked).isFalse() 88 } 89 90 @Test click_defaultMediaControlsLockScreenDisabled_turnOnnull91 fun click_defaultMediaControlsLockScreenDisabled_turnOn() { 92 setMediaControlsResumeEnabled(false) 93 94 val switchPreference = getSwitchPreferenceCompat().apply { performClick() } 95 96 assertThat(switchPreference.isChecked).isTrue() 97 } 98 getSwitchPreferenceCompatnull99 private fun getSwitchPreferenceCompat(): SwitchPreferenceCompat = 100 preference.createAndBindWidget(appContext) 101 102 103 private fun setMediaControlsResumeEnabled(value: Boolean) = 104 preference.storage(appContext).setBoolean(key, value) 105 } 106 // LINT.ThenChange(MediaControlsPreferenceControllerTest.java)