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 32 import androidx.test.filters.SmallTest; 33 import androidx.test.runner.AndroidJUnit4; 34 35 import com.android.settingslib.R; 36 import com.android.settingslib.graph.BatteryMeterDrawableBase; 37 38 import org.junit.Before; 39 import org.junit.Test; 40 import org.junit.runner.RunWith; 41 42 @SmallTest 43 @RunWith(AndroidJUnit4.class) 44 public class BatteryMeterDrawableTest extends SysuiTestCase { 45 46 private Resources mResources; 47 private BatteryMeterDrawableBase mBatteryMeter; 48 49 @Before setUp()50 public void setUp() throws Exception { 51 mResources = mContext.getResources(); 52 mBatteryMeter = new BatteryMeterDrawableBase(mContext, 0); 53 } 54 55 @Test testDrawImageButNoTextIfPluggedIn()56 public void testDrawImageButNoTextIfPluggedIn() { 57 mBatteryMeter.setBatteryLevel(0); 58 mBatteryMeter.setCharging(true); 59 final Canvas canvas = mock(Canvas.class); 60 mBatteryMeter.draw(canvas); 61 verify(canvas, atLeastOnce()).drawPath(any(), any()); 62 verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any()); 63 } 64 65 @Test testDrawTextIfNotPluggedIn()66 public void testDrawTextIfNotPluggedIn() { 67 mBatteryMeter.setBatteryLevel(0); 68 mBatteryMeter.setCharging(false); 69 final Canvas canvas = mock(Canvas.class); 70 mBatteryMeter.draw(canvas); 71 verify(canvas, times(1)).drawText(anyString(), anyFloat(), anyFloat(), any()); 72 } 73 74 @Test testDrawNoTextIfPowerSaveEnabled()75 public void testDrawNoTextIfPowerSaveEnabled() { 76 mBatteryMeter.setBatteryLevel(0); 77 mBatteryMeter.setCharging(false); 78 mBatteryMeter.setPowerSave(true); 79 final Canvas canvas = mock(Canvas.class); 80 mBatteryMeter.draw(canvas); 81 verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any()); 82 } 83 84 @Test testDrawTextWarningAtCriticalLevel()85 public void testDrawTextWarningAtCriticalLevel() { 86 int criticalLevel = mResources.getInteger( 87 com.android.internal.R.integer.config_criticalBatteryWarningLevel); 88 mBatteryMeter.setBatteryLevel(criticalLevel); 89 mBatteryMeter.setCharging(false); 90 final Canvas canvas = mock(Canvas.class); 91 mBatteryMeter.draw(canvas); 92 String warningString = mResources.getString(R.string.battery_meter_very_low_overlay_symbol); 93 verify(canvas, times(1)).drawText(eq(warningString), anyFloat(), anyFloat(), any()); 94 } 95 96 @Test testDrawTextNoWarningAboveCriticalLevel()97 public void testDrawTextNoWarningAboveCriticalLevel() { 98 int criticalLevel = mResources.getInteger( 99 com.android.internal.R.integer.config_criticalBatteryWarningLevel); 100 mBatteryMeter.setBatteryLevel(criticalLevel + 1); 101 mBatteryMeter.setCharging(false); 102 final Canvas canvas = mock(Canvas.class); 103 mBatteryMeter.draw(canvas); 104 String warningString = mResources.getString(R.string.battery_meter_very_low_overlay_symbol); 105 verify(canvas, never()).drawText(eq(warningString), anyFloat(), anyFloat(), any()); 106 } 107 } 108