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