Home | History | Annotate | Download | only in battery_status
      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_linux.h"
      6 
      7 #include "base/values.h"
      8 #include "testing/gtest/include/gtest/gtest.h"
      9 
     10 namespace content {
     11 
     12 namespace {
     13 
     14 TEST(BatteryStatusManagerLinuxTest, EmptyDictionary) {
     15   base::DictionaryValue dictionary;
     16   blink::WebBatteryStatus default_status;
     17   blink::WebBatteryStatus status = ComputeWebBatteryStatus(dictionary);
     18 
     19   EXPECT_EQ(default_status.charging, status.charging);
     20   EXPECT_EQ(default_status.chargingTime, status.chargingTime);
     21   EXPECT_EQ(default_status.dischargingTime, status.dischargingTime);
     22   EXPECT_EQ(default_status.level, status.level);
     23 }
     24 
     25 TEST(BatteryStatusManagerLinuxTest, ChargingHalfFull) {
     26   base::DictionaryValue dictionary;
     27   dictionary.SetDouble("State", UPOWER_DEVICE_STATE_CHARGING);
     28   dictionary.SetDouble("TimeToFull", 0);
     29   dictionary.SetDouble("Percentage", 50);
     30 
     31   blink::WebBatteryStatus status = ComputeWebBatteryStatus(dictionary);
     32 
     33   EXPECT_TRUE(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(0.5, status.level);
     37 }
     38 
     39 TEST(BatteryStatusManagerLinuxTest, ChargingTimeToFull) {
     40   base::DictionaryValue dictionary;
     41   dictionary.SetDouble("State", UPOWER_DEVICE_STATE_CHARGING);
     42   dictionary.SetDouble("TimeToFull", 100.f);
     43   dictionary.SetDouble("Percentage", 1);
     44 
     45   blink::WebBatteryStatus status = ComputeWebBatteryStatus(dictionary);
     46 
     47   EXPECT_TRUE(status.charging);
     48   EXPECT_EQ(100, status.chargingTime);
     49   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
     50   EXPECT_EQ(.01, status.level);
     51 }
     52 
     53 TEST(BatteryStatusManagerLinuxTest, FullyCharged) {
     54   base::DictionaryValue dictionary;
     55   dictionary.SetDouble("State", UPOWER_DEVICE_STATE_FULL);
     56   dictionary.SetDouble("TimeToFull", 100);
     57   dictionary.SetDouble("TimeToEmpty", 200);
     58   dictionary.SetDouble("Percentage", 100);
     59 
     60   blink::WebBatteryStatus status = ComputeWebBatteryStatus(dictionary);
     61 
     62   EXPECT_TRUE(status.charging);
     63   EXPECT_EQ(0, status.chargingTime);
     64   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
     65   EXPECT_EQ(1, status.level);
     66 }
     67 
     68 TEST(BatteryStatusManagerLinuxTest, Discharging) {
     69   base::DictionaryValue dictionary;
     70   dictionary.SetDouble("State", UPOWER_DEVICE_STATE_DISCHARGING);
     71   dictionary.SetDouble("TimeToFull", 0);
     72   dictionary.SetDouble("TimeToEmpty", 200);
     73   dictionary.SetDouble("Percentage", 90);
     74 
     75   blink::WebBatteryStatus status = ComputeWebBatteryStatus(dictionary);
     76 
     77   EXPECT_FALSE(status.charging);
     78   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.chargingTime);
     79   EXPECT_EQ(200, status.dischargingTime);
     80   EXPECT_EQ(.9, status.level);
     81 }
     82 
     83 TEST(BatteryStatusManagerLinuxTest, DischargingTimeToEmptyUnknown) {
     84   base::DictionaryValue dictionary;
     85   dictionary.SetDouble("State", UPOWER_DEVICE_STATE_DISCHARGING);
     86   dictionary.SetDouble("TimeToFull", 0);
     87   dictionary.SetDouble("TimeToEmpty", 0);
     88   dictionary.SetDouble("Percentage", 90);
     89 
     90   blink::WebBatteryStatus status = ComputeWebBatteryStatus(dictionary);
     91 
     92   EXPECT_FALSE(status.charging);
     93   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.chargingTime);
     94   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
     95   EXPECT_EQ(.9, status.level);
     96 }
     97 
     98 TEST(BatteryStatusManagerLinuxTest, DeviceStateUnknown) {
     99   base::DictionaryValue dictionary;
    100   dictionary.SetDouble("State", UPOWER_DEVICE_STATE_UNKNOWN);
    101   dictionary.SetDouble("TimeToFull", 0);
    102   dictionary.SetDouble("TimeToEmpty", 0);
    103   dictionary.SetDouble("Percentage", 50);
    104 
    105   blink::WebBatteryStatus status = ComputeWebBatteryStatus(dictionary);
    106 
    107   EXPECT_TRUE(status.charging);
    108   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.chargingTime);
    109   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
    110   EXPECT_EQ(.5, status.level);
    111 }
    112 
    113 TEST(BatteryStatusManagerLinuxTest, DeviceStateEmpty) {
    114   base::DictionaryValue dictionary;
    115   dictionary.SetDouble("State", UPOWER_DEVICE_STATE_EMPTY);
    116   dictionary.SetDouble("TimeToFull", 0);
    117   dictionary.SetDouble("TimeToEmpty", 0);
    118   dictionary.SetDouble("Percentage", 0);
    119 
    120   blink::WebBatteryStatus status = ComputeWebBatteryStatus(dictionary);
    121 
    122   EXPECT_FALSE(status.charging);
    123   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.chargingTime);
    124   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
    125   EXPECT_EQ(0, status.level);
    126 }
    127 
    128 TEST(BatteryStatusManagerLinuxTest, LevelRoundedToThreeSignificantDigits) {
    129   base::DictionaryValue dictionary;
    130   dictionary.SetDouble("State", UPOWER_DEVICE_STATE_DISCHARGING);
    131   dictionary.SetDouble("Percentage", 14.56);
    132 
    133   blink::WebBatteryStatus status = ComputeWebBatteryStatus(dictionary);
    134 
    135   EXPECT_FALSE(status.charging);
    136   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.chargingTime);
    137   EXPECT_EQ(std::numeric_limits<double>::infinity(), status.dischargingTime);
    138   EXPECT_EQ(0.15, status.level);
    139 }
    140 
    141 }  // namespace
    142 
    143 }  // namespace content
    144