From 88d876318c47931289dcc67764705c4069555346 Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Fri, 14 Oct 2022 13:51:36 +0800 Subject: [PATCH] Fix broken battery usage Robolectric tests Bug: 248686898 Test: presubmit Change-Id: I4f09f9e5af57a62249970cc2170b60dab267488e Merged-In: I4f09f9e5af57a62249970cc2170b60dab267488e --- .../BatteryChartPreferenceControllerTest.java | 29 +++++++++++++- .../batteryusage/DataProcessorTest.java | 40 ++++++++++++++----- 2 files changed, 58 insertions(+), 11 deletions(-) diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java index 26e0f5074ed..4e552b941c0 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java @@ -18,6 +18,8 @@ package com.android.settings.fuelgauge.batteryusage; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.anyFloat; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeastOnce; @@ -36,6 +38,7 @@ import android.os.Bundle; import android.os.LocaleList; import android.text.format.DateUtils; import android.view.View; +import android.view.ViewPropertyAnimator; import android.widget.LinearLayout; import androidx.preference.Preference; @@ -85,6 +88,8 @@ public final class BatteryChartPreferenceControllerTest { @Mock private BatteryChartView mHourlyChartView; @Mock + private ViewPropertyAnimator mViewPropertyAnimator; + @Mock private PowerGaugePreference mPowerGaugePreference; @Mock private BatteryUtils mBatteryUtils; @@ -116,6 +121,7 @@ public final class BatteryChartPreferenceControllerTest { .when(mFeatureFactory.powerUsageFeatureProvider) .getHideApplicationEntries(mContext); doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams(); + setupHourlyChartViewAnimationMock(); mBatteryChartPreferenceController = createController(); mBatteryChartPreferenceController.mPrefContext = mContext; mBatteryChartPreferenceController.mAppListPrefGroup = mAppListGroup; @@ -174,11 +180,15 @@ public final class BatteryChartPreferenceControllerTest { @Test public void setBatteryChartViewModel_6Hours() { + reset(mDailyChartView); reset(mHourlyChartView); + setupHourlyChartViewAnimationMock(); + mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(6)); verify(mDailyChartView, atLeastOnce()).setVisibility(View.GONE); verify(mHourlyChartView, atLeastOnce()).setVisibility(View.VISIBLE); + verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f); // Ignore fast refresh ui from the data processor callback. verify(mHourlyChartView, atLeast(0)).setViewModel(null); verify(mHourlyChartView, atLeastOnce()).setViewModel(new BatteryChartViewModel( @@ -192,6 +202,10 @@ public final class BatteryChartPreferenceControllerTest { @Test public void setBatteryChartViewModel_60Hours() { + reset(mDailyChartView); + reset(mHourlyChartView); + setupHourlyChartViewAnimationMock(); + BatteryChartViewModel expectedDailyViewModel = new BatteryChartViewModel( List.of(100, 83, 59, 41), // "Sat", "Sun", "Mon", "Mon" @@ -205,16 +219,18 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(60)); verify(mDailyChartView, atLeastOnce()).setVisibility(View.VISIBLE); - verify(mHourlyChartView, atLeastOnce()).setVisibility(View.GONE); + verify(mViewPropertyAnimator, atLeastOnce()).alpha(0f); verify(mDailyChartView).setViewModel(expectedDailyViewModel); reset(mDailyChartView); reset(mHourlyChartView); + setupHourlyChartViewAnimationMock(); doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams(); mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.refreshUi(); verify(mDailyChartView).setVisibility(View.VISIBLE); verify(mHourlyChartView).setVisibility(View.VISIBLE); + verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f); expectedDailyViewModel.setSelectedIndex(0); verify(mDailyChartView).setViewModel(expectedDailyViewModel); @@ -234,12 +250,14 @@ public final class BatteryChartPreferenceControllerTest { reset(mDailyChartView); reset(mHourlyChartView); + setupHourlyChartViewAnimationMock(); doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams(); mBatteryChartPreferenceController.mDailyChartIndex = 1; mBatteryChartPreferenceController.mHourlyChartIndex = 6; mBatteryChartPreferenceController.refreshUi(); verify(mDailyChartView).setVisibility(View.VISIBLE); verify(mHourlyChartView).setVisibility(View.VISIBLE); + verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f); expectedDailyViewModel.setSelectedIndex(1); verify(mDailyChartView).setViewModel(expectedDailyViewModel); BatteryChartViewModel expectedHourlyViewModel = new BatteryChartViewModel( @@ -264,6 +282,7 @@ public final class BatteryChartPreferenceControllerTest { reset(mDailyChartView); reset(mHourlyChartView); + setupHourlyChartViewAnimationMock(); doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams(); mBatteryChartPreferenceController.mDailyChartIndex = 2; mBatteryChartPreferenceController.mHourlyChartIndex = @@ -271,6 +290,7 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.refreshUi(); verify(mDailyChartView).setVisibility(View.VISIBLE); verify(mHourlyChartView).setVisibility(View.VISIBLE); + verify(mViewPropertyAnimator, atLeastOnce()).alpha(1f); expectedDailyViewModel.setSelectedIndex(2); verify(mDailyChartView).setViewModel(expectedDailyViewModel); verify(mHourlyChartView).setViewModel(new BatteryChartViewModel( @@ -734,4 +754,11 @@ public final class BatteryChartPreferenceControllerTest { controller.mPrefContext = mContext; return controller; } + + private void setupHourlyChartViewAnimationMock() { + doReturn(mViewPropertyAnimator).when(mHourlyChartView).animate(); + doReturn(mViewPropertyAnimator).when(mViewPropertyAnimator).alpha(anyFloat()); + doReturn(mViewPropertyAnimator).when(mViewPropertyAnimator).setDuration(anyLong()); + doReturn(mViewPropertyAnimator).when(mViewPropertyAnimator).setListener(any()); + } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java index c4832041314..df9d8655109 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java @@ -579,9 +579,13 @@ public class DataProcessorTest { ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 25.0, /*foregroundUsageTimeInMs=*/ 50, /*backgroundUsageTimeInMs=*/ 60); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 3); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, + 3); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, + 0); } @Test @@ -674,9 +678,13 @@ public class DataProcessorTest { assertThat(resultMap.get(0).get(0)).isNotNull(); assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull(); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, + 2); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, + 0); } @Test @@ -739,9 +747,13 @@ public class DataProcessorTest { assertThat(resultMap.get(0).get(0)).isNotNull(); assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull(); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, + 1); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, + 0); } @Test @@ -814,9 +826,13 @@ public class DataProcessorTest { ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0, /*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 20); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, + 1); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 1); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, + 1); } @Test @@ -889,9 +905,13 @@ public class DataProcessorTest { resultEntry = resultDiffData.getAppDiffEntryList().get(1); assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, + 2); verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0); + .action(mContext.getApplicationContext(), + SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, + 0); } @Test