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.
5 #include "chrome/browser/chromeos/power/power_data_collector.h"
6 #include "chromeos/dbus/dbus_thread_manager.h"
7 #include "chromeos/dbus/fake_dbus_thread_manager.h"
8 #include "chromeos/dbus/power_manager/power_supply_properties.pb.h"
9 #include "testing/gtest/include/gtest/gtest.h"
13 class PowerDataCollectorTest : public testing::Test {
15 PowerDataCollectorTest() : power_data_collector_(NULL) {}
16 virtual ~PowerDataCollectorTest() {}
18 virtual void SetUp() OVERRIDE {
19 FakeDBusThreadManager* fake_dbus_thread_manager = new FakeDBusThreadManager;
20 fake_dbus_thread_manager->SetFakeClients();
21 DBusThreadManager::InitializeForTesting(fake_dbus_thread_manager);
22 PowerDataCollector::Initialize();
23 power_data_collector_ = PowerDataCollector::Get();
26 virtual void TearDown() OVERRIDE {
27 PowerDataCollector::Shutdown();
28 DBusThreadManager::Shutdown();
29 power_data_collector_ = NULL;
33 PowerDataCollector* power_data_collector_;
36 TEST_F(PowerDataCollectorTest, PowerChanged) {
37 power_manager::PowerSupplyProperties prop1, prop2;
39 prop1.set_external_power(power_manager::PowerSupplyProperties::DISCONNECTED);
40 prop1.set_battery_percent(20.00);
41 power_data_collector_->PowerChanged(prop1);
42 const std::deque<PowerDataCollector::PowerSupplySample>& data1 =
43 power_data_collector_->power_supply_data();
44 ASSERT_EQ(static_cast<size_t>(1), data1.size());
45 EXPECT_DOUBLE_EQ(prop1.battery_percent(), data1[0].battery_percent);
46 EXPECT_FALSE(data1[0].external_power);
48 prop2.set_external_power(power_manager::PowerSupplyProperties::AC);
49 prop2.set_battery_percent(100.00);
50 power_data_collector_->PowerChanged(prop2);
51 const std::deque<PowerDataCollector::PowerSupplySample>& data2 =
52 power_data_collector_->power_supply_data();
53 ASSERT_EQ(static_cast<size_t>(2), data2.size());
54 EXPECT_DOUBLE_EQ(prop2.battery_percent(), data2[1].battery_percent);
55 EXPECT_TRUE(data2[1].external_power);
58 TEST_F(PowerDataCollectorTest, SystemResumed) {
59 power_data_collector_->SystemResumed(base::TimeDelta::FromSeconds(10));
60 const std::deque<PowerDataCollector::SystemResumedSample>& data1 =
61 power_data_collector_->system_resumed_data();
62 ASSERT_EQ(static_cast<size_t>(1), data1.size());
63 ASSERT_EQ(static_cast<int64>(10), data1[0].sleep_duration.InSeconds());
65 power_data_collector_->SystemResumed(base::TimeDelta::FromSeconds(20));
66 const std::deque<PowerDataCollector::SystemResumedSample>& data2 =
67 power_data_collector_->system_resumed_data();
68 ASSERT_EQ(static_cast<size_t>(2), data2.size());
69 ASSERT_EQ(static_cast<int64>(20), data2[1].sleep_duration.InSeconds());
72 TEST_F(PowerDataCollectorTest, AddSample) {
73 std::deque<PowerDataCollector::PowerSupplySample> sample_deque;
74 PowerDataCollector::PowerSupplySample sample1, sample2;
75 sample1.time = base::Time::FromInternalValue(1000);
76 sample2.time = sample1.time +
77 base::TimeDelta::FromSeconds(PowerDataCollector::kSampleTimeLimitSec + 1);
79 AddSample(&sample_deque, sample1);
80 ASSERT_EQ(static_cast<size_t>(1), sample_deque.size());
82 AddSample(&sample_deque, sample2);
83 ASSERT_EQ(static_cast<size_t>(1), sample_deque.size());
84 EXPECT_EQ(sample2.time.ToInternalValue(),
85 sample_deque[0].time.ToInternalValue());
88 } // namespace chromeos