BatteryStatusManagerTest.java revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5package org.chromium.content.browser; 6 7import android.content.Context; 8import android.content.Intent; 9 10import android.os.BatteryManager; 11 12import android.test.AndroidTestCase; 13import android.test.suitebuilder.annotation.SmallTest; 14 15/** 16 * Test suite for BatteryStatusManager. 17 */ 18public class BatteryStatusManagerTest extends AndroidTestCase { 19 20 private BatteryStatusManagerForTests mBatteryStatusManager; 21 22 @Override 23 public void setUp() throws Exception { 24 super.setUp(); 25 mBatteryStatusManager = BatteryStatusManagerForTests.getInstance(getContext()); 26 } 27 28 @SmallTest 29 public void testOnReceiveBatteryNotPluggedIn() { 30 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 31 intent.putExtra(BatteryManager.EXTRA_PRESENT, true); 32 intent.putExtra(BatteryManager.EXTRA_PLUGGED, 0); 33 intent.putExtra(BatteryManager.EXTRA_LEVEL, 10); 34 intent.putExtra(BatteryManager.EXTRA_SCALE, 100); 35 intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_NOT_CHARGING); 36 37 mBatteryStatusManager.onReceive(intent); 38 39 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 40 mBatteryStatusManager.verifyValues(false, Double.POSITIVE_INFINITY, 41 Double.POSITIVE_INFINITY, 0.1); 42 } 43 44 @SmallTest 45 public void testOnReceiveBatteryPluggedInACCharging() { 46 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 47 intent.putExtra(BatteryManager.EXTRA_PRESENT, true); 48 intent.putExtra(BatteryManager.EXTRA_PLUGGED, BatteryManager.BATTERY_PLUGGED_AC); 49 intent.putExtra(BatteryManager.EXTRA_LEVEL, 50); 50 intent.putExtra(BatteryManager.EXTRA_SCALE, 100); 51 intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_CHARGING); 52 53 mBatteryStatusManager.onReceive(intent); 54 55 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 56 mBatteryStatusManager.verifyValues(true, Double.POSITIVE_INFINITY, 57 Double.POSITIVE_INFINITY, 0.5); 58 } 59 60 @SmallTest 61 public void testOnReceiveBatteryPluggedInACNotCharging() { 62 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 63 intent.putExtra(BatteryManager.EXTRA_PRESENT, true); 64 intent.putExtra(BatteryManager.EXTRA_PLUGGED, BatteryManager.BATTERY_PLUGGED_AC); 65 intent.putExtra(BatteryManager.EXTRA_LEVEL, 50); 66 intent.putExtra(BatteryManager.EXTRA_SCALE, 100); 67 intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_NOT_CHARGING); 68 69 mBatteryStatusManager.onReceive(intent); 70 71 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 72 mBatteryStatusManager.verifyValues(true, Double.POSITIVE_INFINITY, 73 Double.POSITIVE_INFINITY, 0.5); 74 } 75 76 @SmallTest 77 public void testOnReceiveBatteryPluggedInUSBFull() { 78 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 79 intent.putExtra(BatteryManager.EXTRA_PRESENT, true); 80 intent.putExtra(BatteryManager.EXTRA_PLUGGED, BatteryManager.BATTERY_PLUGGED_USB); 81 intent.putExtra(BatteryManager.EXTRA_LEVEL, 100); 82 intent.putExtra(BatteryManager.EXTRA_SCALE, 100); 83 intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_FULL); 84 85 mBatteryStatusManager.onReceive(intent); 86 87 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 88 mBatteryStatusManager.verifyValues(true, 0, Double.POSITIVE_INFINITY, 1); 89 } 90 91 @SmallTest 92 public void testOnReceiveNoBattery() { 93 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 94 intent.putExtra(BatteryManager.EXTRA_PRESENT, false); 95 intent.putExtra(BatteryManager.EXTRA_PLUGGED, BatteryManager.BATTERY_PLUGGED_USB); 96 97 mBatteryStatusManager.onReceive(intent); 98 99 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 100 mBatteryStatusManager.verifyValues(true, 0, Double.POSITIVE_INFINITY, 1); 101 } 102 103 @SmallTest 104 public void testOnReceiveNoPluggedStatus() { 105 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 106 intent.putExtra(BatteryManager.EXTRA_PRESENT, true); 107 108 mBatteryStatusManager.onReceive(intent); 109 110 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 111 mBatteryStatusManager.verifyValues(true, 0, Double.POSITIVE_INFINITY, 1); 112 } 113 114 @SmallTest 115 public void testStartStopSucceeds() { 116 assertTrue(mBatteryStatusManager.start(0)); 117 mBatteryStatusManager.stop(); 118 } 119 120 // Helper class for testing. 121 122 private static class BatteryStatusManagerForTests extends BatteryStatusManager { 123 124 private boolean mCharging = false; 125 private double mChargingTime = 0; 126 private double mDischargingTime = 0; 127 private double mLevel = 0; 128 private String mCalls = ""; 129 130 private BatteryStatusManagerForTests(Context context) { 131 super(context); 132 } 133 134 static BatteryStatusManagerForTests getInstance(Context context) { 135 return new BatteryStatusManagerForTests(context); 136 } 137 138 private void verifyValues(boolean charging, double chargingTime, 139 double dischargingTime, double level) { 140 assertEquals(charging, mCharging); 141 assertEquals(chargingTime, mChargingTime); 142 assertEquals(dischargingTime, mDischargingTime); 143 assertEquals(level, mLevel); 144 } 145 146 private void verifyCalls(String names) { 147 assertEquals(mCalls, names); 148 } 149 150 @Override 151 protected boolean ignoreBatteryPresentState() { 152 return false; 153 } 154 155 @Override 156 protected void gotBatteryStatus(boolean charging, double chargingTime, 157 double dischargingTime, double level) { 158 mCharging = charging; 159 mChargingTime = chargingTime; 160 mDischargingTime = dischargingTime; 161 mLevel = level; 162 mCalls = mCalls.concat("gotBatteryStatus"); 163 } 164 } 165 166} 167