116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki/* 216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * Copyright (C) 2018 The Android Open Source Project 316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * 416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); 516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * you may not use this file except in compliance with the License. 616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * You may obtain a copy of the License at 716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * 816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * 1016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * Unless required by applicable law or agreed to in writing, software 1116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, 1216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * See the License for the specific language governing permissions and 1416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki * limitations under the License. 1516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki */ 1616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 1716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukipackage com.android.settingslib.fuelgauge; 1816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 195972773e476eb2d5290c644e721016df19b8c9d6Makoto Onukiimport static com.google.common.truth.Truth.assertThat; 2016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport static org.junit.Assert.assertEquals; 215972773e476eb2d5290c644e721016df19b8c9d6Makoto Onukiimport static org.junit.Assert.assertThat; 2216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport static org.mockito.ArgumentMatchers.any; 2316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport static org.mockito.ArgumentMatchers.anyBoolean; 2416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport static org.mockito.ArgumentMatchers.eq; 2516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport static org.mockito.Mockito.times; 2616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport static org.mockito.Mockito.verify; 2716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport static org.mockito.Mockito.when; 2816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 2916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport android.content.ContentResolver; 3016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport android.content.Context; 3116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport android.content.Intent; 3216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport android.os.PowerManager; 335972773e476eb2d5290c644e721016df19b8c9d6Makoto Onukiimport android.provider.Settings.Global; 3416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport android.provider.Settings.Secure; 3516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 3616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport com.android.settingslib.SettingsLibRobolectricTestRunner; 3716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 3816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport org.junit.Before; 3916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport org.junit.Test; 4016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport org.junit.runner.RunWith; 4116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport org.mockito.Mock; 4216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukiimport org.mockito.MockitoAnnotations; 4316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 4416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 4516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki@RunWith(SettingsLibRobolectricTestRunner.class) 4616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onukipublic class BatterySaverUtilsTest { 475972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki final int BATTERY_SAVER_THRESHOLD_1 = 15; 485972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki final int BATTERY_SAVER_THRESHOLD_2 = 20; 495972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki 5016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Mock 5116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Context mMockContext; 5216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 5316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Mock 5416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki ContentResolver mMockResolver; 5516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 5616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Mock 5716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki PowerManager mMockPowerManager; 5816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 5916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Before 6016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki public void setUp() throws Exception { 6116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki MockitoAnnotations.initMocks(this); 6216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 6316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki when(mMockContext.getContentResolver()).thenReturn(mMockResolver); 6416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki when(mMockContext.getSystemService(eq(PowerManager.class))).thenReturn(mMockPowerManager); 6516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki when(mMockPowerManager.setPowerSaveMode(anyBoolean())).thenReturn(true); 6616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki } 6716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 6816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Test 6916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki public void testSetPowerSaveMode_enable_firstCall_needWarning() throws Exception { 7016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); 7116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); 7216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 7316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(false, BatterySaverUtils.setPowerSaveMode(mMockContext, true, true)); 7416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 7516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockContext, times(1)).sendBroadcast(any(Intent.class)); 7616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockPowerManager, times(0)).setPowerSaveMode(anyBoolean()); 7716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 7816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki // They shouldn't have changed. 7916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(-1, 8016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); 8116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(-2, 8216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); 8316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki } 8416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 8516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Test 8616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki public void testSetPowerSaveMode_enable_secondCall_needWarning() throws Exception { 8716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); // Already acked. 8816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); 8916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 9016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(true, BatterySaverUtils.setPowerSaveMode(mMockContext, true, true)); 9116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 9216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockContext, times(0)).sendBroadcast(any(Intent.class)); 9316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockPowerManager, times(1)).setPowerSaveMode(eq(true)); 9416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 9516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); 9616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); 9716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki } 9816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 9916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Test 10016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki public void testSetPowerSaveMode_enable_thridCall_needWarning() throws Exception { 10116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); // Already acked. 10216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, 1); 10316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 10416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(true, BatterySaverUtils.setPowerSaveMode(mMockContext, true, true)); 10516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 10616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockContext, times(0)).sendBroadcast(any(Intent.class)); 10716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockPowerManager, times(1)).setPowerSaveMode(eq(true)); 10816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 10916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); 11016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); 11116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki } 11216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 11316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Test 11416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki public void testSetPowerSaveMode_enable_firstCall_noWarning() throws Exception { 11516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); 11616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); 11716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 11816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(true, BatterySaverUtils.setPowerSaveMode(mMockContext, true, false)); 11916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 12016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockContext, times(0)).sendBroadcast(any(Intent.class)); 12116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockPowerManager, times(1)).setPowerSaveMode(eq(true)); 12216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 12316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); 12416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); 12516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki } 12616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 12716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Test 12816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki public void testSetPowerSaveMode_disable_firstCall_noWarning() throws Exception { 12916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); 13016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); 13116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 13216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki // When disabling, needFirstTimeWarning doesn't matter. 13316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(true, BatterySaverUtils.setPowerSaveMode(mMockContext, false, false)); 13416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 13516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockContext, times(0)).sendBroadcast(any(Intent.class)); 13616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockPowerManager, times(1)).setPowerSaveMode(eq(false)); 13716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 13816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); 13916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(-2, 14016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); 14116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki } 14216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 14316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki @Test 14416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki public void testSetPowerSaveMode_disable_firstCall_needWarning() throws Exception { 14516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); 14616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); 14716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 14816a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki // When disabling, needFirstTimeWarning doesn't matter. 14916a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(true, BatterySaverUtils.setPowerSaveMode(mMockContext, false, true)); 15016a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 15116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockContext, times(0)).sendBroadcast(any(Intent.class)); 15216a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki verify(mMockPowerManager, times(1)).setPowerSaveMode(eq(false)); 15316a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki 15416a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); 15516a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki assertEquals(-2, 15616a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); 15716a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki } 1585972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki 1595972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki @Test 1605972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki public void testEnsureAutoBatterysaver_setNewPositiveValue_doNotOverwrite() throws Exception { 1615972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki Global.putString(mMockResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, "null"); 1625972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki 1635972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki BatterySaverUtils.ensureAutoBatterySaver(mMockContext, BATTERY_SAVER_THRESHOLD_1); 1645972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki 1655972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki assertThat(Secure.getInt(mMockResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, -1)) 1665972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki .isEqualTo(BATTERY_SAVER_THRESHOLD_1); 1675972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki 1685972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki // Once a positive number is set, ensureAutoBatterySaver() won't overwrite it. 1695972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki BatterySaverUtils.ensureAutoBatterySaver(mMockContext, BATTERY_SAVER_THRESHOLD_2); 1705972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki assertThat(Secure.getInt(mMockResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, -1)) 1715972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki .isEqualTo(BATTERY_SAVER_THRESHOLD_1); 1725972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki } 1735972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki 1745972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki @Test 1755972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki public void testSetAutoBatterySaverTriggerLevel_setSuppressSuggestion() throws Exception { 1765972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki Global.putString(mMockResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, "null"); 1775972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki Secure.putString(mMockResolver, Secure.SUPPRESS_AUTO_BATTERY_SAVER_SUGGESTION, "null"); 1785972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki 1795972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki BatterySaverUtils.setAutoBatterySaverTriggerLevel(mMockContext, 0); 1805972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki assertThat(Global.getInt(mMockResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, -1)) 1815972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki .isEqualTo(0); 1825972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki assertThat(Secure.getInt(mMockResolver, Secure.SUPPRESS_AUTO_BATTERY_SAVER_SUGGESTION, -1)) 1835972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki .isEqualTo(-1); // not set. 1845972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki 1855972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki BatterySaverUtils.setAutoBatterySaverTriggerLevel(mMockContext, BATTERY_SAVER_THRESHOLD_1 ); 1865972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki assertThat( Global.getInt(mMockResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, -1)) 1875972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki .isEqualTo(BATTERY_SAVER_THRESHOLD_1); 1885972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki assertThat(Secure.getInt(mMockResolver, Secure.SUPPRESS_AUTO_BATTERY_SAVER_SUGGESTION, -1)) 1895972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki .isEqualTo(1); 1905972773e476eb2d5290c644e721016df19b8c9d6Makoto Onuki } 19116a0dd2d5eeef320a80afe130e6c1e2946e8d2f1Makoto Onuki} 192