Add test cases for utcToLocalTime in the ConvertUtils

Bug: 177406865
Bug: 185187729
Test: make SettingsRoboTests
Test: make SettingsGoogleRoboTests
Change-Id: I22bda2db821e69c40202db692ada52e96af25e16
This commit is contained in:
ykhung
2021-04-24 01:04:30 +08:00
parent 81399d6fec
commit ef6cea8c84
3 changed files with 47 additions and 16 deletions

View File

@@ -103,8 +103,8 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
return; return;
} }
// Sets the chart is clickable if there is at least one valid item in it. // Sets the chart is clickable if there is at least one valid item in it.
for (int index = 0; index < mLevels.length; index++) { for (int index = 0; index < mLevels.length - 1; index++) {
if (mLevels[index] != 0) { if (mLevels[index] != 0 && mLevels[index + 1] != 0) {
setClickable(true); setClickable(true);
break; break;
} }
@@ -155,6 +155,11 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
return; return;
} }
final int trapezoidIndex = getTrapezoidIndex(mTouchUpEvent.getX()); final int trapezoidIndex = getTrapezoidIndex(mTouchUpEvent.getX());
// Ignores the click event if the level is zero.
if (trapezoidIndex == SELECTED_INDEX_INVALID
|| (trapezoidIndex >= 0 && mLevels[trapezoidIndex] == 0)) {
return;
}
// Selects all if users click the same trapezoid item two times. // Selects all if users click the same trapezoid item two times.
if (trapezoidIndex == mSelectedIndex) { if (trapezoidIndex == mSelectedIndex) {
setSelectedIndex(SELECTED_INDEX_ALL); setSelectedIndex(SELECTED_INDEX_ALL);

View File

@@ -70,8 +70,12 @@ public final class ConvertUtils {
public static final int CONSUMER_TYPE_SYSTEM_BATTERY = 3; public static final int CONSUMER_TYPE_SYSTEM_BATTERY = 3;
private static String sZoneId; private static String sZoneId;
private static SimpleDateFormat sSimpleDateFormat; private static String sZoneIdForHour;
private static SimpleDateFormat sSimpleDateFormatForHour;
@VisibleForTesting
static SimpleDateFormat sSimpleDateFormat;
@VisibleForTesting
static SimpleDateFormat sSimpleDateFormatForHour;
private ConvertUtils() {} private ConvertUtils() {}
@@ -140,25 +144,19 @@ public final class ConvertUtils {
sZoneId = currentZoneId; sZoneId = currentZoneId;
sSimpleDateFormat = sSimpleDateFormat =
new SimpleDateFormat("MMM dd,yyyy HH:mm:ss", Locale.ENGLISH); new SimpleDateFormat("MMM dd,yyyy HH:mm:ss", Locale.ENGLISH);
sSimpleDateFormatForHour = null;
} }
return sSimpleDateFormat.format(new Date(timestamp)); return sSimpleDateFormat.format(new Date(timestamp));
} }
/** Converts UTC timestamp to local time hour data. */ /** Converts UTC timestamp to local time hour data. */
public static int utcToLocalTimeHour(long timestamp) { public static String utcToLocalTimeHour(long timestamp) {
final String currentZoneId = TimeZone.getDefault().getID(); final String currentZoneId = TimeZone.getDefault().getID();
if (!currentZoneId.equals(sZoneId) || sSimpleDateFormatForHour == null) { if (!currentZoneId.equals(sZoneIdForHour) || sSimpleDateFormatForHour == null) {
sZoneId = currentZoneId; sZoneIdForHour = currentZoneId;
sSimpleDateFormat = null; sSimpleDateFormatForHour = new SimpleDateFormat("h aa", Locale.ENGLISH);
sSimpleDateFormatForHour = new SimpleDateFormat("HH", Locale.ENGLISH);
}
try {
return Integer.parseInt(
sSimpleDateFormatForHour.format(new Date(timestamp)));
} catch (NumberFormatException e) {
return Integer.MIN_VALUE;
} }
return sSimpleDateFormatForHour.format(new Date(timestamp))
.toLowerCase(Locale.getDefault());
} }
/** Gets indexed battery usage data for each corresponding time slot. */ /** Gets indexed battery usage data for each corresponding time slot. */

View File

@@ -39,10 +39,12 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.TimeZone; import java.util.TimeZone;
@@ -254,6 +256,32 @@ public final class ConvertUtilsTest {
assertBatteryDiffEntry(entryList.get(0), 68, 40L, 50L); assertBatteryDiffEntry(entryList.get(0), 68, 40L, 50L);
} }
@Test
public void testUtcToLocalTime_returnExpectedResult() {
final long timestamp = 1619196786769L;
ConvertUtils.sSimpleDateFormat = null;
// Invokes the method first to create the SimpleDateFormat.
ConvertUtils.utcToLocalTime(/*timestamp=*/ 0);
ConvertUtils.sSimpleDateFormat
.setTimeZone(TimeZone.getTimeZone("GMT"));
assertThat(ConvertUtils.utcToLocalTime(timestamp))
.isEqualTo("Apr 23,2021 16:53:06");
}
@Test
public void testUtcToLocalTmeHour_returnExpectedResult() {
final long timestamp = 1619196786769L;
ConvertUtils.sSimpleDateFormatForHour = null;
// Invokes the method first to create the SimpleDateFormat.
ConvertUtils.utcToLocalTimeHour(/*timestamp=*/ 0);
ConvertUtils.sSimpleDateFormatForHour
.setTimeZone(TimeZone.getTimeZone("GMT"));
assertThat(ConvertUtils.utcToLocalTimeHour(timestamp))
.isEqualTo("4 pm");
}
private static BatteryHistEntry createBatteryHistEntry( private static BatteryHistEntry createBatteryHistEntry(
String packageName, String appLabel, double consumePower, String packageName, String appLabel, double consumePower,
long uid, long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) { long uid, long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) {