AdvancedPowerUsageDetailTest.java revision ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38
1ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei/* 2ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * Copyright (C) 2017 The Android Open Source Project 3ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * 4ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * Licensed under the Apache License, Version 2.0 (the "License"); 5ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * you may not use this file except in compliance with the License. 6ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * You may obtain a copy of the License at 7ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * 8ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * http://www.apache.org/licenses/LICENSE-2.0 9ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * 10ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * Unless required by applicable law or agreed to in writing, software 11ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * distributed under the License is distributed on an "AS IS" BASIS, 12ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * See the License for the specific language governing permissions and 14ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei * limitations under the License. 15ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei */ 16ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 17ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleipackage com.android.settings.fuelgauge; 18ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 19ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static com.google.common.truth.Truth.assertThat; 20ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 21ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport android.app.Fragment; 22ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport android.content.Context; 23ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport android.content.pm.ApplicationInfo; 24ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport android.graphics.drawable.Drawable; 25ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport android.os.BatteryStats; 26ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport android.os.Bundle; 27ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport android.os.UserHandle; 28ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport android.view.View; 29ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 30ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport com.android.internal.os.BatterySipper; 31ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport com.android.internal.os.BatteryStatsHelper; 32ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport com.android.settings.SettingsActivity; 33ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport com.android.settings.TestConfig; 34ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport com.android.settings.applications.AppHeaderController; 35ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport com.android.settings.applications.LayoutPreference; 36ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport com.android.settings.testutils.FakeFeatureFactory; 37ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport com.android.settingslib.applications.ApplicationsState; 38ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 39ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.junit.Before; 40ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.junit.Test; 41ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.junit.runner.RunWith; 42ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.mockito.Answers; 43ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.mockito.ArgumentCaptor; 44ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.mockito.Mock; 45ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.mockito.MockitoAnnotations; 46ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.mockito.invocation.InvocationOnMock; 47ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.mockito.stubbing.Answer; 48ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.robolectric.RobolectricTestRunner; 49ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.robolectric.annotation.Config; 50ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport org.robolectric.util.ReflectionHelpers; 51ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 52ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Matchers.anyLong; 53ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Matchers.anyInt; 54ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Matchers.any; 55ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Matchers.anyString; 56ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Matchers.eq; 57ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Mockito.doAnswer; 58ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Mockito.doReturn; 59ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Mockito.mock; 60ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Mockito.spy; 61ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleiimport static org.mockito.Mockito.verify; 62ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 63ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei@RunWith(RobolectricTestRunner.class) 64ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 65ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyuleipublic class AdvancedPowerUsageDetailTest { 66ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final String APP_LABEL = "app label"; 67ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final String SUMMARY = "summary"; 68ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final String[] PACKAGE_NAME = {"com.android.app"}; 69ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final String USAGE_PERCENT = "16"; 70ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final int ICON_ID = 123; 71ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final int UID = 1; 72ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final long BACKGROUND_TIME_US = 100 * 1000; 73ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final long FOREGROUND_TIME_US = 200 * 1000; 74ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final long BACKGROUND_TIME_MS = 100; 75ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private static final long FOREGROUND_TIME_MS = 200; 76ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 77ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock(answer = Answers.RETURNS_DEEP_STUBS) 78ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private Context mContext; 79ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 80ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private AppHeaderController mAppHeaderController; 81ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 82ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private LayoutPreference mHeaderPreference; 83ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 84ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private ApplicationsState mState; 85ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 86ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private ApplicationsState.AppEntry mAppEntry; 87ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 88ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private Drawable mIconDrawable; 89ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 90ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private Bundle mBundle; 91ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 92ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private BatteryEntry mBatteryEntry; 93ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 94ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private BatterySipper mBatterySipper; 95ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 96ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private BatteryStatsHelper mBatteryStatsHelper; 97ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Mock 98ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private BatteryStats.Uid mUid; 99ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private Bundle mTestBundle; 100ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private AdvancedPowerUsageDetail mFragment; 101ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private FakeFeatureFactory mFeatureFactory; 102ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei private SettingsActivity mTestActivity; 103ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 104ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Before 105ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei public void setUp() { 106ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei MockitoAnnotations.initMocks(this); 107ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei FakeFeatureFactory.setupForTest(mContext); 108ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); 109ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 110ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mFragment = spy(new AdvancedPowerUsageDetail()); 111ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(mContext).when(mFragment).getContext(); 112ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(SUMMARY).when(mFragment).getString(anyInt()); 113ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(APP_LABEL).when(mBundle).getString(anyString()); 114ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(mBundle).when(mFragment).getArguments(); 115ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 116ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(mAppHeaderController).when(mFeatureFactory.applicationFeatureProvider) 117ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei .newAppHeaderController(any(Fragment.class), any(View.class)); 118ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(mAppHeaderController).when(mAppHeaderController).setButtonActions(anyInt(), 119ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei anyInt()); 120ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(mAppHeaderController).when(mAppHeaderController).setIcon(any(Drawable.class)); 121ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(mAppHeaderController).when(mAppHeaderController).setIcon(any( 122ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei ApplicationsState.AppEntry.class)); 123ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(mAppHeaderController).when(mAppHeaderController).setLabel(anyString()); 124ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(mAppHeaderController).when(mAppHeaderController).setLabel(any( 125ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei ApplicationsState.AppEntry.class)); 126ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(mAppHeaderController).when(mAppHeaderController).setSummary(anyString()); 127ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 128ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 129ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(UID).when(mBatterySipper).getUid(); 130ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(APP_LABEL).when(mBatteryEntry).getLabel(); 131ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(BACKGROUND_TIME_US).when(mUid).getProcessStateTime( 132ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei eq(BatteryStats.Uid.PROCESS_STATE_BACKGROUND), anyLong(), anyInt()); 133ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doReturn(FOREGROUND_TIME_US).when(mUid).getProcessStateTime( 134ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei eq(BatteryStats.Uid.PROCESS_STATE_FOREGROUND), anyLong(), anyInt()); 135ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei ReflectionHelpers.setField(mBatteryEntry, "sipper", mBatterySipper); 136ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mBatteryEntry.iconId = ICON_ID; 137ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mBatterySipper.uidObj = mUid; 138ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 139ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mFragment.mHeaderPreference = mHeaderPreference; 140ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mFragment.mState = mState; 141ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mAppEntry.info = mock(ApplicationInfo.class); 142ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 143ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mTestActivity = spy(new SettingsActivity()); 144ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 145ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei final ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class); 146ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 147ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei Answer<Void> callable = new Answer<Void>() { 148ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Override 149ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei public Void answer(InvocationOnMock invocation) throws Exception { 150ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mBundle = captor.getValue(); 151ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei return null; 152ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei } 153ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei }; 154ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei doAnswer(callable).when(mTestActivity).startPreferencePanelAsUser(any(), anyString(), 155ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei captor.capture(), anyInt(), any(), any()); 156ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei } 157ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 158ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Test 159ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei public void testInitHeader_NoAppEntry_BuildByBundle() { 160ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mFragment.mAppEntry = null; 161ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mFragment.initHeader(); 162ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 163ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei verify(mAppHeaderController).setIcon(any(Drawable.class)); 164ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei verify(mAppHeaderController).setLabel(APP_LABEL); 165ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei } 166ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 167ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Test 168ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei public void testInitHeader_HasAppEntry_BuildByAppEntry() { 169ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mFragment.mAppEntry = mAppEntry; 170ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mFragment.initHeader(); 171ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 172ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei verify(mAppHeaderController).setIcon(mAppEntry); 173ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei verify(mAppHeaderController).setLabel(mAppEntry); 174ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei } 175ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 176ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Test 177ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei public void testStartBatteryDetailPage_hasBasicData() { 178ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, null, mBatteryStatsHelper, 0, 179ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mBatteryEntry, USAGE_PERCENT); 180ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 181ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID); 182ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME)).isEqualTo( 183ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei BACKGROUND_TIME_MS); 184ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME)).isEqualTo( 185ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei FOREGROUND_TIME_MS); 186ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT)).isEqualTo( 187ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei USAGE_PERCENT); 188ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei } 189ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 190ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Test 191ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei public void testStartBatteryDetailPage_NormalApp() { 192ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mBatterySipper.mPackages = PACKAGE_NAME; 193ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, null, mBatteryStatsHelper, 0, 194ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mBatteryEntry, USAGE_PERCENT); 195ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 196ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME)).isEqualTo( 197ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei PACKAGE_NAME[0]); 198ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei } 199ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 200ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei @Test 201ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei public void testStartBatteryDetailPage_SystemApp() { 202ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mBatterySipper.mPackages = null; 203ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, null, mBatteryStatsHelper, 0, 204ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei mBatteryEntry, USAGE_PERCENT); 205ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei 206ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_LABEL)).isEqualTo(APP_LABEL); 207ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_ICON_ID)).isEqualTo(ICON_ID); 208ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_PACKAGE_NAME)).isEqualTo(null); 209ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei } 210ddba96670048a07b98e5c1e0d9f3d9bd4ebe9b38jackqdyulei} 211