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
5#include "content/browser/battery_status/battery_status_manager_win.h"
6
7#include "testing/gtest/include/gtest/gtest.h"
8
9namespace content {
10
11namespace {
12
13TEST(BatteryStatusManagerWinTest, ACLineStatusOffline) {
14  SYSTEM_POWER_STATUS win_status;
15  win_status.ACLineStatus = WIN_AC_LINE_STATUS_OFFLINE;
16  win_status.BatteryLifePercent = 100;
17  win_status.BatteryLifeTime = 200;
18
19  blink::WebBatteryStatus status = ComputeWebBatteryStatus(win_status);
20  EXPECT_FALSE(status.charging);
21  EXPECT_EQ(std::numeric_limits<double>::infinity(), status.chargingTime);
22  EXPECT_EQ(200, status.dischargingTime);
23  EXPECT_EQ(1, status.level);
24}
25
26TEST(BatteryStatusManagerWinTest, ACLineStatusOfflineDischargingTimeUnknown) {
27  SYSTEM_POWER_STATUS win_status;
28  win_status.ACLineStatus = WIN_AC_LINE_STATUS_OFFLINE;
29  win_status.BatteryLifePercent = 100;
30  win_status.BatteryLifeTime = (DWORD)-1;
31
32  blink::WebBatteryStatus status = ComputeWebBatteryStatus(win_status);
33  EXPECT_FALSE(status.charging);
34  EXPECT_EQ(std::numeric_limits<double>::infinity(), status.chargingTime);
35  EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
36  EXPECT_EQ(1, status.level);
37}
38
39TEST(BatteryStatusManagerWinTest, ACLineStatusOnline) {
40  SYSTEM_POWER_STATUS win_status;
41  win_status.ACLineStatus = WIN_AC_LINE_STATUS_ONLINE;
42  win_status.BatteryLifePercent = 50;
43  win_status.BatteryLifeTime = 200;
44
45  blink::WebBatteryStatus status = ComputeWebBatteryStatus(win_status);
46  EXPECT_TRUE(status.charging);
47  EXPECT_EQ(std::numeric_limits<double>::infinity(), status.chargingTime);
48  EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
49  EXPECT_EQ(.5, status.level);
50}
51
52TEST(BatteryStatusManagerWinTest, ACLineStatusOnlineFullBattery) {
53  SYSTEM_POWER_STATUS win_status;
54  win_status.ACLineStatus = WIN_AC_LINE_STATUS_ONLINE;
55  win_status.BatteryLifePercent = 100;
56  win_status.BatteryLifeTime = 200;
57
58  blink::WebBatteryStatus status = ComputeWebBatteryStatus(win_status);
59  EXPECT_TRUE(status.charging);
60  EXPECT_EQ(0, status.chargingTime);
61  EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
62  EXPECT_EQ(1, status.level);
63}
64
65TEST(BatteryStatusManagerWinTest, ACLineStatusUnknown) {
66  SYSTEM_POWER_STATUS win_status;
67  win_status.ACLineStatus = WIN_AC_LINE_STATUS_UNKNOWN;
68  win_status.BatteryLifePercent = 50;
69  win_status.BatteryLifeTime = 200;
70
71  blink::WebBatteryStatus status = ComputeWebBatteryStatus(win_status);
72  EXPECT_TRUE(status.charging);
73  EXPECT_EQ(std::numeric_limits<double>::infinity(), status.chargingTime);
74  EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
75  EXPECT_EQ(.5, status.level);
76}
77
78}  // namespace
79
80}  // namespace content
81