• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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.gestures;
18 
19 import static com.android.settings.gestures.DoubleTapPowerSettingsUtils.DOUBLE_TAP_POWER_DISABLED_MODE;
20 import static com.android.settings.gestures.DoubleTapPowerSettingsUtils.DOUBLE_TAP_POWER_MULTI_TARGET_MODE;
21 import static com.android.settings.gestures.DoubleTapPowerSettingsUtils.OFF;
22 import static com.android.settings.gestures.DoubleTapPowerSettingsUtils.ON;
23 
24 import static com.google.common.truth.Truth.assertThat;
25 
26 import static org.mockito.Mockito.mock;
27 import static org.mockito.Mockito.spy;
28 import static org.mockito.Mockito.when;
29 
30 import android.content.Context;
31 import android.content.res.Resources;
32 import android.provider.Settings;
33 
34 import androidx.test.core.app.ApplicationProvider;
35 import androidx.test.ext.junit.runners.AndroidJUnit4;
36 
37 import com.android.internal.R;
38 
39 import org.junit.Before;
40 import org.junit.Test;
41 import org.junit.runner.RunWith;
42 
43 @RunWith(AndroidJUnit4.class)
44 public class DoubleTapPowerSettingsUtilsTest {
45 
46     private static final int DOUBLE_TAP_POWER_BUTTON_CAMERA_LAUNCH_VALUE = 0;
47     private static final int DOUBLE_TAP_POWER_BUTTON_WALLET_LAUNCH_VALUE = 1;
48 
49     private Context mContext;
50     private Resources mResources;
51 
52     @Before
setUp()53     public void setUp() {
54         mContext = spy(ApplicationProvider.getApplicationContext());
55         mResources = mock(Resources.class);
56         when(mContext.getResources()).thenReturn(mResources);
57     }
58 
59     @Test
isMultiTargetDoubleTapPowerButtonGestureAvailable_setAvailable_returnsTrue()60     public void isMultiTargetDoubleTapPowerButtonGestureAvailable_setAvailable_returnsTrue() {
61         when(mResources.getInteger(R.integer.config_doubleTapPowerGestureMode)).thenReturn(
62                 DOUBLE_TAP_POWER_MULTI_TARGET_MODE);
63 
64         assertThat(DoubleTapPowerSettingsUtils.isMultiTargetDoubleTapPowerButtonGestureAvailable(
65                 mContext))
66                 .isTrue();
67     }
68 
69     @Test
isMultiTargetDoubleTapPowerButtonGestureAvailable_setUnavailable_returnsFalse()70     public void isMultiTargetDoubleTapPowerButtonGestureAvailable_setUnavailable_returnsFalse() {
71         when(mResources.getInteger(R.integer.config_doubleTapPowerGestureMode)).thenReturn(
72                 DOUBLE_TAP_POWER_DISABLED_MODE);
73 
74         assertThat(DoubleTapPowerSettingsUtils.isMultiTargetDoubleTapPowerButtonGestureAvailable(
75                 mContext))
76                 .isFalse();
77     }
78 
79     @Test
isDoubleTapPowerButtonGestureEnabled_setEnabled_returnsTrue()80     public void isDoubleTapPowerButtonGestureEnabled_setEnabled_returnsTrue() {
81         Settings.Secure.putInt(
82                 mContext.getContentResolver(),
83                 Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE_ENABLED,
84                 ON);
85 
86         assertThat(DoubleTapPowerSettingsUtils.isDoubleTapPowerButtonGestureEnabled(mContext))
87                 .isTrue();
88     }
89 
90     @Test
isDoubleTapPowerButtonGestureEnabled_setDisabled_returnsFalse()91     public void isDoubleTapPowerButtonGestureEnabled_setDisabled_returnsFalse() {
92         Settings.Secure.putInt(
93                 mContext.getContentResolver(),
94                 Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE_ENABLED,
95                 OFF);
96 
97         assertThat(DoubleTapPowerSettingsUtils.isDoubleTapPowerButtonGestureEnabled(mContext))
98                 .isFalse();
99     }
100 
101     @Test
isDoubleTapPowerButtonGestureEnabled_valueNotSet_returnsTrue()102     public void isDoubleTapPowerButtonGestureEnabled_valueNotSet_returnsTrue() {
103         assertThat(DoubleTapPowerSettingsUtils.isDoubleTapPowerButtonGestureEnabled(mContext))
104                 .isTrue();
105     }
106 
107     @Test
setDoubleTapPowerButtonGestureEnabled_setEnabled_returnsEnabled()108     public void setDoubleTapPowerButtonGestureEnabled_setEnabled_returnsEnabled() {
109         DoubleTapPowerSettingsUtils.setDoubleTapPowerButtonGestureEnabled(mContext, true);
110 
111         assertThat(
112                 Settings.Secure.getInt(
113                         mContext.getContentResolver(),
114                         Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE_ENABLED,
115                         OFF))
116                 .isEqualTo(ON);
117     }
118 
119     @Test
setDoubleTapPowerButtonGestureEnabled_setDisabled_returnsDisabled()120     public void setDoubleTapPowerButtonGestureEnabled_setDisabled_returnsDisabled() {
121         DoubleTapPowerSettingsUtils.setDoubleTapPowerButtonGestureEnabled(mContext, false);
122 
123         assertThat(
124                 Settings.Secure.getInt(
125                         mContext.getContentResolver(),
126                         Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE_ENABLED,
127                         ON))
128                 .isEqualTo(OFF);
129     }
130 
131     @Test
isDoubleTapPowerButtonGestureForCameraLaunchEnabled_valueSetToCamera_returnsTrue()132     public void isDoubleTapPowerButtonGestureForCameraLaunchEnabled_valueSetToCamera_returnsTrue() {
133         Settings.Secure.putInt(
134                 mContext.getContentResolver(),
135                 Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE,
136                 DOUBLE_TAP_POWER_BUTTON_CAMERA_LAUNCH_VALUE);
137 
138         assertThat(
139                 DoubleTapPowerSettingsUtils
140                         .isDoubleTapPowerButtonGestureForCameraLaunchEnabled(mContext))
141                 .isTrue();
142     }
143 
144     @Test
145     public void
isDoubleTapPowerButtonGestureForCameraLaunchEnabled_valueNotSetToCamera_returnsFalse()146             isDoubleTapPowerButtonGestureForCameraLaunchEnabled_valueNotSetToCamera_returnsFalse() {
147         Settings.Secure.putInt(
148                 mContext.getContentResolver(),
149                 Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE,
150                 DOUBLE_TAP_POWER_BUTTON_WALLET_LAUNCH_VALUE);
151 
152         assertThat(
153                 DoubleTapPowerSettingsUtils
154                         .isDoubleTapPowerButtonGestureForCameraLaunchEnabled(mContext))
155                 .isFalse();
156     }
157 
158     @Test
159     public void
isDoubleTapPowerButtonGestureForCameraLaunchEnabled_defaultSetToCamera_returnsTrue()160             isDoubleTapPowerButtonGestureForCameraLaunchEnabled_defaultSetToCamera_returnsTrue() {
161         when(mResources.getInteger(R.integer.config_doubleTapPowerGestureMultiTargetDefaultAction))
162                 .thenReturn(DOUBLE_TAP_POWER_BUTTON_CAMERA_LAUNCH_VALUE);
163 
164         assertThat(
165                 DoubleTapPowerSettingsUtils
166                         .isDoubleTapPowerButtonGestureForCameraLaunchEnabled(mContext))
167                 .isTrue();
168     }
169 
170     @Test
171     public void
isDoubleTapPowerButtonGestureForCameraLaunchEnabled_defaultNotCamera_returnsFalse()172             isDoubleTapPowerButtonGestureForCameraLaunchEnabled_defaultNotCamera_returnsFalse() {
173         when(mResources.getInteger(R.integer.config_doubleTapPowerGestureMultiTargetDefaultAction))
174                 .thenReturn(DOUBLE_TAP_POWER_BUTTON_WALLET_LAUNCH_VALUE);
175 
176         assertThat(
177                 DoubleTapPowerSettingsUtils
178                         .isDoubleTapPowerButtonGestureForCameraLaunchEnabled(mContext))
179                 .isFalse();
180     }
181 
182     @Test
setDoubleTapPowerButtonForCameraLaunch_setGestureBehaviorToCameraLaunch()183     public void setDoubleTapPowerButtonForCameraLaunch_setGestureBehaviorToCameraLaunch() {
184         boolean result =
185                 DoubleTapPowerSettingsUtils.setDoubleTapPowerButtonForCameraLaunch(mContext);
186 
187         assertThat(result).isTrue();
188         assertThat(
189                 Settings.Secure.getInt(
190                         mContext.getContentResolver(),
191                         Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE,
192                         DOUBLE_TAP_POWER_BUTTON_WALLET_LAUNCH_VALUE))
193                 .isEqualTo(DOUBLE_TAP_POWER_BUTTON_CAMERA_LAUNCH_VALUE);
194     }
195 
196     @Test
setDoubleTapPowerButtonForWalletLaunch_setGestureBehaviorToWalletLaunch()197     public void setDoubleTapPowerButtonForWalletLaunch_setGestureBehaviorToWalletLaunch() {
198         boolean result =
199                 DoubleTapPowerSettingsUtils.setDoubleTapPowerButtonForWalletLaunch(mContext);
200 
201         assertThat(result).isTrue();
202         assertThat(
203                 Settings.Secure.getInt(
204                         mContext.getContentResolver(),
205                         Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE,
206                         DOUBLE_TAP_POWER_BUTTON_CAMERA_LAUNCH_VALUE))
207                 .isEqualTo(DOUBLE_TAP_POWER_BUTTON_WALLET_LAUNCH_VALUE);
208     }
209 }
210