diff options
Diffstat (limited to 'chromium/ash/system/chromeos/power/power_status_unittest.cc')
-rw-r--r-- | chromium/ash/system/chromeos/power/power_status_unittest.cc | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/chromium/ash/system/chromeos/power/power_status_unittest.cc b/chromium/ash/system/chromeos/power/power_status_unittest.cc new file mode 100644 index 00000000000..baf4997ecf4 --- /dev/null +++ b/chromium/ash/system/chromeos/power/power_status_unittest.cc @@ -0,0 +1,135 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/system/chromeos/power/power_status.h" + +#include <set> +#include <string> + +#include "base/command_line.h" +#include "base/memory/scoped_ptr.h" +#include "base/message_loop/message_loop.h" +#include "chromeos/dbus/dbus_thread_manager.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "third_party/cros_system_api/dbus/service_constants.h" + +namespace ash { +namespace internal { + +namespace { + +class TestObserver : public PowerStatus::Observer { + public: + TestObserver() : power_changed_count_(0) {} + virtual ~TestObserver() {} + + int power_changed_count() const { return power_changed_count_; } + + // PowerStatus::Observer overrides: + virtual void OnPowerStatusChanged() OVERRIDE { ++power_changed_count_; } + + private: + int power_changed_count_; + + DISALLOW_COPY_AND_ASSIGN(TestObserver); +}; + +} // namespace + +class PowerStatusTest : public testing::Test { + public: + PowerStatusTest() : power_status_(NULL) {} + virtual ~PowerStatusTest() {} + + virtual void SetUp() OVERRIDE { + chromeos::DBusThreadManager::InitializeWithStub(); + PowerStatus::Initialize(); + power_status_ = PowerStatus::Get(); + test_observer_.reset(new TestObserver); + power_status_->AddObserver(test_observer_.get()); + } + + virtual void TearDown() OVERRIDE { + power_status_->RemoveObserver(test_observer_.get()); + test_observer_.reset(); + PowerStatus::Shutdown(); + chromeos::DBusThreadManager::Shutdown(); + } + + protected: + base::MessageLoopForUI message_loop_; + PowerStatus* power_status_; // Not owned. + scoped_ptr<TestObserver> test_observer_; + + private: + DISALLOW_COPY_AND_ASSIGN(PowerStatusTest); +}; + +TEST_F(PowerStatusTest, InitializeAndUpdate) { + // Test that the initial power supply state should be acquired after + // PowerStatus is instantiated. This depends on + // PowerManagerClientStubImpl, which responds to power status update + // requests, pretends there is a battery present, and generates some valid + // power supply status data. + message_loop_.RunUntilIdle(); + EXPECT_EQ(1, test_observer_->power_changed_count()); + + // Test RequestUpdate, test_obsever_ should be notified for power suuply + // status change. + power_status_->RequestStatusUpdate(); + message_loop_.RunUntilIdle(); + EXPECT_EQ(2, test_observer_->power_changed_count()); +} + +TEST_F(PowerStatusTest, ShouldDisplayBatteryTime) { + EXPECT_FALSE(PowerStatus::ShouldDisplayBatteryTime( + base::TimeDelta::FromSeconds(-1))); + EXPECT_FALSE(PowerStatus::ShouldDisplayBatteryTime( + base::TimeDelta::FromSeconds(0))); + EXPECT_FALSE(PowerStatus::ShouldDisplayBatteryTime( + base::TimeDelta::FromSeconds(59))); + EXPECT_TRUE(PowerStatus::ShouldDisplayBatteryTime( + base::TimeDelta::FromSeconds(60))); + EXPECT_TRUE(PowerStatus::ShouldDisplayBatteryTime( + base::TimeDelta::FromSeconds(600))); + EXPECT_TRUE(PowerStatus::ShouldDisplayBatteryTime( + base::TimeDelta::FromSeconds(3600))); + EXPECT_TRUE(PowerStatus::ShouldDisplayBatteryTime( + base::TimeDelta::FromSeconds( + PowerStatus::kMaxBatteryTimeToDisplaySec))); + EXPECT_FALSE(PowerStatus::ShouldDisplayBatteryTime( + base::TimeDelta::FromSeconds( + PowerStatus::kMaxBatteryTimeToDisplaySec + 1))); +} + +TEST_F(PowerStatusTest, SplitTimeIntoHoursAndMinutes) { + int hours = 0, minutes = 0; + PowerStatus::SplitTimeIntoHoursAndMinutes( + base::TimeDelta::FromSeconds(0), &hours, &minutes); + EXPECT_EQ(0, hours); + EXPECT_EQ(0, minutes); + + PowerStatus::SplitTimeIntoHoursAndMinutes( + base::TimeDelta::FromSeconds(60), &hours, &minutes); + EXPECT_EQ(0, hours); + EXPECT_EQ(1, minutes); + + PowerStatus::SplitTimeIntoHoursAndMinutes( + base::TimeDelta::FromSeconds(3600), &hours, &minutes); + EXPECT_EQ(1, hours); + EXPECT_EQ(0, minutes); + + PowerStatus::SplitTimeIntoHoursAndMinutes( + base::TimeDelta::FromSeconds(3600 + 60), &hours, &minutes); + EXPECT_EQ(1, hours); + EXPECT_EQ(1, minutes); + + PowerStatus::SplitTimeIntoHoursAndMinutes( + base::TimeDelta::FromSeconds(7 * 3600 + 23 * 60), &hours, &minutes); + EXPECT_EQ(7, hours); + EXPECT_EQ(23, minutes); +} + +} // namespace internal +} // namespace ash |