BatterySaverPolicyTest.java revision 455e90add22835d0744fc0f5c2feb5fcaf03b28f
1/* 2 * Copyright (C) 2017 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 */ 16package com.android.server.power; 17 18import android.os.PowerSaveState; 19import android.os.Handler; 20import android.test.AndroidTestCase; 21import android.test.suitebuilder.annotation.SmallTest; 22import com.android.server.power.BatterySaverPolicy.ServiceType; 23import org.mockito.Mock; 24import org.mockito.MockitoAnnotations; 25 26import static com.google.common.truth.Truth.assertThat; 27 28/** 29 * Tests for {@link com.android.server.power.BatterySaverPolicy} 30 */ 31public class BatterySaverPolicyTest extends AndroidTestCase { 32 private static final boolean BATTERY_SAVER_ON = true; 33 private static final boolean BATTERY_SAVER_OFF = false; 34 private static final float BRIGHTNESS_FACTOR = 0.7f; 35 private static final float DEFAULT_BRIGHTNESS_FACTOR = 0.5f; 36 private static final float PRECISION = 0.001f; 37 private static final int GPS_MODE = 0; 38 private static final int DEFAULT_GPS_MODE = 1; 39 private static final String BATTERY_SAVER_CONSTANTS = "vibration_disabled=true," 40 + "animation_disabled=false," 41 + "soundtrigger_disabled=true," 42 + "firewall_disabled=false," 43 + "adjust_brightness_disabled=true," 44 + "adjust_brightness_factor=0.7," 45 + "fullbackup_deferred=true," 46 + "keyvaluebackup_deferred=false," 47 + "gps_mode=0"; 48 private static final String BATTERY_SAVER_INCORRECT_CONSTANTS = "vi*,!=,,true"; 49 50 @Mock 51 Handler mHandler; 52 private BatterySaverPolicy mBatterySaverPolicy; 53 54 public void setUp() throws Exception { 55 super.setUp(); 56 MockitoAnnotations.initMocks(this); 57 mBatterySaverPolicy = new BatterySaverPolicy(mHandler); 58 mBatterySaverPolicy.start(getContext().getContentResolver()); 59 } 60 61 @SmallTest 62 public void testGetBatterySaverPolicy_PolicyNull_DefaultValueCorrect() { 63 testServiceDefaultValue(ServiceType.NULL); 64 } 65 66 @SmallTest 67 public void testGetBatterySaverPolicy_PolicyVibration_DefaultValueCorrect() { 68 testServiceDefaultValue(ServiceType.VIBRATION); 69 } 70 71 @SmallTest 72 public void testGetBatterySaverPolicy_PolicySound_DefaultValueCorrect() { 73 testServiceDefaultValue(ServiceType.SOUND); 74 } 75 76 @SmallTest 77 public void testGetBatterySaverPolicy_PolicyFullBackup_DefaultValueCorrect() { 78 testServiceDefaultValue(ServiceType.FULL_BACKUP); 79 } 80 81 @SmallTest 82 public void testGetBatterySaverPolicy_PolicyKeyValueBackup_DefaultValueCorrect() { 83 testServiceDefaultValue(ServiceType.KEYVALUE_BACKUP); 84 } 85 86 @SmallTest 87 public void testGetBatterySaverPolicy_PolicyAnimation_DefaultValueCorrect() { 88 testServiceDefaultValue(ServiceType.ANIMATION); 89 } 90 91 @SmallTest 92 public void testGetBatterySaverPolicy_PolicyBatteryStats_DefaultValueCorrect() { 93 testServiceDefaultValue(ServiceType.BATTERY_STATS); 94 } 95 96 @SmallTest 97 public void testGetBatterySaverPolicy_PolicyNetworkFirewall_DefaultValueCorrect() { 98 testServiceDefaultValue(ServiceType.NETWORK_FIREWALL); 99 } 100 101 @SmallTest 102 public void testGetBatterySaverPolicy_PolicyScreenBrightness_DefaultValueCorrect() { 103 testServiceDefaultValue(ServiceType.SCREEN_BRIGHTNESS); 104 105 PowerSaveState stateOn = 106 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.SCREEN_BRIGHTNESS, true); 107 assertThat(stateOn.brightnessFactor).isWithin(PRECISION).of(DEFAULT_BRIGHTNESS_FACTOR); 108 } 109 110 @SmallTest 111 public void testGetBatterySaverPolicy_PolicyGps_DefaultValueCorrect() { 112 testServiceDefaultValue(ServiceType.GPS); 113 114 PowerSaveState stateOn = 115 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.GPS, true); 116 assertThat(stateOn.gpsMode).isEqualTo(DEFAULT_GPS_MODE); 117 } 118 119 @SmallTest 120 public void testUpdateConstants_getCorrectData() { 121 mBatterySaverPolicy.updateConstants(BATTERY_SAVER_CONSTANTS); 122 123 final PowerSaveState vibrationState = 124 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.VIBRATION, BATTERY_SAVER_ON); 125 assertThat(vibrationState.batterySaverEnabled).isTrue(); 126 127 final PowerSaveState animationState = 128 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.ANIMATION, BATTERY_SAVER_ON); 129 assertThat(animationState.batterySaverEnabled).isFalse(); 130 131 final PowerSaveState soundState = 132 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.SOUND, BATTERY_SAVER_ON); 133 assertThat(soundState.batterySaverEnabled).isTrue(); 134 135 final PowerSaveState networkState = mBatterySaverPolicy.getBatterySaverPolicy( 136 ServiceType.NETWORK_FIREWALL, BATTERY_SAVER_ON); 137 assertThat(networkState.batterySaverEnabled).isTrue(); 138 139 final PowerSaveState screenState = 140 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.SCREEN_BRIGHTNESS, BATTERY_SAVER_ON); 141 assertThat(screenState.batterySaverEnabled).isFalse(); 142 assertThat(screenState.brightnessFactor).isWithin(PRECISION).of(BRIGHTNESS_FACTOR); 143 144 final PowerSaveState fullBackupState = mBatterySaverPolicy.getBatterySaverPolicy( 145 ServiceType.FULL_BACKUP, BATTERY_SAVER_ON); 146 assertThat(fullBackupState.batterySaverEnabled).isTrue(); 147 148 final PowerSaveState keyValueBackupState = mBatterySaverPolicy.getBatterySaverPolicy( 149 ServiceType.KEYVALUE_BACKUP, BATTERY_SAVER_ON); 150 assertThat(keyValueBackupState.batterySaverEnabled).isFalse(); 151 152 final PowerSaveState gpsState = 153 mBatterySaverPolicy.getBatterySaverPolicy(ServiceType.GPS, BATTERY_SAVER_ON); 154 assertThat(gpsState.batterySaverEnabled).isTrue(); 155 assertThat(gpsState.gpsMode).isEqualTo(GPS_MODE); 156 } 157 158 @SmallTest 159 public void testUpdateConstants_IncorrectData_NotCrash() { 160 //Should not crash 161 mBatterySaverPolicy.updateConstants(BATTERY_SAVER_INCORRECT_CONSTANTS); 162 mBatterySaverPolicy.updateConstants(null); 163 } 164 165 private void testServiceDefaultValue(@ServiceType int type) { 166 mBatterySaverPolicy.updateConstants(""); 167 final PowerSaveState batterySaverStateOn = 168 mBatterySaverPolicy.getBatterySaverPolicy(type, BATTERY_SAVER_ON); 169 assertThat(batterySaverStateOn.batterySaverEnabled).isTrue(); 170 171 final PowerSaveState batterySaverStateOff = 172 mBatterySaverPolicy.getBatterySaverPolicy(type, BATTERY_SAVER_OFF); 173 assertThat(batterySaverStateOff.batterySaverEnabled).isFalse(); 174 } 175} 176