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 17package com.android.systemui; 18 19import com.android.settingslib.graph.BatteryMeterDrawableBase; 20 21import 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 31import android.content.res.Resources; 32import android.graphics.Canvas; 33import android.support.test.runner.AndroidJUnit4; 34import android.test.suitebuilder.annotation.SmallTest; 35 36import org.junit.Before; 37import org.junit.Test; 38import org.junit.runner.RunWith; 39 40@SmallTest 41@RunWith(AndroidJUnit4.class) 42public class BatteryMeterDrawableTest extends SysuiTestCase { 43 44 private Resources mResources; 45 private BatteryMeterDrawableBase mBatteryMeter; 46 47 @Before 48 public void setUp() throws Exception { 49 mResources = mContext.getResources(); 50 mBatteryMeter = new BatteryMeterDrawableBase(mContext, 0); 51 } 52 53 @Test 54 public void testDrawImageButNoTextIfPluggedIn() { 55 mBatteryMeter.setBatteryLevel(0); 56 mBatteryMeter.setCharging(true); 57 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() { 65 mBatteryMeter.setBatteryLevel(0); 66 mBatteryMeter.setCharging(false); 67 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() { 74 mBatteryMeter.setBatteryLevel(0); 75 mBatteryMeter.setCharging(false); 76 mBatteryMeter.setPowerSave(true); 77 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); 86 mBatteryMeter.setBatteryLevel(criticalLevel); 87 mBatteryMeter.setCharging(false); 88 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); 98 mBatteryMeter.setBatteryLevel(criticalLevel + 1); 99 mBatteryMeter.setCharging(false); 100 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} 106