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