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