• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)