[BatteryTips] Separate the low battery tips
Bug: 315748218 Test: atest SettingsRoboTestStub:com.android.settings.fuelgauge.batterytip.detectors.LowBatteryDetectorTest Change-Id: Id973be37012da414d6125a4dd29ec4522ab80e95
This commit is contained in:
@@ -22,11 +22,17 @@ import android.content.Context;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class BatterySettingsFeatureProviderImplTest {
|
||||
private BatterySettingsFeatureProviderImpl mImpl;
|
||||
@@ -52,4 +58,15 @@ public class BatterySettingsFeatureProviderImplTest {
|
||||
public void isBatteryInfoEnabled_returnFalse() {
|
||||
assertThat(mImpl.isBatteryInfoEnabled(mContext)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addBatteryTipDetector_containsLowBatteryTip() {
|
||||
var tips = new ArrayList<BatteryTip>();
|
||||
|
||||
mImpl.addBatteryTipDetector(
|
||||
mContext, tips, new BatteryInfo(), new BatteryTipPolicy(mContext));
|
||||
|
||||
var expectedResult = tips.stream().anyMatch(tip -> tip instanceof LowBatteryTip);
|
||||
assertThat(expectedResult).isTrue();
|
||||
}
|
||||
}
|
||||
|
@@ -19,20 +19,25 @@ package com.android.settings.fuelgauge.batterytip.detectors;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.robolectric.Shadows.shadowOf;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.PowerManager;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.fuelgauge.BatteryInfo;
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -40,73 +45,79 @@ import java.util.concurrent.TimeUnit;
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class LowBatteryDetectorTest {
|
||||
|
||||
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
|
||||
|
||||
@Mock private BatteryInfo mBatteryInfo;
|
||||
private BatteryTipPolicy mPolicy;
|
||||
|
||||
private BatteryTipPolicy mBatteryTipPolicy;
|
||||
private LowBatteryDetector mLowBatteryDetector;
|
||||
private Context mContext;
|
||||
private PowerManager mPowerManager;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = ApplicationProvider.getApplicationContext();
|
||||
mBatteryTipPolicy = spy(new BatteryTipPolicy(mContext));
|
||||
|
||||
mPolicy = spy(new BatteryTipPolicy(RuntimeEnvironment.application));
|
||||
mContext = RuntimeEnvironment.application;
|
||||
ReflectionHelpers.setField(mPolicy, "lowBatteryEnabled", true);
|
||||
mPowerManager = mContext.getSystemService(PowerManager.class);
|
||||
shadowOf(mPowerManager).setIsPowerSaveMode(false);
|
||||
|
||||
ReflectionHelpers.setField(mBatteryTipPolicy, "lowBatteryEnabled", true);
|
||||
mBatteryInfo.discharging = true;
|
||||
|
||||
mLowBatteryDetector =
|
||||
new LowBatteryDetector(
|
||||
mContext, mPolicy, mBatteryInfo, false /* isPowerSaveMode */);
|
||||
mLowBatteryDetector = new LowBatteryDetector(mContext, mBatteryTipPolicy, mBatteryInfo);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDetect_disabledByPolicy_tipInvisible() {
|
||||
ReflectionHelpers.setField(mPolicy, "lowBatteryEnabled", false);
|
||||
mLowBatteryDetector =
|
||||
new LowBatteryDetector(mContext, mPolicy, mBatteryInfo, true /* isPowerSaveMode */);
|
||||
public void detect_disabledByPolicy_tipInvisible() {
|
||||
ReflectionHelpers.setField(mBatteryTipPolicy, "lowBatteryEnabled", false);
|
||||
shadowOf(mPowerManager).setIsPowerSaveMode(true);
|
||||
mLowBatteryDetector = new LowBatteryDetector(mContext, mBatteryTipPolicy, mBatteryInfo);
|
||||
|
||||
assertThat(mLowBatteryDetector.detect().isVisible()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDetect_enabledByTest_tipNew() {
|
||||
ReflectionHelpers.setField(mPolicy, "testLowBatteryTip", true);
|
||||
public void detect_enabledByTest_tipNew() {
|
||||
ReflectionHelpers.setField(mBatteryTipPolicy, "testLowBatteryTip", true);
|
||||
|
||||
assertThat(mLowBatteryDetector.detect().getState()).isEqualTo(BatteryTip.StateType.NEW);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDetect_lowBattery_tipNew() {
|
||||
public void detect_lowBattery_tipNew() {
|
||||
mBatteryInfo.batteryLevel = 20;
|
||||
mBatteryInfo.remainingTimeUs = TimeUnit.DAYS.toMillis(1);
|
||||
|
||||
assertThat(mLowBatteryDetector.detect().getState()).isEqualTo(BatteryTip.StateType.NEW);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDetect_batterySaverOn_tipInvisible() {
|
||||
mLowBatteryDetector =
|
||||
new LowBatteryDetector(mContext, mPolicy, mBatteryInfo, true /* isPowerSaveMode */);
|
||||
public void detect_batterySaverOn_tipInvisible() {
|
||||
shadowOf(mPowerManager).setIsPowerSaveMode(true);
|
||||
mLowBatteryDetector = new LowBatteryDetector(mContext, mBatteryTipPolicy, mBatteryInfo);
|
||||
|
||||
assertThat(mLowBatteryDetector.detect().getState())
|
||||
.isEqualTo(BatteryTip.StateType.INVISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDetect_charging_tipInvisible() {
|
||||
public void detect_charging_tipInvisible() {
|
||||
mBatteryInfo.discharging = false;
|
||||
|
||||
assertThat(mLowBatteryDetector.detect().isVisible()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDetect_lowTimeEstimation_tipInvisible() {
|
||||
public void detect_lowTimeEstimation_tipInvisible() {
|
||||
mBatteryInfo.batteryLevel = 50;
|
||||
mBatteryInfo.remainingTimeUs = TimeUnit.MINUTES.toMillis(1);
|
||||
|
||||
assertThat(mLowBatteryDetector.detect().isVisible()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDetect_noEarlyWarning_tipInvisible() {
|
||||
public void detect_noEarlyWarning_tipInvisible() {
|
||||
mBatteryInfo.remainingTimeUs = TimeUnit.DAYS.toMicros(1);
|
||||
mBatteryInfo.batteryLevel = 100;
|
||||
|
||||
|
Reference in New Issue
Block a user