Fix b/265387286: The total percentage of all apps is not 100%
Bug: 265387286 Fix: 265387286 Test: manual Change-Id: I654f8211a45c818f9a2d4867ac679e72c9ce6eb1
This commit is contained in:
@@ -37,6 +37,7 @@ import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -58,26 +59,10 @@ public class BatteryDiffDataTest {
|
||||
|
||||
@Test
|
||||
public void needsCombineInSystemApp_isHidden_returnTrue() {
|
||||
final int currentUserId = mContext.getUserId();
|
||||
final BatteryHistEntry hiddenHistEntry = createBatteryHistEntry(
|
||||
ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 0,
|
||||
/*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
|
||||
/*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
|
||||
/*uid=*/ 0L, currentUserId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
||||
/*foregroundUsageTimeInMs=*/ 0L, /*backgroundUsageTimeInMs=*/ 0L, true);
|
||||
final BatteryDiffEntry hiddenDiffEntry = new BatteryDiffEntry(
|
||||
mContext,
|
||||
/*foregroundUsageTimeInMs=*/ 0,
|
||||
/*backgroundUsageTimeInMs=*/ 0,
|
||||
/*screenOnTimeInMs=*/ 0,
|
||||
/*consumePower=*/ 0,
|
||||
/*foregroundUsageConsumePower=*/ 0,
|
||||
/*foregroundServiceUsageConsumePower=*/ 0,
|
||||
/*backgroundUsageConsumePower=*/ 0,
|
||||
/*cachedUsageConsumePower=*/ 0,
|
||||
hiddenHistEntry);
|
||||
final BatteryDiffEntry hiddenDiffEntry =
|
||||
createBatteryDiffEntry(mContext, /*consumePower=*/ 0, /*isHidden=*/ true);
|
||||
|
||||
boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
||||
final boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
||||
hiddenDiffEntry, List.of(), Set.of());
|
||||
|
||||
assertThat(needsCombineInSystemApp).isTrue();
|
||||
@@ -85,29 +70,13 @@ public class BatteryDiffDataTest {
|
||||
|
||||
@Test
|
||||
public void needsCombineInSystemApp_isSystemApp_returnTrue() {
|
||||
final int currentUserId = mContext.getUserId();
|
||||
final BatteryHistEntry batteryHistEntry = createBatteryHistEntry(
|
||||
ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 0,
|
||||
/*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
|
||||
/*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
|
||||
/*uid=*/ 0L, currentUserId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
||||
/*foregroundUsageTimeInMs=*/ 0L, /*backgroundUsageTimeInMs=*/ 0L, false);
|
||||
final BatteryDiffEntry batteryDiffEntry = new BatteryDiffEntry(
|
||||
mContext,
|
||||
/*foregroundUsageTimeInMs=*/ 0,
|
||||
/*backgroundUsageTimeInMs=*/ 0,
|
||||
/*screenOnTimeInMs=*/ 0,
|
||||
/*consumePower=*/ 0,
|
||||
/*foregroundUsageConsumePower=*/ 0,
|
||||
/*foregroundServiceUsageConsumePower=*/ 0,
|
||||
/*backgroundUsageConsumePower=*/ 0,
|
||||
/*cachedUsageConsumePower=*/ 0,
|
||||
batteryHistEntry);
|
||||
final BatteryDiffEntry batteryDiffEntry =
|
||||
createBatteryDiffEntry(mContext, /*consumePower=*/ 0, /*isHidden=*/ false);
|
||||
doReturn(mAppEntry).when(mApplicationsState).getEntry(anyString(), anyInt());
|
||||
mAppEntry.info = mApplicationInfo;
|
||||
mApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
|
||||
|
||||
boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
||||
final boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
||||
batteryDiffEntry, List.of(), Set.of(ConvertUtils.FAKE_PACKAGE_NAME));
|
||||
|
||||
assertThat(needsCombineInSystemApp).isTrue();
|
||||
@@ -115,32 +84,78 @@ public class BatteryDiffDataTest {
|
||||
|
||||
@Test
|
||||
public void needsCombineInSystemApp_notSystemApp_returnFalse() {
|
||||
final int currentUserId = mContext.getUserId();
|
||||
final BatteryDiffEntry batteryDiffEntry =
|
||||
createBatteryDiffEntry(mContext, /*consumePower=*/ 0, /*isHidden=*/ false);
|
||||
doReturn(mAppEntry).when(mApplicationsState).getEntry(anyString(), anyInt());
|
||||
mAppEntry.info = mApplicationInfo;
|
||||
mApplicationInfo.flags = 0;
|
||||
|
||||
final boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
||||
batteryDiffEntry, List.of(), Set.of());
|
||||
|
||||
assertThat(needsCombineInSystemApp).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void processPercentsAndSort_sumLessThan100_adjustTo100() {
|
||||
List<BatteryDiffEntry> batteryDiffEntries = new ArrayList<>();
|
||||
batteryDiffEntries.add(
|
||||
createBatteryDiffEntry(mContext, /*consumePower=*/ 33.33, /*isHidden=*/ false));
|
||||
batteryDiffEntries.add(
|
||||
createBatteryDiffEntry(mContext, /*consumePower=*/ 33.34, /*isHidden=*/ false));
|
||||
batteryDiffEntries.add(
|
||||
createBatteryDiffEntry(mContext, /*consumePower=*/ 33.33, /*isHidden=*/ false));
|
||||
|
||||
BatteryDiffData.processAndSortEntries(batteryDiffEntries);
|
||||
|
||||
assertThat(batteryDiffEntries.get(0).getPercentage()).isEqualTo(33.34);
|
||||
assertThat(batteryDiffEntries.get(0).getAdjustPercentageOffset()).isEqualTo(1);
|
||||
assertThat(batteryDiffEntries.get(1).getPercentage()).isEqualTo(33.33);
|
||||
assertThat(batteryDiffEntries.get(1).getAdjustPercentageOffset()).isEqualTo(0);
|
||||
assertThat(batteryDiffEntries.get(2).getPercentage()).isEqualTo(33.33);
|
||||
assertThat(batteryDiffEntries.get(2).getAdjustPercentageOffset()).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void processPercentsAndSort_sumGreaterThan100_adjustTo100() {
|
||||
List<BatteryDiffEntry> batteryDiffEntries = new ArrayList<>();
|
||||
batteryDiffEntries.add(
|
||||
createBatteryDiffEntry(mContext, /*consumePower=*/ 48.5, /*isHidden=*/ false));
|
||||
batteryDiffEntries.add(
|
||||
createBatteryDiffEntry(mContext, /*consumePower=*/ 3, /*isHidden=*/ false));
|
||||
batteryDiffEntries.add(
|
||||
createBatteryDiffEntry(mContext, /*consumePower=*/ 48.5, /*isHidden=*/ false));
|
||||
|
||||
BatteryDiffData.processAndSortEntries(batteryDiffEntries);
|
||||
|
||||
assertThat(batteryDiffEntries.get(0).getPercentage()).isEqualTo(48.5);
|
||||
assertThat(batteryDiffEntries.get(0).getAdjustPercentageOffset()).isEqualTo(0);
|
||||
assertThat(batteryDiffEntries.get(1).getPercentage()).isEqualTo(48.5);
|
||||
assertThat(batteryDiffEntries.get(1).getAdjustPercentageOffset()).isEqualTo(-1);
|
||||
assertThat(batteryDiffEntries.get(2).getPercentage()).isEqualTo(3);
|
||||
assertThat(batteryDiffEntries.get(2).getAdjustPercentageOffset()).isEqualTo(0);
|
||||
}
|
||||
|
||||
private static BatteryDiffEntry createBatteryDiffEntry(
|
||||
Context context, double consumePower, boolean isHidden) {
|
||||
final int currentUserId = context.getUserId();
|
||||
final BatteryHistEntry batteryHistEntry = createBatteryHistEntry(
|
||||
ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 0,
|
||||
ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", consumePower,
|
||||
/*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
|
||||
/*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
|
||||
/*uid=*/ 0L, currentUserId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
||||
/*foregroundUsageTimeInMs=*/ 0L, /*backgroundUsageTimeInMs=*/ 0L, false);
|
||||
final BatteryDiffEntry batteryDiffEntry = new BatteryDiffEntry(
|
||||
mContext,
|
||||
/*foregroundUsageTimeInMs=*/ 0L, /*backgroundUsageTimeInMs=*/ 0L, isHidden);
|
||||
return new BatteryDiffEntry(
|
||||
context,
|
||||
/*foregroundUsageTimeInMs=*/ 0,
|
||||
/*backgroundUsageTimeInMs=*/ 0,
|
||||
/*screenOnTimeInMs=*/ 0,
|
||||
/*consumePower=*/ 0,
|
||||
/*consumePower=*/ consumePower,
|
||||
/*foregroundUsageConsumePower=*/ 0,
|
||||
/*foregroundServiceUsageConsumePower=*/ 0,
|
||||
/*backgroundUsageConsumePower=*/ 0,
|
||||
/*cachedUsageConsumePower=*/ 0,
|
||||
batteryHistEntry);
|
||||
doReturn(mAppEntry).when(mApplicationsState).getEntry(anyString(), anyInt());
|
||||
mAppEntry.info = mApplicationInfo;
|
||||
mApplicationInfo.flags = 0;
|
||||
|
||||
boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
||||
batteryDiffEntry, List.of(), Set.of());
|
||||
|
||||
assertThat(needsCombineInSystemApp).isFalse();
|
||||
}
|
||||
|
||||
private static BatteryHistEntry createBatteryHistEntry(
|
||||
|
@@ -106,7 +106,7 @@ public final class BatteryDiffEntryTest {
|
||||
/*batteryHistEntry=*/ null);
|
||||
entry.setTotalConsumePower(100.0);
|
||||
|
||||
assertThat(entry.getPercentOfTotal()).isEqualTo(22.0);
|
||||
assertThat(entry.getPercentage()).isEqualTo(22.0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -125,21 +125,28 @@ public final class BatteryDiffEntryTest {
|
||||
/*batteryHistEntry=*/ null);
|
||||
entry.setTotalConsumePower(0);
|
||||
|
||||
assertThat(entry.getPercentOfTotal()).isEqualTo(0);
|
||||
assertThat(entry.getPercentage()).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testComparator_sortCollectionsInDescOrder() {
|
||||
final List<BatteryDiffEntry> entryList = new ArrayList<>();
|
||||
// Generates fake testing data.
|
||||
BatteryDiffEntry systemAppsBatteryDiffEntry =
|
||||
new BatteryDiffEntry.SystemAppsBatteryDiffEntry(mContext);
|
||||
systemAppsBatteryDiffEntry.mConsumePower = 16;
|
||||
systemAppsBatteryDiffEntry.setTotalConsumePower(100);
|
||||
entryList.add(systemAppsBatteryDiffEntry);
|
||||
entryList.add(createBatteryDiffEntry(30, mBatteryHistEntry));
|
||||
entryList.add(createBatteryDiffEntry(20, mBatteryHistEntry));
|
||||
entryList.add(createBatteryDiffEntry(10, mBatteryHistEntry));
|
||||
|
||||
Collections.sort(entryList, BatteryDiffEntry.COMPARATOR);
|
||||
|
||||
assertThat(entryList.get(0).getPercentOfTotal()).isEqualTo(30);
|
||||
assertThat(entryList.get(1).getPercentOfTotal()).isEqualTo(20);
|
||||
assertThat(entryList.get(2).getPercentOfTotal()).isEqualTo(10);
|
||||
assertThat(entryList.get(0).getPercentage()).isEqualTo(30);
|
||||
assertThat(entryList.get(1).getPercentage()).isEqualTo(20);
|
||||
assertThat(entryList.get(2).getPercentage()).isEqualTo(10);
|
||||
assertThat(entryList.get(3).getPercentage()).isEqualTo(16);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -234,6 +234,40 @@ public final class BatteryUsageBreakdownControllerTest {
|
||||
/* percentage of total */ 100);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPreferencePercent_lessThanThreshold_expectedFormat() {
|
||||
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
||||
final BatteryDiffEntry batteryDiffEntry = createBatteryDiffEntry(
|
||||
/*isSystem=*/ true,
|
||||
/*screenOnTimeInMs=*/ 0,
|
||||
/*foregroundUsageTimeInMs=*/ 0,
|
||||
/*backgroundUsageTimeInMs=*/ 0);
|
||||
batteryDiffEntry.mConsumePower = 0.8;
|
||||
batteryDiffEntry.setTotalConsumePower(100);
|
||||
mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%";
|
||||
|
||||
mBatteryUsageBreakdownController.setPreferencePercentage(pref, batteryDiffEntry);
|
||||
|
||||
assertThat(pref.getPercentage()).isEqualTo("< 1%");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPreferencePercent_greaterThanThreshold_expectedFormat() {
|
||||
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
||||
final BatteryDiffEntry batteryDiffEntry = createBatteryDiffEntry(
|
||||
/*isSystem=*/ true,
|
||||
/*screenOnTimeInMs=*/ 0,
|
||||
/*foregroundUsageTimeInMs=*/ 0,
|
||||
/*backgroundUsageTimeInMs=*/ 0);
|
||||
batteryDiffEntry.mConsumePower = 16;
|
||||
batteryDiffEntry.setTotalConsumePower(100);
|
||||
mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%";
|
||||
|
||||
mBatteryUsageBreakdownController.setPreferencePercentage(pref, batteryDiffEntry);
|
||||
|
||||
assertThat(pref.getPercentage()).isEqualTo("16%");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPreferenceSummary_systemEntryTotalUsageTimeIsZero_emptySummary() {
|
||||
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
||||
|
@@ -1993,7 +1993,7 @@ public final class DataProcessorTest {
|
||||
assertThat(entry.mBatteryHistEntry.mUserId).isEqualTo(userId);
|
||||
assertThat(entry.mBatteryHistEntry.mUid).isEqualTo(uid);
|
||||
assertThat(entry.mBatteryHistEntry.mConsumerType).isEqualTo(consumerType);
|
||||
assertThat(entry.getPercentOfTotal()).isEqualTo(consumePercentage);
|
||||
assertThat(entry.getPercentage()).isEqualTo(consumePercentage);
|
||||
assertThat(entry.mForegroundUsageConsumePower).isEqualTo(foregroundUsageConsumePower);
|
||||
assertThat(entry.mForegroundServiceUsageConsumePower)
|
||||
.isEqualTo(foregroundServiceUsageConsumePower);
|
||||
|
@@ -65,15 +65,6 @@ public class PowerGaugePreferenceTest {
|
||||
assertThat(mPowerGaugePreference.getLayoutResource()).isEqualTo(R.layout.preference_app);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnBindViewHolder_bindSubtitle() {
|
||||
mPowerGaugePreference.setSubtitle(SUBTITLE);
|
||||
mPowerGaugePreference.onBindViewHolder(mPreferenceViewHolder);
|
||||
|
||||
TextView widgetSummary = (TextView) mPreferenceViewHolder.findViewById(R.id.widget_summary);
|
||||
assertThat(widgetSummary.getText()).isEqualTo(SUBTITLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnBindViewHolder_showAnomaly_bindAnomalyIcon() {
|
||||
mPowerGaugePreference.shouldShowAnomalyIcon(true);
|
||||
@@ -104,18 +95,4 @@ public class PowerGaugePreferenceTest {
|
||||
assertThat(mPreferenceViewHolder.findViewById(android.R.id.title).getContentDescription())
|
||||
.isEqualTo(CONTENT_DESCRIPTION);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPercent_greaterThanThreshold_showNumber() {
|
||||
mPowerGaugePreference.setPercent(99.5);
|
||||
|
||||
assertThat(mPowerGaugePreference.getPercent()).isEqualTo("100%");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPercent_lessThanThreshold_showBar() {
|
||||
mPowerGaugePreference.setPercent(0.95);
|
||||
|
||||
assertThat(mPowerGaugePreference.getPercent()).isEqualTo("-");
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user