1 /*
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 
17 package com.android.systemui;
18 
19 import static org.mockito.Mockito.any;
20 import static org.mockito.Mockito.anyFloat;
21 import static org.mockito.Mockito.anyString;
22 import static org.mockito.Mockito.atLeastOnce;
23 import static org.mockito.Mockito.eq;
24 import static org.mockito.Mockito.mock;
25 import static org.mockito.Mockito.never;
26 import static org.mockito.Mockito.times;
27 import static org.mockito.Mockito.verify;
28 
29 import android.content.res.Resources;
30 import android.graphics.Canvas;
31 import android.test.suitebuilder.annotation.SmallTest;
32 
33 import androidx.test.runner.AndroidJUnit4;
34 
35 import com.android.settingslib.graph.BatteryMeterDrawableBase;
36 
37 import org.junit.Before;
38 import org.junit.Test;
39 import org.junit.runner.RunWith;
40 
41 @SmallTest
42 @RunWith(AndroidJUnit4.class)
43 public class BatteryMeterDrawableTest extends SysuiTestCase {
44 
45     private Resources mResources;
46     private BatteryMeterDrawableBase mBatteryMeter;
47 
48     @Before
setUp()49     public void setUp() throws Exception {
50         mResources = mContext.getResources();
51         mBatteryMeter = new BatteryMeterDrawableBase(mContext, 0);
52     }
53 
54     @Test
testDrawImageButNoTextIfPluggedIn()55     public void testDrawImageButNoTextIfPluggedIn() {
56         mBatteryMeter.setBatteryLevel(0);
57         mBatteryMeter.setCharging(true);
58         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
testDrawTextIfNotPluggedIn()65     public void testDrawTextIfNotPluggedIn() {
66         mBatteryMeter.setBatteryLevel(0);
67         mBatteryMeter.setCharging(false);
68         final Canvas canvas = mock(Canvas.class);
69         mBatteryMeter.draw(canvas);
70         verify(canvas, times(1)).drawText(anyString(), anyFloat(), anyFloat(), any());
71     }
72 
73     @Test
testDrawNoTextIfPowerSaveEnabled()74     public void testDrawNoTextIfPowerSaveEnabled() {
75         mBatteryMeter.setBatteryLevel(0);
76         mBatteryMeter.setCharging(false);
77         mBatteryMeter.setPowerSave(true);
78         final Canvas canvas = mock(Canvas.class);
79         mBatteryMeter.draw(canvas);
80         verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any());
81     }
82 
83     @Test
testDrawTextWarningAtCriticalLevel()84     public void testDrawTextWarningAtCriticalLevel() {
85         int criticalLevel = mResources.getInteger(
86                 com.android.internal.R.integer.config_criticalBatteryWarningLevel);
87         mBatteryMeter.setBatteryLevel(criticalLevel);
88         mBatteryMeter.setCharging(false);
89         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
testDrawTextNoWarningAboveCriticalLevel()96     public void testDrawTextNoWarningAboveCriticalLevel() {
97         int criticalLevel = mResources.getInteger(
98                 com.android.internal.R.integer.config_criticalBatteryWarningLevel);
99         mBatteryMeter.setBatteryLevel(criticalLevel + 1);
100         mBatteryMeter.setCharging(false);
101         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 }
107