| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package org.chromium.device.battery; |
| |
| import android.content.Context; |
| import android.content.Intent; |
| |
| import android.os.BatteryManager; |
| |
| import android.test.AndroidTestCase; |
| import android.test.suitebuilder.annotation.SmallTest; |
| |
| /** |
| * Test suite for BatteryStatusManager. |
| */ |
| public class BatteryStatusManagerTest extends AndroidTestCase { |
| |
| private BatteryStatusManagerForTests mBatteryStatusManager; |
| |
| @Override |
| public void setUp() throws Exception { |
| super.setUp(); |
| mBatteryStatusManager = BatteryStatusManagerForTests.getInstance(getContext()); |
| } |
| |
| @SmallTest |
| public void testOnReceiveBatteryNotPluggedIn() { |
| Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); |
| intent.putExtra(BatteryManager.EXTRA_PRESENT, true); |
| intent.putExtra(BatteryManager.EXTRA_PLUGGED, 0); |
| intent.putExtra(BatteryManager.EXTRA_LEVEL, 10); |
| intent.putExtra(BatteryManager.EXTRA_SCALE, 100); |
| intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_NOT_CHARGING); |
| |
| mBatteryStatusManager.onReceive(intent); |
| |
| mBatteryStatusManager.verifyCalls("gotBatteryStatus"); |
| mBatteryStatusManager.verifyValues(false, Double.POSITIVE_INFINITY, |
| Double.POSITIVE_INFINITY, 0.1); |
| } |
| |
| @SmallTest |
| public void testOnReceiveBatteryPluggedInACCharging() { |
| Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); |
| intent.putExtra(BatteryManager.EXTRA_PRESENT, true); |
| intent.putExtra(BatteryManager.EXTRA_PLUGGED, BatteryManager.BATTERY_PLUGGED_AC); |
| intent.putExtra(BatteryManager.EXTRA_LEVEL, 50); |
| intent.putExtra(BatteryManager.EXTRA_SCALE, 100); |
| intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_CHARGING); |
| |
| mBatteryStatusManager.onReceive(intent); |
| |
| mBatteryStatusManager.verifyCalls("gotBatteryStatus"); |
| mBatteryStatusManager.verifyValues(true, Double.POSITIVE_INFINITY, |
| Double.POSITIVE_INFINITY, 0.5); |
| } |
| |
| @SmallTest |
| public void testOnReceiveBatteryPluggedInACNotCharging() { |
| Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); |
| intent.putExtra(BatteryManager.EXTRA_PRESENT, true); |
| intent.putExtra(BatteryManager.EXTRA_PLUGGED, BatteryManager.BATTERY_PLUGGED_AC); |
| intent.putExtra(BatteryManager.EXTRA_LEVEL, 50); |
| intent.putExtra(BatteryManager.EXTRA_SCALE, 100); |
| intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_NOT_CHARGING); |
| |
| mBatteryStatusManager.onReceive(intent); |
| |
| mBatteryStatusManager.verifyCalls("gotBatteryStatus"); |
| mBatteryStatusManager.verifyValues(true, Double.POSITIVE_INFINITY, |
| Double.POSITIVE_INFINITY, 0.5); |
| } |
| |
| @SmallTest |
| public void testOnReceiveBatteryPluggedInUSBFull() { |
| Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); |
| intent.putExtra(BatteryManager.EXTRA_PRESENT, true); |
| intent.putExtra(BatteryManager.EXTRA_PLUGGED, BatteryManager.BATTERY_PLUGGED_USB); |
| intent.putExtra(BatteryManager.EXTRA_LEVEL, 100); |
| intent.putExtra(BatteryManager.EXTRA_SCALE, 100); |
| intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_FULL); |
| |
| mBatteryStatusManager.onReceive(intent); |
| |
| mBatteryStatusManager.verifyCalls("gotBatteryStatus"); |
| mBatteryStatusManager.verifyValues(true, 0, Double.POSITIVE_INFINITY, 1); |
| } |
| |
| @SmallTest |
| public void testOnReceiveNoBattery() { |
| Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); |
| intent.putExtra(BatteryManager.EXTRA_PRESENT, false); |
| intent.putExtra(BatteryManager.EXTRA_PLUGGED, BatteryManager.BATTERY_PLUGGED_USB); |
| |
| mBatteryStatusManager.onReceive(intent); |
| |
| mBatteryStatusManager.verifyCalls("gotBatteryStatus"); |
| mBatteryStatusManager.verifyValues(true, 0, Double.POSITIVE_INFINITY, 1); |
| } |
| |
| @SmallTest |
| public void testOnReceiveNoPluggedStatus() { |
| Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); |
| intent.putExtra(BatteryManager.EXTRA_PRESENT, true); |
| |
| mBatteryStatusManager.onReceive(intent); |
| |
| mBatteryStatusManager.verifyCalls("gotBatteryStatus"); |
| mBatteryStatusManager.verifyValues(true, 0, Double.POSITIVE_INFINITY, 1); |
| } |
| |
| @SmallTest |
| public void testStartStopSucceeds() { |
| assertTrue(mBatteryStatusManager.start(0)); |
| mBatteryStatusManager.stop(); |
| } |
| |
| // Helper class for testing. |
| |
| private static class BatteryStatusManagerForTests extends BatteryStatusManager { |
| |
| private boolean mCharging = false; |
| private double mChargingTime = 0; |
| private double mDischargingTime = 0; |
| private double mLevel = 0; |
| private String mCalls = ""; |
| |
| private BatteryStatusManagerForTests(Context context) { |
| super(context); |
| } |
| |
| static BatteryStatusManagerForTests getInstance(Context context) { |
| return new BatteryStatusManagerForTests(context); |
| } |
| |
| private void verifyValues(boolean charging, double chargingTime, |
| double dischargingTime, double level) { |
| assertEquals(charging, mCharging); |
| assertEquals(chargingTime, mChargingTime); |
| assertEquals(dischargingTime, mDischargingTime); |
| assertEquals(level, mLevel); |
| } |
| |
| private void verifyCalls(String names) { |
| assertEquals(mCalls, names); |
| } |
| |
| @Override |
| protected boolean ignoreBatteryPresentState() { |
| return false; |
| } |
| |
| @Override |
| protected void gotBatteryStatus(boolean charging, double chargingTime, |
| double dischargingTime, double level) { |
| mCharging = charging; |
| mChargingTime = chargingTime; |
| mDischargingTime = dischargingTime; |
| mLevel = level; |
| mCalls = mCalls.concat("gotBatteryStatus"); |
| } |
| } |
| |
| } |