PowerWhitelistBackendTest.java revision ae7686534ea7e45da87f391a0ef2c153adb49dd5
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 */ 16 17package com.android.settingslib.fuelgauge; 18 19import static com.google.common.truth.Truth.assertThat; 20import static org.mockito.ArgumentMatchers.anyString; 21import static org.mockito.Mockito.atLeastOnce; 22import static org.mockito.Mockito.doNothing; 23import static org.mockito.Mockito.doReturn; 24import static org.mockito.Mockito.verify; 25 26import android.os.IDeviceIdleController; 27 28import com.android.settingslib.SettingsLibRobolectricTestRunner; 29 30import org.junit.Before; 31import org.junit.Test; 32import org.junit.runner.RunWith; 33import org.mockito.Mock; 34import org.mockito.MockitoAnnotations; 35 36@RunWith(SettingsLibRobolectricTestRunner.class) 37public class PowerWhitelistBackendTest { 38 39 private static final String PACKAGE_ONE = "com.example.packageone"; 40 private static final String PACKAGE_TWO = "com.example.packagetwo"; 41 42 private PowerWhitelistBackend mPowerWhitelistBackend; 43 @Mock 44 private IDeviceIdleController mDeviceIdleService; 45 46 @Before 47 public void setUp() throws Exception { 48 MockitoAnnotations.initMocks(this); 49 doReturn(new String[] {}).when(mDeviceIdleService).getFullPowerWhitelist(); 50 doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelist(); 51 doReturn(new String[] {}).when(mDeviceIdleService).getSystemPowerWhitelistExceptIdle(); 52 doNothing().when(mDeviceIdleService).addPowerSaveWhitelistApp(anyString()); 53 doNothing().when(mDeviceIdleService).removePowerSaveWhitelistApp(anyString()); 54 mPowerWhitelistBackend = new PowerWhitelistBackend(mDeviceIdleService); 55 } 56 57 @Test 58 public void testIsWhitelisted() throws Exception { 59 doReturn(new String[] {PACKAGE_ONE}).when(mDeviceIdleService).getFullPowerWhitelist(); 60 mPowerWhitelistBackend.refreshList(); 61 62 assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_ONE)).isTrue(); 63 assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_TWO)).isFalse(); 64 65 mPowerWhitelistBackend.addApp(PACKAGE_TWO); 66 67 verify(mDeviceIdleService, atLeastOnce()).addPowerSaveWhitelistApp(PACKAGE_TWO); 68 assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_ONE)).isTrue(); 69 assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_TWO)).isTrue(); 70 71 mPowerWhitelistBackend.removeApp(PACKAGE_TWO); 72 73 verify(mDeviceIdleService, atLeastOnce()).removePowerSaveWhitelistApp(PACKAGE_TWO); 74 assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_ONE)).isTrue(); 75 assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_TWO)).isFalse(); 76 77 mPowerWhitelistBackend.removeApp(PACKAGE_ONE); 78 79 verify(mDeviceIdleService, atLeastOnce()).removePowerSaveWhitelistApp(PACKAGE_ONE); 80 assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_ONE)).isFalse(); 81 assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_TWO)).isFalse(); 82 } 83 84 @Test 85 public void testIsSystemWhitelisted() throws Exception { 86 doReturn(new String[] {PACKAGE_ONE}).when(mDeviceIdleService).getSystemPowerWhitelist(); 87 mPowerWhitelistBackend.refreshList(); 88 89 assertThat(mPowerWhitelistBackend.isSysWhitelisted(PACKAGE_ONE)).isTrue(); 90 assertThat(mPowerWhitelistBackend.isSysWhitelisted(PACKAGE_TWO)).isFalse(); 91 assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_ONE)).isFalse(); 92 } 93 94 @Test 95 public void testIsSystemWhitelistedExceptIdle_onePackage() throws Exception { 96 doReturn(new String[]{PACKAGE_TWO}).when( 97 mDeviceIdleService).getSystemPowerWhitelistExceptIdle(); 98 mPowerWhitelistBackend.refreshList(); 99 100 assertThat(mPowerWhitelistBackend.isSysWhitelistedExceptIdle(PACKAGE_ONE)).isFalse(); 101 assertThat(mPowerWhitelistBackend.isSysWhitelistedExceptIdle(PACKAGE_TWO)).isTrue(); 102 } 103 104 @Test 105 public void testIsSystemWhitelistedExceptIdle_packageArray() throws Exception { 106 doReturn(new String[]{PACKAGE_TWO}).when( 107 mDeviceIdleService).getSystemPowerWhitelistExceptIdle(); 108 mPowerWhitelistBackend.refreshList(); 109 110 final String[] idlePackages = {PACKAGE_ONE, PACKAGE_TWO}; 111 final String[] normalPackages = {PACKAGE_ONE}; 112 113 assertThat(mPowerWhitelistBackend.isSysWhitelistedExceptIdle(normalPackages)).isFalse(); 114 assertThat(mPowerWhitelistBackend.isSysWhitelistedExceptIdle(idlePackages)).isTrue(); 115 } 116} 117