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