OSDN Git Service

ca1cba38883708b656d0579717152b4df6e52103
[android-x86/packages-apps-Settings.git] / tests / robotests / src / com / android / settings / fuelgauge / batterytip / tips / HighUsageTipTest.java
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.settings.fuelgauge.batterytip.tips;
17
18 import static com.google.common.truth.Truth.assertThat;
19
20 import static org.mockito.Mockito.verify;
21
22 import android.content.Context;
23 import android.os.Parcel;
24 import android.text.format.DateUtils;
25
26 import com.android.internal.logging.nano.MetricsProto;
27 import com.android.settings.fuelgauge.batterytip.AppInfo;
28 import com.android.settings.testutils.SettingsRobolectricTestRunner;
29 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
30
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.junit.runner.RunWith;
34 import org.mockito.Mock;
35 import org.mockito.MockitoAnnotations;
36 import org.robolectric.RuntimeEnvironment;
37
38 import java.util.ArrayList;
39 import java.util.List;
40
41 @RunWith(SettingsRobolectricTestRunner.class)
42 public class HighUsageTipTest {
43
44     private static final String PACKAGE_NAME = "com.android.app";
45     private static final long SCREEN_TIME = 30 * DateUtils.MINUTE_IN_MILLIS;
46
47     @Mock
48     private MetricsFeatureProvider mMetricsFeatureProvider;
49     private Context mContext;
50     private HighUsageTip mBatteryTip;
51     private List<AppInfo> mUsageAppList;
52
53     @Before
54     public void setUp() {
55         MockitoAnnotations.initMocks(this);
56
57         mContext = RuntimeEnvironment.application;
58         mUsageAppList = new ArrayList<>();
59         mUsageAppList.add(new AppInfo.Builder()
60                 .setPackageName(PACKAGE_NAME)
61                 .setScreenOnTimeMs(SCREEN_TIME)
62                 .build());
63         mBatteryTip = new HighUsageTip(SCREEN_TIME, mUsageAppList);
64     }
65
66     @Test
67     public void testParcelable() {
68
69         Parcel parcel = Parcel.obtain();
70         mBatteryTip.writeToParcel(parcel, mBatteryTip.describeContents());
71         parcel.setDataPosition(0);
72
73         final HighUsageTip parcelTip = new HighUsageTip(parcel);
74
75         assertThat(parcelTip.getTitle(mContext)).isEqualTo("Phone used more than usual");
76         assertThat(parcelTip.getType()).isEqualTo(BatteryTip.TipType.HIGH_DEVICE_USAGE);
77         assertThat(parcelTip.getState()).isEqualTo(BatteryTip.StateType.NEW);
78         assertThat(parcelTip.getScreenTimeMs()).isEqualTo(SCREEN_TIME);
79         assertThat(parcelTip.mHighUsageAppList).isNotNull();
80         assertThat(parcelTip.mHighUsageAppList.size()).isEqualTo(1);
81         final AppInfo app = parcelTip.mHighUsageAppList.get(0);
82         assertThat(app.packageName).isEqualTo(PACKAGE_NAME);
83         assertThat(app.screenOnTimeMs).isEqualTo(SCREEN_TIME);
84     }
85
86     @Test
87     public void toString_containsAppData() {
88         assertThat(mBatteryTip.toString()).isEqualTo(
89                 "type=2 state=0 { packageName=com.android.app,anomalyTypes={},screenTime=1800000 "
90                         + "}");
91     }
92
93     @Test
94     public void testLog_logAppInfo() {
95         mBatteryTip.log(mContext, mMetricsFeatureProvider);
96         verify(mMetricsFeatureProvider).action(mContext,
97                 MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP, BatteryTip.StateType.NEW);
98
99         verify(mMetricsFeatureProvider).action(mContext,
100                 MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP_LIST,
101                 PACKAGE_NAME);
102     }
103 }