188b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei/* 288b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * Copyright (C) 2017 The Android Open Source Project 388b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * 488b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * Licensed under the Apache License, Version 2.0 (the "License"); 588b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * you may not use this file except in compliance with the License. 688b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * You may obtain a copy of the License at 788b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * 888b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * http://www.apache.org/licenses/LICENSE-2.0 988b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * 1088b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * Unless required by applicable law or agreed to in writing, software 1188b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * distributed under the License is distributed on an "AS IS" BASIS, 1288b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1388b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * See the License for the specific language governing permissions and 1488b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei * limitations under the License. 1588b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei */ 1688b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleipackage com.android.settings.fuelgauge; 1788b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 1888b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport static org.mockito.Mockito.verify; 1988b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 2088b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport android.content.Context; 2188b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport android.content.Intent; 2288b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport android.os.BatteryManager; 2388b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport android.os.PowerManager; 2488b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 2588b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport com.android.settings.TestConfig; 2688b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport com.android.settings.testutils.SettingsRobolectricTestRunner; 2788b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 2888b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport org.junit.Before; 2988b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport org.junit.Test; 3088b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport org.junit.runner.RunWith; 3188b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport org.mockito.Mock; 3288b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport org.mockito.MockitoAnnotations; 3388b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleiimport org.robolectric.annotation.Config; 3488b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 3588b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei@RunWith(SettingsRobolectricTestRunner.class) 3688b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 3788b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyuleipublic class BatterySaverReceiverTest { 3888b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei @Mock 3988b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei private BatterySaverReceiver.BatterySaverListener mBatterySaverListener; 4088b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei @Mock 4188b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei private Context mContext; 4288b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei private BatterySaverReceiver mBatterySaverReceiver; 4388b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 4488b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei @Before 4588b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei public void setUp() { 4688b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei MockitoAnnotations.initMocks(this); 4788b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 4888b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei mBatterySaverReceiver = new BatterySaverReceiver(mContext); 4988b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei mBatterySaverReceiver.setBatterySaverListener(mBatterySaverListener); 5088b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei } 5188b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 5288b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei @Test 5388b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei public void testOnReceive_devicePluggedIn_pluggedInTrue() { 5488b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 5588b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei intent.putExtra(BatteryManager.EXTRA_PLUGGED, BatteryManager.BATTERY_PLUGGED_AC); 5688b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 5788b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei mBatterySaverReceiver.onReceive(mContext, intent); 5888b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 5988b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei verify(mBatterySaverListener).onBatteryChanged(true); 6088b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei } 6188b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 6288b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei @Test 6388b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei public void testOnReceive_deviceNotPluggedIn_pluggedInFalse() { 6488b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 6588b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei intent.putExtra(BatteryManager.EXTRA_PLUGGED, 0); 6688b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 6788b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei mBatterySaverReceiver.onReceive(mContext, intent); 6888b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 6988b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei verify(mBatterySaverListener).onBatteryChanged(false); 7088b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei } 7188b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 7288b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei @Test 7388b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei public void testOnReceive_powerSaveModeChanged_invokeCallback() { 7488b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei Intent intent = new Intent(PowerManager.ACTION_POWER_SAVE_MODE_CHANGING); 7588b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 7688b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei mBatterySaverReceiver.onReceive(mContext, intent); 7788b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 7888b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei verify(mBatterySaverListener).onPowerSaveModeChanged(); 7988b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei } 8088b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei 8188b580a0a90e3341435ec37d9be83a6206bc95b3jackqdyulei} 82