Update time format for the first timestamp on usage chartview.

- If usage data start from the time-change event rather than full-charged event
[Before] https://screenshot.googleplex.com/BokAvKHXmt2Mmwn
[After] https://screenshot.googleplex.com/8thpgVrVt8kqo37

Bug: 336423923
Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage
Change-Id: I66f8b384938f55852e28bd9f50d1a99c7fc9e41b
This commit is contained in:
mxyyiyi
2024-05-08 16:24:01 +08:00
parent f437bec1bc
commit 658bc03d4f
5 changed files with 103 additions and 35 deletions

View File

@@ -649,9 +649,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
private final class HourlyChartLabelTextGenerator extends BaseLabelTextGenerator private final class HourlyChartLabelTextGenerator extends BaseLabelTextGenerator
implements BatteryChartViewModel.LabelTextGenerator { implements BatteryChartViewModel.LabelTextGenerator {
private static final int FULL_CHARGE_BATTERY_LEVEL = 100; private boolean mIsStartTimestamp;
private boolean mIsFromFullCharge;
private long mFistTimestamp; private long mFistTimestamp;
private long mLatestTimestamp; private long mLatestTimestamp;
@@ -664,7 +662,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
long timestamp = timestamps.get(index); long timestamp = timestamps.get(index);
boolean showMinute = false; boolean showMinute = false;
if (Objects.equal(timestamp, mFistTimestamp)) { if (Objects.equal(timestamp, mFistTimestamp)) {
if (mIsFromFullCharge) { if (mIsStartTimestamp) {
showMinute = true; showMinute = true;
} else { } else {
// starts from 7 days ago // starts from 7 days ago
@@ -699,8 +697,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
@NonNull final BatteryLevelData batteryLevelData) { @NonNull final BatteryLevelData batteryLevelData) {
BatteryLevelData.PeriodBatteryLevelData firstDayLevelData = BatteryLevelData.PeriodBatteryLevelData firstDayLevelData =
batteryLevelData.getHourlyBatteryLevelsPerDay().get(0); batteryLevelData.getHourlyBatteryLevelsPerDay().get(0);
this.mIsFromFullCharge = this.mIsStartTimestamp = firstDayLevelData.isStartTimestamp();
firstDayLevelData.getLevels().get(0) == FULL_CHARGE_BATTERY_LEVEL;
this.mFistTimestamp = firstDayLevelData.getTimestamps().get(0); this.mFistTimestamp = firstDayLevelData.getTimestamps().get(0);
this.mLatestTimestamp = this.mLatestTimestamp =
getLast( getLast(

View File

@@ -28,6 +28,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.core.util.Preconditions; import androidx.core.util.Preconditions;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@@ -39,17 +40,24 @@ public final class BatteryLevelData {
private static final long MIN_SIZE = 2; private static final long MIN_SIZE = 2;
private static final long TIME_SLOT = DateUtils.HOUR_IN_MILLIS * 2; private static final long TIME_SLOT = DateUtils.HOUR_IN_MILLIS * 2;
// For testing only.
@VisibleForTesting @Nullable static Calendar sTestCalendar;
/** A container for the battery timestamp and level data. */ /** A container for the battery timestamp and level data. */
public static final class PeriodBatteryLevelData { public static final class PeriodBatteryLevelData {
// The length of mTimestamps and mLevels must be the same. mLevels[index] might be null when // The length of mTimestamps and mLevels must be the same. mLevels[index] might be null when
// there is no level data for the corresponding timestamp. // there is no level data for the corresponding timestamp.
private final List<Long> mTimestamps; private final List<Long> mTimestamps;
private final List<Integer> mLevels; private final List<Integer> mLevels;
private final boolean mIsStartTimestamp;
public PeriodBatteryLevelData( public PeriodBatteryLevelData(
@NonNull Map<Long, Integer> batteryLevelMap, @NonNull List<Long> timestamps) { @NonNull Map<Long, Integer> batteryLevelMap,
@NonNull List<Long> timestamps,
boolean isStartTimestamp) {
mTimestamps = timestamps; mTimestamps = timestamps;
mLevels = new ArrayList<>(timestamps.size()); mLevels = new ArrayList<>(timestamps.size());
mIsStartTimestamp = isStartTimestamp;
for (Long timestamp : timestamps) { for (Long timestamp : timestamps) {
mLevels.add( mLevels.add(
batteryLevelMap.containsKey(timestamp) batteryLevelMap.containsKey(timestamp)
@@ -66,6 +74,10 @@ public final class BatteryLevelData {
return mLevels; return mLevels;
} }
public boolean isStartTimestamp() {
return mIsStartTimestamp;
}
@Override @Override
public String toString() { public String toString() {
return String.format( return String.format(
@@ -105,14 +117,21 @@ public final class BatteryLevelData {
final List<Long> timestampList = new ArrayList<>(batteryLevelMap.keySet()); final List<Long> timestampList = new ArrayList<>(batteryLevelMap.keySet());
Collections.sort(timestampList); Collections.sort(timestampList);
final long minTimestamp = timestampList.get(0);
final long sixDaysAgoTimestamp =
DatabaseUtils.getTimestampSixDaysAgo(sTestCalendar != null ? sTestCalendar : null);
final boolean isStartTimestamp = minTimestamp > sixDaysAgoTimestamp;
final List<Long> dailyTimestamps = getDailyTimestamps(timestampList); final List<Long> dailyTimestamps = getDailyTimestamps(timestampList);
final List<List<Long>> hourlyTimestamps = getHourlyTimestamps(dailyTimestamps); final List<List<Long>> hourlyTimestamps = getHourlyTimestamps(dailyTimestamps);
mDailyBatteryLevels = new PeriodBatteryLevelData(batteryLevelMap, dailyTimestamps); mDailyBatteryLevels =
new PeriodBatteryLevelData(batteryLevelMap, dailyTimestamps, isStartTimestamp);
mHourlyBatteryLevelsPerDay = new ArrayList<>(hourlyTimestamps.size()); mHourlyBatteryLevelsPerDay = new ArrayList<>(hourlyTimestamps.size());
for (List<Long> hourlyTimestampsPerDay : hourlyTimestamps) { for (int i = 0; i < hourlyTimestamps.size(); i++) {
final List<Long> hourlyTimestampsPerDay = hourlyTimestamps.get(i);
mHourlyBatteryLevelsPerDay.add( mHourlyBatteryLevelsPerDay.add(
new PeriodBatteryLevelData(batteryLevelMap, hourlyTimestampsPerDay)); new PeriodBatteryLevelData(
batteryLevelMap, hourlyTimestampsPerDay, isStartTimestamp && i == 0));
} }
} }

View File

@@ -50,6 +50,7 @@ import android.widget.TextView;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -58,6 +59,7 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import java.util.Calendar;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
@@ -84,10 +86,13 @@ public final class BatteryChartPreferenceControllerTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
Locale.setDefault(new Locale("en_US")); Locale.setDefault(new Locale("en_US"));
org.robolectric.shadows.ShadowSettings.set24HourTimeFormat(false); org.robolectric.shadows.ShadowSettings.set24HourTimeFormat(false);
TimeZone.setDefault(TimeZone.getTimeZone("UTC")); final TimeZone timeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(timeZone);
DataProcessor.sTestSystemAppsPackageNames = Set.of(); DataProcessor.sTestSystemAppsPackageNames = Set.of();
mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest();
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
BatteryLevelData.sTestCalendar = Calendar.getInstance();
BatteryLevelData.sTestCalendar.setTimeZone(timeZone);
doReturn(mContext).when(mContext).getApplicationContext(); doReturn(mContext).when(mContext).getApplicationContext();
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
doReturn(true).when(mUserManager).isUserUnlocked(anyInt()); doReturn(true).when(mUserManager).isUserUnlocked(anyInt());
@@ -115,6 +120,11 @@ public final class BatteryChartPreferenceControllerTest {
new BatteryEntry.NameAndIcon("fakeName", /* icon= */ null, /* iconId= */ 1)); new BatteryEntry.NameAndIcon("fakeName", /* icon= */ null, /* iconId= */ 1));
} }
@After
public void tearDown() {
BatteryLevelData.sTestCalendar = null;
}
@Test @Test
public void onDestroy_activityIsChanging_clearBatteryEntryCache() { public void onDestroy_activityIsChanging_clearBatteryEntryCache() {
doReturn(true).when(mSettingsActivity).isChangingConfigurations(); doReturn(true).when(mSettingsActivity).isChangingConfigurations();
@@ -141,7 +151,8 @@ public final class BatteryChartPreferenceControllerTest {
reset(mHourlyChartView); reset(mHourlyChartView);
setupHourlyChartViewAnimationMock(); setupHourlyChartViewAnimationMock();
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(6)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 6, /* levelOffset= */ 0));
verify(mDailyChartView, atLeastOnce()).setVisibility(View.GONE); verify(mDailyChartView, atLeastOnce()).setVisibility(View.GONE);
// Ignore fast refresh ui from the data processor callback. // Ignore fast refresh ui from the data processor callback.
@@ -178,7 +189,8 @@ public final class BatteryChartPreferenceControllerTest {
BatteryChartViewModel.AxisLabelPosition.CENTER_OF_TRAPEZOIDS, BatteryChartViewModel.AxisLabelPosition.CENTER_OF_TRAPEZOIDS,
mBatteryChartPreferenceController.mDailyChartLabelTextGenerator); mBatteryChartPreferenceController.mDailyChartLabelTextGenerator);
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(60)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 60, /* levelOffset= */ 0));
verify(mDailyChartView, atLeastOnce()).setVisibility(View.VISIBLE); verify(mDailyChartView, atLeastOnce()).setVisibility(View.VISIBLE);
verify(mViewPropertyAnimator, atLeastOnce()).alpha(0f); verify(mViewPropertyAnimator, atLeastOnce()).alpha(0f);
@@ -283,7 +295,8 @@ public final class BatteryChartPreferenceControllerTest {
public void onBatteryLevelDataUpdate_oneDay_showHourlyChartOnly() { public void onBatteryLevelDataUpdate_oneDay_showHourlyChartOnly() {
doReturn(View.GONE).when(mHourlyChartView).getVisibility(); doReturn(View.GONE).when(mHourlyChartView).getVisibility();
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(6)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 6, /* levelOffset= */ 0));
verify(mChartSummaryTextView).setVisibility(View.VISIBLE); verify(mChartSummaryTextView).setVisibility(View.VISIBLE);
verify(mDailyChartView).setVisibility(View.GONE); verify(mDailyChartView).setVisibility(View.GONE);
@@ -295,7 +308,8 @@ public final class BatteryChartPreferenceControllerTest {
doReturn(View.GONE).when(mHourlyChartView).getVisibility(); doReturn(View.GONE).when(mHourlyChartView).getVisibility();
mBatteryChartPreferenceController.mDailyChartIndex = SELECTED_INDEX_ALL; mBatteryChartPreferenceController.mDailyChartIndex = SELECTED_INDEX_ALL;
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(60)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 60, /* levelOffset= */ 0));
verify(mChartSummaryTextView).setVisibility(View.VISIBLE); verify(mChartSummaryTextView).setVisibility(View.VISIBLE);
verify(mDailyChartView).setVisibility(View.VISIBLE); verify(mDailyChartView).setVisibility(View.VISIBLE);
@@ -307,7 +321,8 @@ public final class BatteryChartPreferenceControllerTest {
doReturn(View.GONE).when(mHourlyChartView).getVisibility(); doReturn(View.GONE).when(mHourlyChartView).getVisibility();
mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(60)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 60, /* levelOffset= */ 0));
verify(mChartSummaryTextView).setVisibility(View.VISIBLE); verify(mChartSummaryTextView).setVisibility(View.VISIBLE);
verify(mDailyChartView).setVisibility(View.VISIBLE); verify(mDailyChartView).setVisibility(View.VISIBLE);
@@ -379,7 +394,8 @@ public final class BatteryChartPreferenceControllerTest {
@Test @Test
public void selectedSlotText_selectAllDaysAllHours_returnNull() { public void selectedSlotText_selectAllDaysAllHours_returnNull() {
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(60)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 60, /* levelOffset= */ 0));
mBatteryChartPreferenceController.mDailyChartIndex = SELECTED_INDEX_ALL; mBatteryChartPreferenceController.mDailyChartIndex = SELECTED_INDEX_ALL;
mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL; mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL;
@@ -390,7 +406,8 @@ public final class BatteryChartPreferenceControllerTest {
@Test @Test
public void selectedSlotText_onlyOneDayDataSelectAllHours_returnNull() { public void selectedSlotText_onlyOneDayDataSelectAllHours_returnNull() {
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(6)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 6, /* levelOffset= */ 0));
mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL; mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL;
@@ -401,7 +418,8 @@ public final class BatteryChartPreferenceControllerTest {
@Test @Test
public void selectedSlotText_selectADayAllHours_onlyDayText() { public void selectedSlotText_selectADayAllHours_onlyDayText() {
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(60)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 60, /* levelOffset= */ 0));
mBatteryChartPreferenceController.mDailyChartIndex = 1; mBatteryChartPreferenceController.mDailyChartIndex = 1;
mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL; mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL;
@@ -412,7 +430,8 @@ public final class BatteryChartPreferenceControllerTest {
@Test @Test
public void selectedSlotText_onlyOneDayDataSelectAnHour_onlyHourText() { public void selectedSlotText_onlyOneDayDataSelectAnHour_onlyHourText() {
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(6)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 6, /* levelOffset= */ 0));
mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = 2; mBatteryChartPreferenceController.mHourlyChartIndex = 2;
@@ -426,7 +445,8 @@ public final class BatteryChartPreferenceControllerTest {
@Test @Test
public void selectedSlotText_SelectADayAnHour_dayAndHourText() { public void selectedSlotText_SelectADayAnHour_dayAndHourText() {
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(60)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 60, /* levelOffset= */ 0));
mBatteryChartPreferenceController.mDailyChartIndex = 1; mBatteryChartPreferenceController.mDailyChartIndex = 1;
mBatteryChartPreferenceController.mHourlyChartIndex = 8; mBatteryChartPreferenceController.mHourlyChartIndex = 8;
@@ -439,8 +459,9 @@ public final class BatteryChartPreferenceControllerTest {
} }
@Test @Test
public void selectedSlotText_selectFirstSlot_withMinuteText() { public void selectedSlotText_selectFirstSlotAfterFullCharged_withMinuteText() {
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(6)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 6, /* levelOffset= */ 0));
mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = 0; mBatteryChartPreferenceController.mHourlyChartIndex = 0;
@@ -452,9 +473,29 @@ public final class BatteryChartPreferenceControllerTest {
.isEqualTo("Battery level percentage from 100% to 99%"); .isEqualTo("Battery level percentage from 100% to 99%");
} }
@Test
public void selectedSlotText_selectFirstSlotAfterTimeUpdated_withMinuteText() {
BatteryLevelData batteryLevelData =
createBatteryLevelData(/* numOfHours= */ 6, /* levelOffset= */ 10);
assertThat(batteryLevelData.getHourlyBatteryLevelsPerDay().get(0).isStartTimestamp())
.isTrue();
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 6, /* levelOffset= */ 10));
mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = 0;
assertThat(mBatteryChartPreferenceController.getSlotInformation(false))
.isEqualTo("7:01 AM - 8 AM");
assertThat(mBatteryChartPreferenceController.getSlotInformation(true))
.isEqualTo("7:01 AM to 8 AM");
assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo())
.isEqualTo("Battery level percentage from 90% to 89%");
}
@Test @Test
public void selectedSlotText_selectLastSlot_withNowText() { public void selectedSlotText_selectLastSlot_withNowText() {
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(6)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 6, /* levelOffset= */ 0));
mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = 3; mBatteryChartPreferenceController.mHourlyChartIndex = 3;
@@ -468,7 +509,8 @@ public final class BatteryChartPreferenceControllerTest {
@Test @Test
public void selectedSlotText_selectOnlySlot_withMinuteAndNowText() { public void selectedSlotText_selectOnlySlot_withMinuteAndNowText() {
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(1)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 1, /* levelOffset= */ 0));
mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mDailyChartIndex = 0;
mBatteryChartPreferenceController.mHourlyChartIndex = 0; mBatteryChartPreferenceController.mHourlyChartIndex = 0;
@@ -493,7 +535,8 @@ public final class BatteryChartPreferenceControllerTest {
mBatteryChartPreferenceController.mHourlyChartIndex = -1; mBatteryChartPreferenceController.mHourlyChartIndex = -1;
mBatteryChartPreferenceController.onCreate(bundle); mBatteryChartPreferenceController.onCreate(bundle);
mBatteryChartPreferenceController.onBatteryLevelDataUpdate(createBatteryLevelData(25)); mBatteryChartPreferenceController.onBatteryLevelDataUpdate(
createBatteryLevelData(/* numOfHours= */ 25, /* levelOffset= */ 0));
assertThat(mBatteryChartPreferenceController.mDailyChartIndex) assertThat(mBatteryChartPreferenceController.mDailyChartIndex)
.isEqualTo(expectedDailyIndex); .isEqualTo(expectedDailyIndex);
@@ -503,7 +546,8 @@ public final class BatteryChartPreferenceControllerTest {
@Test @Test
public void getTotalHours_getExpectedResult() { public void getTotalHours_getExpectedResult() {
BatteryLevelData batteryLevelData = createBatteryLevelData(60); BatteryLevelData batteryLevelData =
createBatteryLevelData(/* numOfHours= */ 60, /* levelOffset= */ 0);
final int totalHour = BatteryChartPreferenceController.getTotalHours(batteryLevelData); final int totalHour = BatteryChartPreferenceController.getTotalHours(batteryLevelData);
@@ -516,10 +560,10 @@ public final class BatteryChartPreferenceControllerTest {
return 1619247600000L + index * DateUtils.HOUR_IN_MILLIS; return 1619247600000L + index * DateUtils.HOUR_IN_MILLIS;
} }
private static BatteryLevelData createBatteryLevelData(int numOfHours) { private static BatteryLevelData createBatteryLevelData(int numOfHours, int levelOffset) {
Map<Long, Integer> batteryLevelMap = new ArrayMap<>(); Map<Long, Integer> batteryLevelMap = new ArrayMap<>();
for (int index = 0; index < numOfHours; index += 2) { for (int index = 0; index < numOfHours; index += 2) {
final Integer level = 100 - index; final Integer level = 100 - index - levelOffset;
Long timestamp = generateTimestamp(index); Long timestamp = generateTimestamp(index);
if (index == 0) { if (index == 0) {
timestamp += DateUtils.MINUTE_IN_MILLIS; timestamp += DateUtils.MINUTE_IN_MILLIS;
@@ -529,6 +573,8 @@ public final class BatteryChartPreferenceControllerTest {
} }
long current = generateTimestamp(numOfHours - 1) + DateUtils.MINUTE_IN_MILLIS * 2; long current = generateTimestamp(numOfHours - 1) + DateUtils.MINUTE_IN_MILLIS * 2;
batteryLevelMap.put(current, 66); batteryLevelMap.put(current, 66);
BatteryLevelData.sTestCalendar.setTimeInMillis(current);
DataProcessor.sTestCurrentTimeMillis = current; DataProcessor.sTestCurrentTimeMillis = current;
return new BatteryLevelData(batteryLevelMap); return new BatteryLevelData(batteryLevelMap);
} }

View File

@@ -170,7 +170,8 @@ public final class DataProcessManagerTest {
final Map<Long, Integer> batteryLevelMap1 = final Map<Long, Integer> batteryLevelMap1 =
Map.of(timestamps1.get(0), 100, timestamps1.get(1), 100, timestamps1.get(2), 100); Map.of(timestamps1.get(0), 100, timestamps1.get(1), 100, timestamps1.get(2), 100);
hourlyBatteryLevelsPerDay.add( hourlyBatteryLevelsPerDay.add(
new BatteryLevelData.PeriodBatteryLevelData(batteryLevelMap1, timestamps1)); new BatteryLevelData.PeriodBatteryLevelData(
batteryLevelMap1, timestamps1, /* isStartTimestamp= */ false));
// Adds the day 2 data. // Adds the day 2 data.
hourlyBatteryLevelsPerDay.add(null); hourlyBatteryLevelsPerDay.add(null);
// Adds the day 3 data. // Adds the day 3 data.
@@ -178,7 +179,8 @@ public final class DataProcessManagerTest {
final Map<Long, Integer> batteryLevelMap2 = final Map<Long, Integer> batteryLevelMap2 =
Map.of(timestamps2.get(0), 100, timestamps2.get(1), 100); Map.of(timestamps2.get(0), 100, timestamps2.get(1), 100);
hourlyBatteryLevelsPerDay.add( hourlyBatteryLevelsPerDay.add(
new BatteryLevelData.PeriodBatteryLevelData(batteryLevelMap2, timestamps2)); new BatteryLevelData.PeriodBatteryLevelData(
batteryLevelMap2, timestamps2, /* isStartTimestamp= */ false));
// Fake current usage data. // Fake current usage data.
final UsageEvents.Event event1 = final UsageEvents.Event event1 =
getUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, /* timestamp= */ 1, packageName); getUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, /* timestamp= */ 1, packageName);

View File

@@ -209,7 +209,8 @@ public final class DataProcessorTest {
final Map<Long, Integer> batteryLevelMap1 = final Map<Long, Integer> batteryLevelMap1 =
Map.of(timestamps1.get(0), 100, timestamps1.get(1), 100, timestamps1.get(2), 100); Map.of(timestamps1.get(0), 100, timestamps1.get(1), 100, timestamps1.get(2), 100);
hourlyBatteryLevelsPerDay.add( hourlyBatteryLevelsPerDay.add(
new BatteryLevelData.PeriodBatteryLevelData(batteryLevelMap1, timestamps1)); new BatteryLevelData.PeriodBatteryLevelData(
batteryLevelMap1, timestamps1, /* isStartTimestamp= */ false));
// Adds the day 2 data. // Adds the day 2 data.
hourlyBatteryLevelsPerDay.add(null); hourlyBatteryLevelsPerDay.add(null);
// Adds the day 3 data. // Adds the day 3 data.
@@ -217,7 +218,8 @@ public final class DataProcessorTest {
final Map<Long, Integer> batteryLevelMap2 = final Map<Long, Integer> batteryLevelMap2 =
Map.of(timestamps2.get(0), 100, timestamps2.get(1), 100); Map.of(timestamps2.get(0), 100, timestamps2.get(1), 100);
hourlyBatteryLevelsPerDay.add( hourlyBatteryLevelsPerDay.add(
new BatteryLevelData.PeriodBatteryLevelData(batteryLevelMap2, timestamps2)); new BatteryLevelData.PeriodBatteryLevelData(
batteryLevelMap2, timestamps2, /* isStartTimestamp= */ false));
final List<AppUsageEvent> appUsageEventList = new ArrayList<>(); final List<AppUsageEvent> appUsageEventList = new ArrayList<>();
// Adds some events before the start timestamp. // Adds some events before the start timestamp.
appUsageEventList.add( appUsageEventList.add(
@@ -365,7 +367,8 @@ public final class DataProcessorTest {
final List<BatteryLevelData.PeriodBatteryLevelData> hourlyBatteryLevelsPerDay = final List<BatteryLevelData.PeriodBatteryLevelData> hourlyBatteryLevelsPerDay =
new ArrayList<>(); new ArrayList<>();
hourlyBatteryLevelsPerDay.add( hourlyBatteryLevelsPerDay.add(
new BatteryLevelData.PeriodBatteryLevelData(new ArrayMap<>(), new ArrayList<>())); new BatteryLevelData.PeriodBatteryLevelData(
new ArrayMap<>(), new ArrayList<>(), /* isStartTimestamp= */ false));
assertThat( assertThat(
DataProcessor.generateAppUsagePeriodMap( DataProcessor.generateAppUsagePeriodMap(
mContext, mContext,
@@ -858,7 +861,8 @@ public final class DataProcessorTest {
new ArrayList<>(); new ArrayList<>();
hourlyBatteryLevelsPerDay.add( hourlyBatteryLevelsPerDay.add(
new BatteryLevelData.PeriodBatteryLevelData(new ArrayMap<>(), new ArrayList<>())); new BatteryLevelData.PeriodBatteryLevelData(
new ArrayMap<>(), new ArrayList<>(), /* isStartTimestamp= */ false));
assertThat( assertThat(
DataProcessor.getBatteryDiffDataMap( DataProcessor.getBatteryDiffDataMap(