blob: 2113d479b9892b3ae95e339174da6bad89e3414f [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settingslib.graph;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.graphics.drawable.VectorDrawable;
import com.android.settingslib.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class BluetoothDeviceLayerDrawableTest {
private static final int RES_ID = com.android.internal.R.drawable.ic_phone;
private static final int BATTERY_LEVEL = 15;
private static final float BATTERY_ICON_SCALE = 0.75f;
private static final int BATTERY_ICON_PADDING_TOP = 6;
private static final float TOLERANCE = 0.001f;
private Context mContext;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
}
@Test
public void testCreateLayerDrawable_configCorrect() {
BluetoothDeviceLayerDrawable drawable = BluetoothDeviceLayerDrawable.createLayerDrawable(
mContext, RES_ID, BATTERY_LEVEL);
assertThat(drawable.getDrawable(0)).isInstanceOf(VectorDrawable.class);
assertThat(drawable.getDrawable(1)).isInstanceOf(
BluetoothDeviceLayerDrawable.BatteryMeterDrawable.class);
assertThat(drawable.getLayerInsetStart(1)).isEqualTo(
drawable.getDrawable(0).getIntrinsicWidth());
assertThat(drawable.getLayerInsetTop(1)).isEqualTo(0);
}
@Test
public void testCreateLayerDrawable_withIconScale_configCorrect() {
BluetoothDeviceLayerDrawable drawable = BluetoothDeviceLayerDrawable.createLayerDrawable(
mContext, RES_ID, BATTERY_LEVEL, BATTERY_ICON_SCALE);
assertThat(drawable.getDrawable(0)).isInstanceOf(VectorDrawable.class);
assertThat(drawable.getDrawable(1)).isInstanceOf(
BluetoothDeviceLayerDrawable.BatteryMeterDrawable.class);
assertThat(drawable.getLayerInsetStart(1)).isEqualTo(
drawable.getDrawable(0).getIntrinsicWidth());
assertThat(drawable.getLayerInsetTop(1)).isEqualTo(BATTERY_ICON_PADDING_TOP);
}
@Test
public void testBatteryMeterDrawable_configCorrect() {
BluetoothDeviceLayerDrawable.BatteryMeterDrawable batteryDrawable =
new BluetoothDeviceLayerDrawable.BatteryMeterDrawable(mContext,
R.color.meter_background_color, BATTERY_LEVEL);
assertThat(batteryDrawable.getAspectRatio()).isWithin(TOLERANCE).of(0.35f);
assertThat(batteryDrawable.getRadiusRatio()).isWithin(TOLERANCE).of(0f);
assertThat(batteryDrawable.getBatteryLevel()).isEqualTo(BATTERY_LEVEL);
}
@Test
public void testConstantState_returnTwinBluetoothLayerDrawable() {
BluetoothDeviceLayerDrawable drawable = BluetoothDeviceLayerDrawable.createLayerDrawable(
mContext, RES_ID, BATTERY_LEVEL);
BluetoothDeviceLayerDrawable twinDrawable =
(BluetoothDeviceLayerDrawable) drawable.getConstantState().newDrawable();
assertThat(twinDrawable.getDrawable(0)).isNotNull();
assertThat(twinDrawable.getDrawable(1)).isNotNull();
assertThat(twinDrawable.getLayerInsetTop(1)).isEqualTo(drawable.getLayerInsetTop(1));
}
@Test
public void testCreateLayerDrawable_bluetoothDrawable_hasCorrectFrameColor() {
BluetoothDeviceLayerDrawable drawable = BluetoothDeviceLayerDrawable.createLayerDrawable(
mContext, RES_ID, BATTERY_LEVEL);
BluetoothDeviceLayerDrawable.BatteryMeterDrawable batteryMeterDrawable =
(BluetoothDeviceLayerDrawable.BatteryMeterDrawable) drawable.getDrawable(1);
assertThat(batteryMeterDrawable.mFrameColor).isEqualTo(
mContext.getColor(R.color.meter_background_color));
}
}