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