1 /* 2 * Copyright (C) 2023 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.accessibility; 18 19 import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; 20 import static com.android.settings.accessibility.AccessibilityUtil.State.ON; 21 import static com.android.settings.core.BasePreferenceController.AVAILABLE; 22 import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; 23 24 import static com.google.common.truth.Truth.assertThat; 25 26 import android.content.ContentResolver; 27 import android.content.Context; 28 import android.provider.Settings; 29 30 import androidx.test.core.app.ApplicationProvider; 31 32 import com.android.settings.R; 33 34 import org.junit.After; 35 import org.junit.Before; 36 import org.junit.Rule; 37 import org.junit.Test; 38 import org.junit.runner.RunWith; 39 import org.mockito.MockitoAnnotations; 40 import org.mockito.Spy; 41 import org.mockito.junit.MockitoJUnit; 42 import org.mockito.junit.MockitoRule; 43 import org.robolectric.RobolectricTestRunner; 44 import org.robolectric.annotation.Config; 45 46 @RunWith(RobolectricTestRunner.class) 47 @Config(shadows = ShadowFlashNotificationsUtils.class) 48 public class CameraFlashNotificationPreferenceControllerTest { 49 private static final String PREFERENCE_KEY = "preference_key"; 50 51 @Rule 52 public MockitoRule mMockitoRule = MockitoJUnit.rule(); 53 @Spy 54 private final Context mContext = ApplicationProvider.getApplicationContext(); 55 56 private CameraFlashNotificationPreferenceController mController; 57 private ContentResolver mContentResolver; 58 59 @Before setUp()60 public void setUp() { 61 MockitoAnnotations.initMocks(this); 62 mContentResolver = mContext.getContentResolver(); 63 mController = new CameraFlashNotificationPreferenceController(mContext, PREFERENCE_KEY); 64 } 65 66 @After tearDown()67 public void tearDown() { 68 ShadowFlashNotificationsUtils.reset(); 69 } 70 71 @Test getAvailabilityStatus_torchAvailable_assertAvailable()72 public void getAvailabilityStatus_torchAvailable_assertAvailable() { 73 ShadowFlashNotificationsUtils.setIsTorchAvailable(true); 74 assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); 75 } 76 77 @Test getAvailabilityStatus_torchUnavailable_assertUnsupportedOnDevice()78 public void getAvailabilityStatus_torchUnavailable_assertUnsupportedOnDevice() { 79 ShadowFlashNotificationsUtils.setIsTorchAvailable(false); 80 assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); 81 } 82 83 @Test isChecked_setOff_assertFalse()84 public void isChecked_setOff_assertFalse() { 85 Settings.System.putInt(mContentResolver, Settings.System.CAMERA_FLASH_NOTIFICATION, OFF); 86 assertThat(mController.isChecked()).isFalse(); 87 } 88 89 @Test isChecked_setOn_assertTrue()90 public void isChecked_setOn_assertTrue() { 91 Settings.System.putInt(mContentResolver, Settings.System.CAMERA_FLASH_NOTIFICATION, ON); 92 assertThat(mController.isChecked()).isTrue(); 93 } 94 95 @Test setChecked_setTrue_assertNotOff()96 public void setChecked_setTrue_assertNotOff() { 97 mController.setChecked(true); 98 assertThat( 99 Settings.System.getInt(mContentResolver, Settings.System.CAMERA_FLASH_NOTIFICATION, 100 OFF)).isNotEqualTo(OFF); 101 } 102 103 @Test setChecked_setFalse_assertNotOn()104 public void setChecked_setFalse_assertNotOn() { 105 mController.setChecked(false); 106 assertThat( 107 Settings.System.getInt(mContentResolver, Settings.System.CAMERA_FLASH_NOTIFICATION, 108 OFF)).isNotEqualTo(ON); 109 } 110 111 @Test getSliceHighlightMenuRes()112 public void getSliceHighlightMenuRes() { 113 mController.getSliceHighlightMenuRes(); 114 assertThat(mController.getSliceHighlightMenuRes()) 115 .isEqualTo(R.string.menu_key_accessibility); 116 } 117 } 118