BatteryStatusManagerTest.java revision 0529e5d033099cbfc42635f6f6183833b09dff6e
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 testOnReceiveBatteryDischarging() { 30 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 31 intent.putExtra(BatteryManager.EXTRA_LEVEL, 10); 32 intent.putExtra(BatteryManager.EXTRA_SCALE, 100); 33 intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_DISCHARGING); 34 35 mBatteryStatusManager.onReceive(getContext(), intent); 36 37 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 38 mBatteryStatusManager.verifyValues(false, Double.POSITIVE_INFINITY, 39 Double.POSITIVE_INFINITY, 0.1); 40 } 41 42 @SmallTest 43 public void testOnReceiveBatteryCharging() { 44 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 45 intent.putExtra(BatteryManager.EXTRA_LEVEL, 50); 46 intent.putExtra(BatteryManager.EXTRA_SCALE, 100); 47 intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_CHARGING); 48 49 mBatteryStatusManager.onReceive(getContext(), intent); 50 51 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 52 mBatteryStatusManager.verifyValues(true, Double.POSITIVE_INFINITY, 53 Double.POSITIVE_INFINITY, 0.5); 54 } 55 56 @SmallTest 57 public void testOnReceiveBatteryFull() { 58 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 59 intent.putExtra(BatteryManager.EXTRA_LEVEL, 100); 60 intent.putExtra(BatteryManager.EXTRA_SCALE, 100); 61 intent.putExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_FULL); 62 63 mBatteryStatusManager.onReceive(getContext(), intent); 64 65 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 66 mBatteryStatusManager.verifyValues(true, 0, Double.POSITIVE_INFINITY, 1); 67 } 68 69 @SmallTest 70 public void testOnReceiveNoBattery() { 71 Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); 72 intent.putExtra(BatteryManager.EXTRA_PRESENT, false); 73 74 mBatteryStatusManager.onReceive(getContext(), intent); 75 76 mBatteryStatusManager.verifyCalls("gotBatteryStatus"); 77 mBatteryStatusManager.verifyValues(true, 0, Double.POSITIVE_INFINITY, 1); 78 } 79 80 @SmallTest 81 public void testStartStopSucceeds() { 82 assertTrue(mBatteryStatusManager.start(0)); 83 mBatteryStatusManager.stop(); 84 } 85 86 // Helper class for testing. 87 88 private static class BatteryStatusManagerForTests extends BatteryStatusManager { 89 90 private boolean mCharging = false; 91 private double mChargingTime = 0; 92 private double mDischargingTime = 0; 93 private double mLevel = 0; 94 private String mCalls = ""; 95 96 private BatteryStatusManagerForTests(Context context) { 97 super(context); 98 } 99 100 static BatteryStatusManagerForTests getInstance(Context context) { 101 return new BatteryStatusManagerForTests(context); 102 } 103 104 private void verifyValues(boolean charging, double chargingTime, 105 double dischargingTime, double level) { 106 assertEquals(charging, mCharging); 107 assertEquals(chargingTime, mChargingTime); 108 assertEquals(dischargingTime, mDischargingTime); 109 assertEquals(level, mLevel); 110 } 111 112 private void verifyCalls(String names) { 113 assertEquals(mCalls, names); 114 } 115 116 @Override 117 protected void gotBatteryStatus(boolean charging, double chargingTime, 118 double dischargingTime, double level) { 119 mCharging = charging; 120 mChargingTime = chargingTime; 121 mDischargingTime = dischargingTime; 122 mLevel = level; 123 mCalls = mCalls.concat("gotBatteryStatus"); 124 } 125 } 126 127} 128