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 49 public void setUp() throws Exception { 50 mResources = mContext.getResources(); 51 mBatteryMeter = new BatteryMeterDrawableBase(mContext, 0); 52 } 53 54 @Test 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 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 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 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 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