| package com.android.settingslib.graph; |
| |
| import android.content.Context; |
| import android.content.res.Resources; |
| import android.graphics.Canvas; |
| import android.graphics.Rect; |
| import android.support.test.InstrumentationRegistry; |
| import android.support.test.filters.SmallTest; |
| import android.support.test.runner.AndroidJUnit4; |
| import com.android.settingslib.R; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| |
| import static com.google.common.truth.Truth.assertThat; |
| import static junit.framework.Assert.assertTrue; |
| import static org.mockito.Matchers.any; |
| import static org.mockito.Matchers.anyFloat; |
| import static org.mockito.Matchers.anyString; |
| import static org.mockito.Mockito.mock; |
| import static org.mockito.Mockito.never; |
| import static org.mockito.Mockito.verify; |
| |
| @SmallTest |
| @RunWith(AndroidJUnit4.class) |
| public class BatteryMeterDrawableBaseTest { |
| private Context mContext; |
| private Resources mResources; |
| private BatteryMeterDrawableBase mBatteryDrawable; |
| |
| @Before |
| public void setUp() throws Exception { |
| mContext = InstrumentationRegistry.getTargetContext(); |
| mResources = mContext.getResources(); |
| mBatteryDrawable = new BatteryMeterDrawableBase(mContext, 0); |
| } |
| |
| @Test |
| public void testGetIntrinsicSize() { |
| assertThat(mBatteryDrawable.getIntrinsicWidth()). |
| isEqualTo(mResources.getDimensionPixelSize(R.dimen.battery_width)); |
| assertThat(mBatteryDrawable.getIntrinsicHeight()). |
| isEqualTo(mResources.getDimensionPixelSize(R.dimen.battery_height)); |
| } |
| |
| @Test |
| public void testDrawNothingBeforeOnBatteryLevelChanged() { |
| final Canvas canvas = mock(Canvas.class); |
| mBatteryDrawable.draw(canvas); |
| verify(canvas, never()).drawPath(any(), any()); |
| verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any()); |
| } |
| |
| @Test |
| public void testDrawingForTypicalValues() { |
| final Canvas canvas = mock(Canvas.class); |
| final int levels[] = { 0, 1, 5, 10, 25, 50, 75, 90, 95, 99, 100 }; |
| final boolean bools[] = { false, true }; |
| for (int l : levels) { |
| for (boolean charging : bools) { |
| for (boolean saver : bools) { |
| for (boolean percent : bools) { |
| mBatteryDrawable.setBatteryLevel(l); |
| mBatteryDrawable.setPowerSave(saver); |
| mBatteryDrawable.setCharging(charging); |
| mBatteryDrawable.setShowPercent(percent); |
| mBatteryDrawable.draw(canvas); |
| } |
| } |
| } |
| } |
| } |
| |
| @Test |
| public void testPadding_returnsCorrectValues() { |
| // different pads on each side to differentiate |
| final int left = 1; |
| final int top = 2; |
| final int right = 3; |
| final int bottom = 4; |
| |
| final Rect expected = new Rect(left, top, right, bottom); |
| final Rect padding = new Rect(); |
| |
| mBatteryDrawable.setPadding(left, top, right, bottom); |
| |
| assertThat(mBatteryDrawable.getPadding(padding)).isEqualTo(true); |
| assertThat(padding).isEqualTo(expected); |
| } |
| |
| @Test |
| public void testPadding_falseIfUnsetOrZero() { |
| final Rect padding = new Rect(); |
| assertThat(mBatteryDrawable.getPadding(padding)).isEqualTo(false); |
| assertThat(isRectZero(padding)).isEqualTo(true); |
| |
| mBatteryDrawable.setPadding(0, 0, 0, 0); |
| assertThat(mBatteryDrawable.getPadding(padding)).isEqualTo(false); |
| assertThat(isRectZero(padding)).isEqualTo(true); |
| } |
| |
| private boolean isRectZero(Rect r) { |
| return r.left == 0 && r.top == 0 && r.right == 0 && r.bottom == 0; |
| } |
| |
| @Test |
| public void testPlusPaint_isEqualToBoltPaint() { |
| // Before setting color |
| assertTrue(mBatteryDrawable.mPlusPaint.hasEqualAttributes(mBatteryDrawable.mBoltPaint)); |
| |
| final int fakeFillColor = 123; |
| final int fakeBackgrundColor = 456; |
| |
| // After |
| mBatteryDrawable.setColors(fakeFillColor, fakeBackgrundColor); |
| assertTrue(mBatteryDrawable.mPlusPaint.hasEqualAttributes(mBatteryDrawable.mBoltPaint)); |
| } |
| } |