1597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleipackage com.android.settingslib.graph;
2597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei
3597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport android.content.Context;
4597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport android.content.res.Resources;
5597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport android.graphics.Canvas;
66f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Lairdimport android.graphics.Rect;
7597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport android.support.test.InstrumentationRegistry;
8597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport android.support.test.filters.SmallTest;
9597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport android.support.test.runner.AndroidJUnit4;
10597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport com.android.settingslib.R;
11597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport org.junit.Before;
12597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport org.junit.Test;
13597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport org.junit.runner.RunWith;
14597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei
15597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport static com.google.common.truth.Truth.assertThat;
16e955df17cf8864676d3889cca79f936f88e353fbEvan Lairdimport static junit.framework.Assert.assertTrue;
17597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport static org.mockito.Matchers.any;
18597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport static org.mockito.Matchers.anyFloat;
19597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport static org.mockito.Matchers.anyString;
20597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport static org.mockito.Mockito.mock;
21597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport static org.mockito.Mockito.never;
22597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleiimport static org.mockito.Mockito.verify;
23597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei
24597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei@SmallTest
25597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei@RunWith(AndroidJUnit4.class)
26597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyuleipublic class BatteryMeterDrawableBaseTest {
27597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    private Context mContext;
28597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    private Resources mResources;
29597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    private BatteryMeterDrawableBase mBatteryDrawable;
30597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei
31597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    @Before
32597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    public void setUp() throws Exception {
33597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei        mContext = InstrumentationRegistry.getTargetContext();
34597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei        mResources = mContext.getResources();
35597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei        mBatteryDrawable = new BatteryMeterDrawableBase(mContext, 0);
36597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    }
37597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei
38597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    @Test
39597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    public void testGetIntrinsicSize() {
40597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei        assertThat(mBatteryDrawable.getIntrinsicWidth()).
41597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei                isEqualTo(mResources.getDimensionPixelSize(R.dimen.battery_width));
42597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei        assertThat(mBatteryDrawable.getIntrinsicHeight()).
43597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei                isEqualTo(mResources.getDimensionPixelSize(R.dimen.battery_height));
44597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    }
45597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei
46597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    @Test
47597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    public void testDrawNothingBeforeOnBatteryLevelChanged() {
48597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei        final Canvas canvas = mock(Canvas.class);
49597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei        mBatteryDrawable.draw(canvas);
50597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei        verify(canvas, never()).drawPath(any(), any());
51597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei        verify(canvas, never()).drawText(anyString(), anyFloat(), anyFloat(), any());
52597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei    }
536aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler
546aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler    @Test
556aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler    public void testDrawingForTypicalValues() {
566aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler        final Canvas canvas = mock(Canvas.class);
576aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler        final int levels[] = { 0, 1, 5, 10, 25, 50, 75, 90, 95, 99, 100 };
586aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler        final boolean bools[] = { false, true };
596aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler        for (int l : levels) {
60ff5bd948b0b5fc2122b4fe9dafe5245a2c05694cjackqdyulei            for (boolean charging : bools) {
616aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler                for (boolean saver : bools) {
626aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler                    for (boolean percent : bools) {
636aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler                        mBatteryDrawable.setBatteryLevel(l);
646aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler                        mBatteryDrawable.setPowerSave(saver);
65ff5bd948b0b5fc2122b4fe9dafe5245a2c05694cjackqdyulei                        mBatteryDrawable.setCharging(charging);
666aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler                        mBatteryDrawable.setShowPercent(percent);
676aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler                        mBatteryDrawable.draw(canvas);
686aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler                    }
696aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler                }
706aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler            }
716aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler        }
726aa6e6e640ddaea3272144aee68762dd17674773Dan Sandler    }
736f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird
746f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird    @Test
756f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird    public void testPadding_returnsCorrectValues() {
766f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        // different pads on each side to differentiate
776f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        final int left = 1;
786f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        final int top = 2;
796f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        final int right = 3;
806f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        final int bottom = 4;
816f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird
826f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        final Rect expected = new Rect(left, top, right, bottom);
836f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        final Rect padding = new Rect();
846f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird
856f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        mBatteryDrawable.setPadding(left, top, right, bottom);
866f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird
876f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        assertThat(mBatteryDrawable.getPadding(padding)).isEqualTo(true);
886f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        assertThat(padding).isEqualTo(expected);
896f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird    }
906f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird
916f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird    @Test
926f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird    public void testPadding_falseIfUnsetOrZero() {
936f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        final Rect padding = new Rect();
946f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        assertThat(mBatteryDrawable.getPadding(padding)).isEqualTo(false);
956f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        assertThat(isRectZero(padding)).isEqualTo(true);
966f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird
976f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        mBatteryDrawable.setPadding(0, 0, 0, 0);
986f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        assertThat(mBatteryDrawable.getPadding(padding)).isEqualTo(false);
996f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        assertThat(isRectZero(padding)).isEqualTo(true);
1006f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird    }
1016f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird
1026f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird    private boolean isRectZero(Rect r) {
1036f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird        return r.left == 0 && r.top == 0 && r.right == 0 && r.bottom == 0;
1046f4179c3b8788456095ec79fd35e7c1a3d0589a0Evan Laird    }
105e955df17cf8864676d3889cca79f936f88e353fbEvan Laird
106e955df17cf8864676d3889cca79f936f88e353fbEvan Laird    @Test
107e955df17cf8864676d3889cca79f936f88e353fbEvan Laird    public void testPlusPaint_isEqualToBoltPaint() {
108e955df17cf8864676d3889cca79f936f88e353fbEvan Laird        // Before setting color
109e955df17cf8864676d3889cca79f936f88e353fbEvan Laird        assertTrue(mBatteryDrawable.mPlusPaint.hasEqualAttributes(mBatteryDrawable.mBoltPaint));
110e955df17cf8864676d3889cca79f936f88e353fbEvan Laird
111e955df17cf8864676d3889cca79f936f88e353fbEvan Laird        final int fakeFillColor = 123;
112e955df17cf8864676d3889cca79f936f88e353fbEvan Laird        final int fakeBackgrundColor = 456;
113e955df17cf8864676d3889cca79f936f88e353fbEvan Laird
114e955df17cf8864676d3889cca79f936f88e353fbEvan Laird        // After
115e955df17cf8864676d3889cca79f936f88e353fbEvan Laird        mBatteryDrawable.setColors(fakeFillColor, fakeBackgrundColor);
116e955df17cf8864676d3889cca79f936f88e353fbEvan Laird        assertTrue(mBatteryDrawable.mPlusPaint.hasEqualAttributes(mBatteryDrawable.mBoltPaint));
117e955df17cf8864676d3889cca79f936f88e353fbEvan Laird    }
118597b10f6db2401f7685191f96e3aaedcbccc56b0jackqdyulei}
119