Home | History | Annotate | Download | only in graph
      1 package com.android.settingslib.graph;
      2 
      3 import android.content.Context;
      4 import android.content.res.Resources;
      5 import android.graphics.Canvas;
      6 import android.graphics.Rect;
      7 import android.support.test.InstrumentationRegistry;
      8 import android.support.test.filters.SmallTest;
      9 import android.support.test.runner.AndroidJUnit4;
     10 import com.android.settingslib.R;
     11 import org.junit.Before;
     12 import org.junit.Test;
     13 import org.junit.runner.RunWith;
     14 
     15 import static com.google.common.truth.Truth.assertThat;
     16 import static junit.framework.Assert.assertTrue;
     17 import static org.mockito.Matchers.any;
     18 import static org.mockito.Matchers.anyFloat;
     19 import static org.mockito.Matchers.anyString;
     20 import static org.mockito.Mockito.mock;
     21 import static org.mockito.Mockito.never;
     22 import static org.mockito.Mockito.verify;
     23 
     24 @SmallTest
     25 @RunWith(AndroidJUnit4.class)
     26 public class BatteryMeterDrawableBaseTest {
     27     private Context mContext;
     28     private Resources mResources;
     29     private BatteryMeterDrawableBase mBatteryDrawable;
     30 
     31     @Before
     32     public void setUp() throws Exception {
     33         mContext = InstrumentationRegistry.getTargetContext();
     34         mResources = mContext.getResources();
     35         mBatteryDrawable = new BatteryMeterDrawableBase(mContext, 0);
     36     }
     37 
     38     @Test
     39     public void testGetIntrinsicSize() {
     40         assertThat(mBatteryDrawable.getIntrinsicWidth()).
     41                 isEqualTo(mResources.getDimensionPixelSize(R.dimen.battery_width));
     42         assertThat(mBatteryDrawable.getIntrinsicHeight()).
     43                 isEqualTo(mResources.getDimensionPixelSize(R.dimen.battery_height));
     44     }
     45 
     46     @Test
     47     public void testDrawNothingBeforeOnBatteryLevelChanged() {
     48         final Canvas canvas = mock(Canvas.class);
     49         mBatteryDrawable.draw(canvas);
     50         verify(canvas, never()).drawPath(any(), any());
     51         verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any());
     52     }
     53 
     54     @Test
     55     public void testDrawingForTypicalValues() {
     56         final Canvas canvas = mock(Canvas.class);
     57         final int levels[] = { 0, 1, 5, 10, 25, 50, 75, 90, 95, 99, 100 };
     58         final boolean bools[] = { false, true };
     59         for (int l : levels) {
     60             for (boolean charging : bools) {
     61                 for (boolean saver : bools) {
     62                     for (boolean percent : bools) {
     63                         mBatteryDrawable.setBatteryLevel(l);
     64                         mBatteryDrawable.setPowerSave(saver);
     65                         mBatteryDrawable.setCharging(charging);
     66                         mBatteryDrawable.setShowPercent(percent);
     67                         mBatteryDrawable.draw(canvas);
     68                     }
     69                 }
     70             }
     71         }
     72     }
     73 
     74     @Test
     75     public void testPadding_returnsCorrectValues() {
     76         // different pads on each side to differentiate
     77         final int left = 1;
     78         final int top = 2;
     79         final int right = 3;
     80         final int bottom = 4;
     81 
     82         final Rect expected = new Rect(left, top, right, bottom);
     83         final Rect padding = new Rect();
     84 
     85         mBatteryDrawable.setPadding(left, top, right, bottom);
     86 
     87         assertThat(mBatteryDrawable.getPadding(padding)).isEqualTo(true);
     88         assertThat(padding).isEqualTo(expected);
     89     }
     90 
     91     @Test
     92     public void testPadding_falseIfUnsetOrZero() {
     93         final Rect padding = new Rect();
     94         assertThat(mBatteryDrawable.getPadding(padding)).isEqualTo(false);
     95         assertThat(isRectZero(padding)).isEqualTo(true);
     96 
     97         mBatteryDrawable.setPadding(0, 0, 0, 0);
     98         assertThat(mBatteryDrawable.getPadding(padding)).isEqualTo(false);
     99         assertThat(isRectZero(padding)).isEqualTo(true);
    100     }
    101 
    102     private boolean isRectZero(Rect r) {
    103         return r.left == 0 && r.top == 0 && r.right == 0 && r.bottom == 0;
    104     }
    105 
    106     @Test
    107     public void testPlusPaint_isEqualToBoltPaint() {
    108         // Before setting color
    109         assertTrue(mBatteryDrawable.mPlusPaint.hasEqualAttributes(mBatteryDrawable.mBoltPaint));
    110 
    111         final int fakeFillColor = 123;
    112         final int fakeBackgrundColor = 456;
    113 
    114         // After
    115         mBatteryDrawable.setColors(fakeFillColor, fakeBackgrundColor);
    116         assertTrue(mBatteryDrawable.mPlusPaint.hasEqualAttributes(mBatteryDrawable.mBoltPaint));
    117     }
    118 }
    119