Merge changes I7771a43b,If613c5cf into sc-dev am: 1871275fbf

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/14160593

Change-Id: If2786b42478ac86f43be32d63babc335a384e772
This commit is contained in:
YUKAI HUNG
2021-04-13 06:53:22 +00:00
committed by Automerger Merge Worker
6 changed files with 400 additions and 4 deletions

View File

@@ -0,0 +1,52 @@
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge;
import static com.google.common.truth.Truth.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public final class BatteryDiffEntryTest {
@Test
public void testSetTotalConsumePower_returnExpectedResult() {
final BatteryDiffEntry entry =
new BatteryDiffEntry(
/*foregroundUsageTimeInMs=*/ 10001L,
/*backgroundUsageTimeInMs=*/ 20002L,
/*consumePower=*/ 22.0,
/*batteryHistEntry=*/ null);
entry.setTotalConsumePower(100.0);
assertThat(entry.getPercentOfTotal()).isEqualTo(22.0);
}
@Test
public void testSetTotalConsumePower_setZeroValue_returnsZeroValue() {
final BatteryDiffEntry entry =
new BatteryDiffEntry(
/*foregroundUsageTimeInMs=*/ 10001L,
/*backgroundUsageTimeInMs=*/ 20002L,
/*consumePower=*/ 22.0,
/*batteryHistEntry=*/ null);
entry.setTotalConsumePower(0);
assertThat(entry.getPercentOfTotal()).isEqualTo(0);
}
}

View File

@@ -161,5 +161,7 @@ public final class BatteryHistEntryTest {
.isEqualTo(BatteryManager.BATTERY_STATUS_FULL);
assertThat(entry.mBatteryHealth)
.isEqualTo(BatteryManager.BATTERY_HEALTH_COLD);
assertThat(entry.getKey())
.isEqualTo("com.google.android.settings.battery-" + entry.mUserId);
}
}

View File

@@ -37,6 +37,11 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
@RunWith(RobolectricTestRunner.class)
@@ -165,4 +170,84 @@ public final class ConvertUtilsTest {
assertThat(ConvertUtils.getConsumerType(mockBatteryConsumer))
.isEqualTo(ConvertUtils.CONSUMER_TYPE_UNKNOWN);
}
@Test
public void testGetIndexedUsageMap_returnsExpectedResult() {
// Creates the fake testing data.
final int timeSlotSize = 2;
final long[] batteryHistoryKeys = new long[] {101L, 102L, 103L, 104L, 105L};
final Map<Long, List<BatteryHistEntry>> batteryHistoryMap = new HashMap<>();
batteryHistoryMap.put(
Long.valueOf(batteryHistoryKeys[0]),
Arrays.asList(
createBatteryHistEntry(
"package1", "label1", 5.0, 1L, 10L, 20L)));
batteryHistoryMap.put(
Long.valueOf(batteryHistoryKeys[1]), new ArrayList<BatteryHistEntry>());
batteryHistoryMap.put(
Long.valueOf(batteryHistoryKeys[2]),
Arrays.asList(
createBatteryHistEntry(
"package2", "label2", 10.0, 2L, 15L, 25L)));
batteryHistoryMap.put(
Long.valueOf(batteryHistoryKeys[3]),
Arrays.asList(
createBatteryHistEntry(
"package2", "label2", 15.0, 2L, 25L, 35L),
createBatteryHistEntry(
"package3", "label3", 5.0, 2L, 5L, 5L)));
batteryHistoryMap.put(
Long.valueOf(batteryHistoryKeys[4]),
Arrays.asList(
createBatteryHistEntry(
"package2", "label2", 30.0, 2L, 30L, 40L),
createBatteryHistEntry(
"package2", "label2", 75.0, 3L, 40L, 50L),
createBatteryHistEntry(
"package3", "label3", 5.0, 2L, 5L, 5L)));
final Map<Integer, List<BatteryDiffEntry>> resultMap =
ConvertUtils.getIndexedUsageMap(
timeSlotSize, batteryHistoryKeys, batteryHistoryMap);
assertThat(resultMap).hasSize(3);
// Verifies the first timestamp result.
List<BatteryDiffEntry> entryList = resultMap.get(Integer.valueOf(0));
assertThat(entryList).hasSize(1);
assertBatteryDiffEntry(entryList.get(0), 100, 15L, 25L);
// Verifies the second timestamp result.
entryList = resultMap.get(Integer.valueOf(1));
assertThat(entryList).hasSize(3);
assertBatteryDiffEntry(entryList.get(0), 5, 5L, 5L);
assertBatteryDiffEntry(entryList.get(1), 75, 40L, 50L);
assertBatteryDiffEntry(entryList.get(2), 20, 15L, 15L);
// Verifies the last 24 hours aggregate result.
entryList = resultMap.get(Integer.valueOf(-1));
assertThat(entryList).hasSize(3);
assertBatteryDiffEntry(entryList.get(0), 4, 5L, 5L);
assertBatteryDiffEntry(entryList.get(1), 68, 40L, 50L);
assertBatteryDiffEntry(entryList.get(2), 27, 30L, 40L);
}
private static BatteryHistEntry createBatteryHistEntry(
String packageName, String appLabel, double consumePower,
long userId, long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) {
// Only insert required fields.
final ContentValues values = new ContentValues();
values.put("packageName", packageName);
values.put("appLabel", appLabel);
values.put("userId", userId);
values.put("consumePower", consumePower);
values.put("foregroundUsageTimeInMs", foregroundUsageTimeInMs);
values.put("backgroundUsageTimeInMs", backgroundUsageTimeInMs);
return new BatteryHistEntry(values);
}
private static void assertBatteryDiffEntry(
BatteryDiffEntry entry, int percentOfTotal,
long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) {
assertThat((int) entry.getPercentOfTotal()).isEqualTo(percentOfTotal);
assertThat(entry.mForegroundUsageTimeInMs).isEqualTo(foregroundUsageTimeInMs);
assertThat(entry.mBackgroundUsageTimeInMs).isEqualTo(backgroundUsageTimeInMs);
}
}