blob: d1573c3cac76f408433e9aa30481ba3ef9143bca [file] [log] [blame]
Geoffrey Pitsch959ee222016-09-13 16:07:44 -04001/*
2 * Copyright (C) 2016 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
17package com.android.systemui;
18
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040019import static org.mockito.Mockito.any;
20import static org.mockito.Mockito.anyFloat;
21import static org.mockito.Mockito.anyString;
22import static org.mockito.Mockito.atLeastOnce;
23import static org.mockito.Mockito.eq;
24import static org.mockito.Mockito.mock;
25import static org.mockito.Mockito.never;
26import static org.mockito.Mockito.times;
27import static org.mockito.Mockito.verify;
28
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040029import android.content.res.Resources;
30import android.graphics.Canvas;
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040031import android.test.suitebuilder.annotation.SmallTest;
Jason Monke9789282016-11-09 08:59:56 -050032
Brett Chabot84151d92019-02-27 15:37:59 -080033import androidx.test.runner.AndroidJUnit4;
34
35import com.android.settingslib.graph.BatteryMeterDrawableBase;
36
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040037import org.junit.Before;
38import org.junit.Test;
39import org.junit.runner.RunWith;
40
41@SmallTest
42@RunWith(AndroidJUnit4.class)
Jason Monke9789282016-11-09 08:59:56 -050043public class BatteryMeterDrawableTest extends SysuiTestCase {
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040044
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040045 private Resources mResources;
Dan Sandler055bb612017-02-08 16:21:49 -080046 private BatteryMeterDrawableBase mBatteryMeter;
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040047
48 @Before
49 public void setUp() throws Exception {
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040050 mResources = mContext.getResources();
Dan Sandler055bb612017-02-08 16:21:49 -080051 mBatteryMeter = new BatteryMeterDrawableBase(mContext, 0);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040052 }
53
54 @Test
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040055 public void testDrawImageButNoTextIfPluggedIn() {
Dan Sandler055bb612017-02-08 16:21:49 -080056 mBatteryMeter.setBatteryLevel(0);
jackqdyuleiff5bd942017-04-04 10:54:21 -070057 mBatteryMeter.setCharging(true);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040058 final Canvas canvas = mock(Canvas.class);
59 mBatteryMeter.draw(canvas);
60 verify(canvas, atLeastOnce()).drawPath(any(), any());
61 verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any());
62 }
63
64 @Test
65 public void testDrawTextIfNotPluggedIn() {
Dan Sandler055bb612017-02-08 16:21:49 -080066 mBatteryMeter.setBatteryLevel(0);
jackqdyuleiff5bd942017-04-04 10:54:21 -070067 mBatteryMeter.setCharging(false);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040068 final Canvas canvas = mock(Canvas.class);
69 mBatteryMeter.draw(canvas);
70 verify(canvas, times(1)).drawText(anyString(), anyFloat(), anyFloat(), any());
71 }
72
73 @Test
74 public void testDrawNoTextIfPowerSaveEnabled() {
Dan Sandler055bb612017-02-08 16:21:49 -080075 mBatteryMeter.setBatteryLevel(0);
jackqdyuleiff5bd942017-04-04 10:54:21 -070076 mBatteryMeter.setCharging(false);
Dan Sandler055bb612017-02-08 16:21:49 -080077 mBatteryMeter.setPowerSave(true);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040078 final Canvas canvas = mock(Canvas.class);
79 mBatteryMeter.draw(canvas);
80 verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any());
81 }
82
83 @Test
84 public void testDrawTextWarningAtCriticalLevel() {
85 int criticalLevel = mResources.getInteger(
86 com.android.internal.R.integer.config_criticalBatteryWarningLevel);
Dan Sandler055bb612017-02-08 16:21:49 -080087 mBatteryMeter.setBatteryLevel(criticalLevel);
jackqdyuleiff5bd942017-04-04 10:54:21 -070088 mBatteryMeter.setCharging(false);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040089 final Canvas canvas = mock(Canvas.class);
90 mBatteryMeter.draw(canvas);
91 String warningString = mResources.getString(R.string.battery_meter_very_low_overlay_symbol);
92 verify(canvas, times(1)).drawText(eq(warningString), anyFloat(), anyFloat(), any());
93 }
94
95 @Test
96 public void testDrawTextNoWarningAboveCriticalLevel() {
97 int criticalLevel = mResources.getInteger(
98 com.android.internal.R.integer.config_criticalBatteryWarningLevel);
Dan Sandler055bb612017-02-08 16:21:49 -080099 mBatteryMeter.setBatteryLevel(criticalLevel + 1);
jackqdyuleiff5bd942017-04-04 10:54:21 -0700100 mBatteryMeter.setCharging(false);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -0400101 final Canvas canvas = mock(Canvas.class);
102 mBatteryMeter.draw(canvas);
103 String warningString = mResources.getString(R.string.battery_meter_very_low_overlay_symbol);
104 verify(canvas, never()).drawText(eq(warningString), anyFloat(), anyFloat(), any());
105 }
106}