blob: e1f56a47e6413618e823887acb7863e1cbc2c1d9 [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
Dan Sandler055bb612017-02-08 16:21:49 -080019import com.android.settingslib.graph.BatteryMeterDrawableBase;
Jason Monke9789282016-11-09 08:59:56 -050020
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040021import static org.mockito.Mockito.any;
22import static org.mockito.Mockito.anyFloat;
23import static org.mockito.Mockito.anyString;
24import static org.mockito.Mockito.atLeastOnce;
25import static org.mockito.Mockito.eq;
26import static org.mockito.Mockito.mock;
27import static org.mockito.Mockito.never;
28import static org.mockito.Mockito.times;
29import static org.mockito.Mockito.verify;
30
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040031import android.content.res.Resources;
32import android.graphics.Canvas;
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040033import android.support.test.runner.AndroidJUnit4;
34import android.test.suitebuilder.annotation.SmallTest;
Jason Monke9789282016-11-09 08:59:56 -050035
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040036import org.junit.Before;
37import org.junit.Test;
38import org.junit.runner.RunWith;
39
40@SmallTest
41@RunWith(AndroidJUnit4.class)
Jason Monke9789282016-11-09 08:59:56 -050042public class BatteryMeterDrawableTest extends SysuiTestCase {
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040043
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040044 private Resources mResources;
Dan Sandler055bb612017-02-08 16:21:49 -080045 private BatteryMeterDrawableBase mBatteryMeter;
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040046
47 @Before
48 public void setUp() throws Exception {
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040049 mResources = mContext.getResources();
Dan Sandler055bb612017-02-08 16:21:49 -080050 mBatteryMeter = new BatteryMeterDrawableBase(mContext, 0);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040051 }
52
53 @Test
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040054 public void testDrawImageButNoTextIfPluggedIn() {
Dan Sandler055bb612017-02-08 16:21:49 -080055 mBatteryMeter.setBatteryLevel(0);
jackqdyuleiff5bd942017-04-04 10:54:21 -070056 mBatteryMeter.setCharging(true);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040057 final Canvas canvas = mock(Canvas.class);
58 mBatteryMeter.draw(canvas);
59 verify(canvas, atLeastOnce()).drawPath(any(), any());
60 verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any());
61 }
62
63 @Test
64 public void testDrawTextIfNotPluggedIn() {
Dan Sandler055bb612017-02-08 16:21:49 -080065 mBatteryMeter.setBatteryLevel(0);
jackqdyuleiff5bd942017-04-04 10:54:21 -070066 mBatteryMeter.setCharging(false);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040067 final Canvas canvas = mock(Canvas.class);
68 mBatteryMeter.draw(canvas);
69 verify(canvas, times(1)).drawText(anyString(), anyFloat(), anyFloat(), any());
70 }
71
72 @Test
73 public void testDrawNoTextIfPowerSaveEnabled() {
Dan Sandler055bb612017-02-08 16:21:49 -080074 mBatteryMeter.setBatteryLevel(0);
jackqdyuleiff5bd942017-04-04 10:54:21 -070075 mBatteryMeter.setCharging(false);
Dan Sandler055bb612017-02-08 16:21:49 -080076 mBatteryMeter.setPowerSave(true);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040077 final Canvas canvas = mock(Canvas.class);
78 mBatteryMeter.draw(canvas);
79 verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any());
80 }
81
82 @Test
83 public void testDrawTextWarningAtCriticalLevel() {
84 int criticalLevel = mResources.getInteger(
85 com.android.internal.R.integer.config_criticalBatteryWarningLevel);
Dan Sandler055bb612017-02-08 16:21:49 -080086 mBatteryMeter.setBatteryLevel(criticalLevel);
jackqdyuleiff5bd942017-04-04 10:54:21 -070087 mBatteryMeter.setCharging(false);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -040088 final Canvas canvas = mock(Canvas.class);
89 mBatteryMeter.draw(canvas);
90 String warningString = mResources.getString(R.string.battery_meter_very_low_overlay_symbol);
91 verify(canvas, times(1)).drawText(eq(warningString), anyFloat(), anyFloat(), any());
92 }
93
94 @Test
95 public void testDrawTextNoWarningAboveCriticalLevel() {
96 int criticalLevel = mResources.getInteger(
97 com.android.internal.R.integer.config_criticalBatteryWarningLevel);
Dan Sandler055bb612017-02-08 16:21:49 -080098 mBatteryMeter.setBatteryLevel(criticalLevel + 1);
jackqdyuleiff5bd942017-04-04 10:54:21 -070099 mBatteryMeter.setCharging(false);
Geoffrey Pitsch959ee222016-09-13 16:07:44 -0400100 final Canvas canvas = mock(Canvas.class);
101 mBatteryMeter.draw(canvas);
102 String warningString = mResources.getString(R.string.battery_meter_very_low_overlay_symbol);
103 verify(canvas, never()).drawText(eq(warningString), anyFloat(), anyFloat(), any());
104 }
105}