Index: device/battery/battery_status_manager_linux_unittest.cc |
diff --git a/device/battery/battery_status_manager_linux_unittest.cc b/device/battery/battery_status_manager_linux_unittest.cc |
deleted file mode 100644 |
index 1d2f6da2fbe842489b11baac6ae4c340c3958749..0000000000000000000000000000000000000000 |
--- a/device/battery/battery_status_manager_linux_unittest.cc |
+++ /dev/null |
@@ -1,1223 +0,0 @@ |
-// Copyright 2014 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 "device/battery/battery_status_manager_linux.h" |
- |
-#include <limits> |
-#include <list> |
-#include <string> |
- |
-#include "base/bind.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/synchronization/waitable_event.h" |
-#include "base/threading/thread.h" |
-#include "dbus/mock_bus.h" |
-#include "dbus/mock_object_proxy.h" |
-#include "dbus/object_path.h" |
-#include "dbus/property.h" |
-#include "device/battery/battery_status_manager_linux-inl.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using testing::_; |
-using testing::Invoke; |
-using testing::NiceMock; |
-using testing::Return; |
-using testing::Unused; |
- |
-namespace device { |
- |
-namespace { |
-const char kUPowerDeviceACLinePath[] = |
- "/org/freedesktop/UPower/devices/line_power_AC"; |
-const char kUPowerDeviceBattery0Path[] = |
- "/org/freedesktop/UPower/devices/battery_BAT0"; |
-const char kUPowerDeviceBattery1Path[] = |
- "/org/freedesktop/UPower/devices/battery_BAT1"; |
-const char kUPowerDisplayDevicePath[] = |
- "/org/freedesktop/UPower/devices/DisplayDevice"; |
- |
-class MockUPowerObject { |
- public: |
- MockUPowerObject() {} |
- void ConnectToSignal( |
- const std::string& interface_name, |
- const std::string& signal_name, |
- dbus::ObjectProxy::SignalCallback signal_callback, |
- dbus::ObjectProxy::OnConnectedCallback on_connected_callback); |
- dbus::Response* CreateCallMethodResponse(dbus::MethodCall* method_call, |
- Unused); |
- void SignalDeviceAdded(const std::string& added_device_path); |
- void SignalDeviceRemoved(const std::string& removed_device_path); |
- |
- scoped_refptr<dbus::MockObjectProxy> proxy; |
- dbus::ObjectProxy::SignalCallback signal_callback_device_added; |
- dbus::ObjectProxy::SignalCallback signal_callback_device_changed; |
- dbus::ObjectProxy::SignalCallback signal_callback_device_removed; |
- std::string daemon_version; |
- std::list<std::string> devices; |
- std::string display_device; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(MockUPowerObject); |
-}; |
- |
-void MockUPowerObject::ConnectToSignal( |
- const std::string& interface_name, |
- const std::string& signal_name, |
- dbus::ObjectProxy::SignalCallback signal_callback, |
- dbus::ObjectProxy::OnConnectedCallback on_connected_callback) { |
- bool on_connected_success = true; |
- if (interface_name == kUPowerInterfaceName) { |
- if (signal_name == kUPowerSignalDeviceAdded) |
- signal_callback_device_added = signal_callback; |
- else if (signal_name == kUPowerSignalDeviceRemoved) |
- signal_callback_device_removed = signal_callback; |
- else |
- on_connected_success = false; |
- } else { |
- on_connected_success = false; |
- } |
- |
- if (!on_connected_success) { |
- LOG(WARNING) << "MockUPowerObject::" << __FUNCTION__ |
- << " Unexpected interface=" << interface_name |
- << ", signal=" << signal_name; |
- } |
- on_connected_callback.Run(interface_name, signal_name, on_connected_success); |
-} |
- |
-dbus::Response* MockUPowerObject::CreateCallMethodResponse( |
- dbus::MethodCall* method_call, |
- Unused) { |
- if (method_call->GetInterface() == kUPowerInterfaceName) { |
- if (method_call->GetMember() == kUPowerMethodEnumerateDevices) { |
- std::unique_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); |
- dbus::MessageWriter writer(response.get()); |
- dbus::MessageWriter array_writer(nullptr); |
- writer.OpenArray("o", &array_writer); |
- for (const auto& device : devices) |
- array_writer.AppendObjectPath(dbus::ObjectPath(device)); |
- writer.CloseContainer(&array_writer); |
- return response.release(); |
- } else if (method_call->GetMember() == kUPowerMethodGetDisplayDevice) { |
- std::unique_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); |
- if (!display_device.empty()) { |
- dbus::MessageWriter writer(response.get()); |
- writer.AppendObjectPath(dbus::ObjectPath(display_device)); |
- } |
- return response.release(); |
- } |
- } else if (method_call->GetInterface() == dbus::kPropertiesInterface) { |
- std::unique_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); |
- dbus::MessageWriter writer(response.get()); |
- if (method_call->GetMember() == dbus::kPropertiesGet) { |
- dbus::MessageReader reader(method_call); |
- std::string interface_name; |
- std::string property_name; |
- if (reader.PopString(&interface_name) && |
- reader.PopString(&property_name) && |
- property_name == kUPowerPropertyDaemonVersion) { |
- writer.AppendVariantOfString(daemon_version); |
- return response.release(); |
- } |
- } else if (method_call->GetMember() == dbus::kPropertiesGetAll) { |
- dbus::MessageWriter array_writer(nullptr); |
- dbus::MessageWriter dict_entry_writer(nullptr); |
- writer.OpenArray("{sv}", &array_writer); |
- array_writer.OpenDictEntry(&dict_entry_writer); |
- dict_entry_writer.AppendString(kUPowerPropertyDaemonVersion); |
- dict_entry_writer.AppendVariantOfString(daemon_version); |
- array_writer.CloseContainer(&dict_entry_writer); |
- writer.CloseContainer(&array_writer); |
- return response.release(); |
- } |
- } |
- |
- LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); |
- return nullptr; |
-} |
- |
-void MockUPowerObject::SignalDeviceAdded(const std::string& added_device_path) { |
- dbus::Signal signal(kUPowerInterfaceName, kUPowerSignalDeviceAdded); |
- signal.SetPath(proxy->object_path()); |
- dbus::MessageWriter writer(&signal); |
- writer.AppendObjectPath(dbus::ObjectPath(added_device_path)); |
- signal_callback_device_added.Run(&signal); |
-} |
- |
-void MockUPowerObject::SignalDeviceRemoved( |
- const std::string& removed_device_path) { |
- dbus::Signal signal(kUPowerInterfaceName, kUPowerSignalDeviceRemoved); |
- signal.SetPath(proxy->object_path()); |
- dbus::MessageWriter writer(&signal); |
- writer.AppendObjectPath(dbus::ObjectPath(removed_device_path)); |
- signal_callback_device_removed.Run(&signal); |
-} |
- |
-struct MockBatteryProperties { |
- bool is_present = true; |
- double percentage = 100; |
- uint32_t state = UPowerDeviceState::UPOWER_DEVICE_STATE_UNKNOWN; |
- int64_t time_to_empty = 0; |
- int64_t time_to_full = 0; |
- uint32_t type = UPowerDeviceType::UPOWER_DEVICE_TYPE_BATTERY; |
-}; |
- |
-class MockBatteryObject { |
- public: |
- MockBatteryObject(dbus::Bus* bus, |
- const std::string& object_path, |
- MockBatteryProperties* properties); |
- void ConnectToSignal( |
- const std::string& interface_name, |
- const std::string& signal_name, |
- dbus::ObjectProxy::SignalCallback signal_callback, |
- dbus::ObjectProxy::OnConnectedCallback on_connected_callback); |
- dbus::Response* CreateCallMethodResponse(dbus::MethodCall* method_call, |
- Unused); |
- MockBatteryObject& ExpectConnectToSignalChanged(); |
- MockBatteryObject& ExpectConnectToSignalPropertyChanged(); |
- void SignalChanged(); |
- void SignalPropertyChanged(const std::string& property_name); |
- |
- scoped_refptr<dbus::MockObjectProxy> proxy; |
- MockBatteryProperties* properties; |
- dbus::ObjectProxy::SignalCallback signal_callback_changed; |
- dbus::ObjectProxy::SignalCallback signal_callback_properties_changed; |
- |
- private: |
- void AppendPropertyToWriter(dbus::MessageWriter* writer, |
- const std::string& property_name); |
- void AppendAllPropertiesToWriter(dbus::MessageWriter* writer); |
- |
- DISALLOW_COPY_AND_ASSIGN(MockBatteryObject); |
-}; |
- |
-MockBatteryObject::MockBatteryObject(dbus::Bus* bus, |
- const std::string& object_path, |
- MockBatteryProperties* properties) |
- : proxy(new NiceMock<dbus::MockObjectProxy>(bus, |
- kUPowerServiceName, |
- dbus::ObjectPath(object_path))), |
- properties(properties) {} |
- |
-void MockBatteryObject::ConnectToSignal( |
- const std::string& interface_name, |
- const std::string& signal_name, |
- dbus::ObjectProxy::SignalCallback signal_callback, |
- dbus::ObjectProxy::OnConnectedCallback on_connected_callback) { |
- bool on_connected_success = true; |
- if (interface_name == kUPowerDeviceInterfaceName && |
- signal_name == kUPowerDeviceSignalChanged) |
- signal_callback_changed = signal_callback; |
- else if (interface_name == dbus::kPropertiesInterface && |
- signal_name == dbus::kPropertiesChanged) |
- signal_callback_properties_changed = signal_callback; |
- else |
- on_connected_success = false; |
- |
- if (!on_connected_success) { |
- LOG(WARNING) << "MockBatteryObject::" << __FUNCTION__ |
- << " Unexpected interface=" << interface_name |
- << ", signal=" << signal_name; |
- } |
- on_connected_callback.Run(interface_name, signal_name, on_connected_success); |
-} |
- |
-dbus::Response* MockBatteryObject::CreateCallMethodResponse( |
- dbus::MethodCall* method_call, |
- Unused) { |
- if (method_call->GetInterface() == dbus::kPropertiesInterface) { |
- if (method_call->GetMember() == dbus::kPropertiesGet) { |
- if (!properties) |
- return nullptr; |
- |
- dbus::MessageReader reader(method_call); |
- std::string interface_name; |
- std::string property_name; |
- if (reader.PopString(&interface_name) && |
- reader.PopString(&property_name)) { |
- std::unique_ptr<dbus::Response> response = |
- dbus::Response::CreateEmpty(); |
- dbus::MessageWriter writer(response.get()); |
- AppendPropertyToWriter(&writer, property_name); |
- return response.release(); |
- } |
- } else if (method_call->GetMember() == dbus::kPropertiesGetAll) { |
- if (!properties) |
- return nullptr; |
- |
- std::unique_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); |
- dbus::MessageWriter writer(response.get()); |
- AppendAllPropertiesToWriter(&writer); |
- return response.release(); |
- } |
- } |
- LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); |
- return nullptr; |
-} |
- |
-MockBatteryObject& MockBatteryObject::ExpectConnectToSignalChanged() { |
- EXPECT_CALL(*proxy.get(), ConnectToSignal(kUPowerDeviceInterfaceName, |
- kUPowerDeviceSignalChanged, _, _)) |
- .WillOnce(Invoke(this, &MockBatteryObject::ConnectToSignal)); |
- return *this; |
-} |
- |
-MockBatteryObject& MockBatteryObject::ExpectConnectToSignalPropertyChanged() { |
- EXPECT_CALL(*proxy.get(), ConnectToSignal(dbus::kPropertiesInterface, |
- dbus::kPropertiesChanged, _, _)) |
- .WillOnce(Invoke(this, &MockBatteryObject::ConnectToSignal)); |
- return *this; |
-} |
- |
-void MockBatteryObject::SignalChanged() { |
- dbus::Signal signal(kUPowerInterfaceName, kUPowerDeviceSignalChanged); |
- signal.SetPath(proxy->object_path()); |
- dbus::MessageWriter writer(&signal); |
- writer.AppendString(kUPowerDeviceInterfaceName); |
- signal_callback_changed.Run(&signal); |
-} |
- |
-void MockBatteryObject::SignalPropertyChanged( |
- const std::string& property_name) { |
- dbus::Signal signal(dbus::kPropertiesInterface, dbus::kPropertiesChanged); |
- signal.SetPath(proxy->object_path()); |
- dbus::MessageWriter writer(&signal); |
- writer.AppendString(kUPowerDeviceInterfaceName); |
- |
- // Dictionary {sv} of property-name => new value: |
- dbus::MessageWriter array_writer(nullptr); |
- writer.OpenArray("{sv}", &array_writer); |
- writer.CloseContainer(&array_writer); |
- |
- // Array of invalidated properties: |
- writer.OpenArray("s", &array_writer); |
- array_writer.AppendString(property_name); |
- writer.CloseContainer(&array_writer); |
- |
- signal_callback_properties_changed.Run(&signal); |
-} |
- |
-void MockBatteryObject::AppendPropertyToWriter( |
- dbus::MessageWriter* writer, |
- const std::string& property_name) { |
- if (property_name == kUPowerDevicePropertyIsPresent) |
- writer->AppendVariantOfBool(properties->is_present); |
- else if (property_name == kUPowerDevicePropertyPercentage) |
- writer->AppendVariantOfDouble(properties->percentage); |
- else if (property_name == kUPowerDevicePropertyState) |
- writer->AppendVariantOfUint32(properties->state); |
- else if (property_name == kUPowerDevicePropertyTimeToEmpty) |
- writer->AppendVariantOfInt64(properties->time_to_empty); |
- else if (property_name == kUPowerDevicePropertyTimeToFull) |
- writer->AppendVariantOfInt64(properties->time_to_full); |
- else if (property_name == kUPowerDevicePropertyType) |
- writer->AppendVariantOfUint32(properties->type); |
- else |
- LOG(WARNING) << __FUNCTION__ << " unknown property: " << property_name; |
-} |
- |
-void MockBatteryObject::AppendAllPropertiesToWriter( |
- dbus::MessageWriter* writer) { |
- dbus::MessageWriter array_writer(nullptr); |
- dbus::MessageWriter dict_entry_writer(nullptr); |
- writer->OpenArray("{sv}", &array_writer); |
- for (auto* property_name : |
- {kUPowerDevicePropertyIsPresent, kUPowerDevicePropertyState, |
- kUPowerDevicePropertyTimeToEmpty, kUPowerDevicePropertyTimeToFull, |
- kUPowerDevicePropertyType}) { |
- array_writer.OpenDictEntry(&dict_entry_writer); |
- dict_entry_writer.AppendString(property_name); |
- AppendPropertyToWriter(&dict_entry_writer, property_name); |
- array_writer.CloseContainer(&dict_entry_writer); |
- } |
- writer->CloseContainer(&array_writer); |
-} |
- |
-} // namespace |
- |
-class BatteryStatusManagerLinuxTest : public testing::Test { |
- public: |
- BatteryStatusManagerLinuxTest() {} |
- void SetUp() override; |
- |
- MockBatteryObject& SetUpDisplayDeviceProxy(MockBatteryProperties* properties); |
- void AddDevicePath(const std::string& object_path); |
- void PushFrontDevicePath(const std::string& object_path); |
- MockBatteryObject& AddDeviceProxy(const std::string& object_path, |
- MockBatteryProperties* properties); |
- MockBatteryObject& PushFrontDeviceProxy(const std::string& object_path, |
- MockBatteryProperties* properties); |
- |
- void ExpectGetObjectProxy(const std::string& object_path, |
- MockBatteryObject* mock_object); |
- void ExpectGetObjectProxy(const std::string& object_path, |
- dbus::ObjectProxy* object_proxy); |
- |
- void DeviceSignalChanged(MockBatteryObject* device); |
- void DeviceSignalPropertyChanged(MockBatteryObject* device, |
- const std::string& property_name); |
- |
- void UPowerSignalDeviceAdded(const std::string& device_path); |
- void UPowerSignalDeviceRemoved(const std::string& device_path); |
- |
- void StartBatteryStatusManagerLinux(); |
- |
- int count_battery_updates() const { return count_battery_updates_; } |
- const mojom::BatteryStatus& last_battery_status() const { |
- return last_status_; |
- } |
- |
- protected: |
- scoped_refptr<dbus::MockBus> mock_bus_; |
- MockUPowerObject mock_upower_; |
- std::unique_ptr<MockBatteryObject> mock_display_device_; |
- std::list<std::unique_ptr<MockBatteryObject>> mock_battery_devices_; |
- |
- private: |
- std::unique_ptr<MockBatteryObject> CreateMockBatteryObject( |
- const std::string& object_path, |
- MockBatteryProperties* properties); |
- void BatteryUpdateCallback(const mojom::BatteryStatus& status); |
- void SyncWithNotifierThread(); |
- |
- std::unique_ptr<BatteryStatusManagerLinux> manager_; |
- int count_battery_updates_ = 0; |
- mojom::BatteryStatus last_status_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BatteryStatusManagerLinuxTest); |
-}; |
- |
-void BatteryStatusManagerLinuxTest::SetUp() { |
- dbus::Bus::Options options; |
- options.bus_type = dbus::Bus::SYSTEM; |
- options.connection_type = dbus::Bus::PRIVATE; |
- mock_bus_ = new NiceMock<dbus::MockBus>(options); |
- |
- mock_upower_.proxy = new NiceMock<dbus::MockObjectProxy>( |
- mock_bus_.get(), kUPowerServiceName, dbus::ObjectPath(kUPowerPath)); |
- ExpectGetObjectProxy(kUPowerPath, mock_upower_.proxy.get()); |
- EXPECT_CALL(*mock_upower_.proxy.get(), MockCallMethodAndBlock(_, _)) |
- .WillRepeatedly( |
- Invoke(&mock_upower_, &MockUPowerObject::CreateCallMethodResponse)); |
- EXPECT_CALL( |
- *mock_upower_.proxy.get(), |
- ConnectToSignal(kUPowerInterfaceName, kUPowerSignalDeviceAdded, _, _)) |
- .WillOnce(Invoke(&mock_upower_, &MockUPowerObject::ConnectToSignal)); |
- EXPECT_CALL( |
- *mock_upower_.proxy.get(), |
- ConnectToSignal(kUPowerInterfaceName, kUPowerSignalDeviceRemoved, _, _)) |
- .WillOnce(Invoke(&mock_upower_, &MockUPowerObject::ConnectToSignal)); |
-} |
- |
-MockBatteryObject& BatteryStatusManagerLinuxTest::SetUpDisplayDeviceProxy( |
- MockBatteryProperties* properties) { |
- mock_upower_.display_device = kUPowerDisplayDevicePath; |
- mock_display_device_ = |
- CreateMockBatteryObject(mock_upower_.display_device, properties); |
- return *mock_display_device_.get(); |
-} |
- |
-void BatteryStatusManagerLinuxTest::AddDevicePath( |
- const std::string& object_path) { |
- mock_upower_.devices.push_back(object_path); |
-} |
- |
-void BatteryStatusManagerLinuxTest::PushFrontDevicePath( |
- const std::string& object_path) { |
- mock_upower_.devices.push_front(object_path); |
-} |
- |
-MockBatteryObject& BatteryStatusManagerLinuxTest::AddDeviceProxy( |
- const std::string& object_path, |
- MockBatteryProperties* properties) { |
- AddDevicePath(object_path); |
- mock_battery_devices_.push_back( |
- CreateMockBatteryObject(object_path, properties)); |
- return *mock_battery_devices_.back().get(); |
-} |
- |
-MockBatteryObject& BatteryStatusManagerLinuxTest::PushFrontDeviceProxy( |
- const std::string& object_path, |
- MockBatteryProperties* properties) { |
- PushFrontDevicePath(object_path); |
- mock_battery_devices_.push_front( |
- CreateMockBatteryObject(object_path, properties)); |
- return *mock_battery_devices_.front().get(); |
-} |
- |
-void BatteryStatusManagerLinuxTest::ExpectGetObjectProxy( |
- const std::string& object_path, |
- MockBatteryObject* mock_object) { |
- ExpectGetObjectProxy(object_path, mock_object->proxy.get()); |
-} |
- |
-void BatteryStatusManagerLinuxTest::ExpectGetObjectProxy( |
- const std::string& object_path, |
- dbus::ObjectProxy* object_proxy) { |
- EXPECT_CALL(*mock_bus_.get(), |
- GetObjectProxy(kUPowerServiceName, dbus::ObjectPath(object_path))) |
- .WillOnce(Return(object_proxy)); |
-} |
- |
-void BatteryStatusManagerLinuxTest::DeviceSignalChanged( |
- MockBatteryObject* device) { |
- manager_->GetNotifierThreadForTesting()->task_runner()->PostTask( |
- FROM_HERE, |
- base::Bind(&MockBatteryObject::SignalChanged, base::Unretained(device))); |
- SyncWithNotifierThread(); |
-} |
- |
-void BatteryStatusManagerLinuxTest::DeviceSignalPropertyChanged( |
- MockBatteryObject* device, |
- const std::string& property_name) { |
- manager_->GetNotifierThreadForTesting()->task_runner()->PostTask( |
- FROM_HERE, base::Bind(&MockBatteryObject::SignalPropertyChanged, |
- base::Unretained(device), property_name)); |
- SyncWithNotifierThread(); |
-} |
- |
-void BatteryStatusManagerLinuxTest::UPowerSignalDeviceAdded( |
- const std::string& device_path) { |
- ASSERT_FALSE(mock_upower_.signal_callback_device_added.is_null()); |
- manager_->GetNotifierThreadForTesting()->task_runner()->PostTask( |
- FROM_HERE, base::Bind(&MockUPowerObject::SignalDeviceAdded, |
- base::Unretained(&mock_upower_), device_path)); |
- SyncWithNotifierThread(); |
-} |
- |
-void BatteryStatusManagerLinuxTest::UPowerSignalDeviceRemoved( |
- const std::string& device_path) { |
- ASSERT_FALSE(mock_upower_.signal_callback_device_removed.is_null()); |
- manager_->GetNotifierThreadForTesting()->task_runner()->PostTask( |
- FROM_HERE, base::Bind(&MockUPowerObject::SignalDeviceRemoved, |
- base::Unretained(&mock_upower_), device_path)); |
- SyncWithNotifierThread(); |
-} |
- |
-void BatteryStatusManagerLinuxTest::StartBatteryStatusManagerLinux() { |
- manager_ = BatteryStatusManagerLinux::CreateForTesting( |
- base::Bind(&BatteryStatusManagerLinuxTest::BatteryUpdateCallback, |
- base::Unretained(this)), |
- mock_bus_.get()); |
- manager_->StartListeningBatteryChange(); |
- SyncWithNotifierThread(); |
-} |
- |
-std::unique_ptr<MockBatteryObject> |
-BatteryStatusManagerLinuxTest::CreateMockBatteryObject( |
- const std::string& object_path, |
- MockBatteryProperties* properties) { |
- std::unique_ptr<MockBatteryObject> mock_object( |
- new MockBatteryObject(mock_bus_.get(), object_path, properties)); |
- ExpectGetObjectProxy(object_path, mock_object.get()); |
- EXPECT_CALL(*mock_object->proxy.get(), MockCallMethodAndBlock(_, _)) |
- .WillRepeatedly(Invoke(mock_object.get(), |
- &MockBatteryObject::CreateCallMethodResponse)); |
- return mock_object; |
-} |
- |
-void BatteryStatusManagerLinuxTest::BatteryUpdateCallback( |
- const mojom::BatteryStatus& status) { |
- ++count_battery_updates_; |
- last_status_ = status; |
-} |
- |
-void BatteryStatusManagerLinuxTest::SyncWithNotifierThread() { |
- ASSERT_TRUE(manager_ != nullptr); |
- base::WaitableEvent event(base::WaitableEvent::ResetPolicy::MANUAL, |
- base::WaitableEvent::InitialState::NOT_SIGNALED); |
- manager_->GetNotifierThreadForTesting()->task_runner()->PostTask( |
- FROM_HERE, |
- base::Bind(&base::WaitableEvent::Signal, base::Unretained(&event))); |
- event.Wait(); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, NoBattery) { |
- mojom::BatteryStatus default_status; |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_EQ(default_status.charging, status.charging); |
- EXPECT_EQ(default_status.charging_time, status.charging_time); |
- EXPECT_EQ(default_status.discharging_time, status.discharging_time); |
- EXPECT_EQ(default_status.level, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, ChargingHalfFull) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_CHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.percentage = 50; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_TRUE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(0.5, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, ChargingTimeToFull) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_CHARGING; |
- battery_bat0_properties.time_to_full = 100; |
- battery_bat0_properties.percentage = 1; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_TRUE(status.charging); |
- EXPECT_EQ(100, status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(.01, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, FullyCharged) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = UPowerDeviceState::UPOWER_DEVICE_STATE_FULL; |
- battery_bat0_properties.time_to_full = 100; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 100; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_TRUE(status.charging); |
- EXPECT_EQ(0, status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(1, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, Discharging) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 90; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(.9, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, DischargingTimeToEmptyUnknown) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 0; |
- battery_bat0_properties.percentage = 90; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(.9, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, DeviceStateUnknown) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_UNKNOWN; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 0; |
- battery_bat0_properties.percentage = 50; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_TRUE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(.5, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, DeviceStateEmpty) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = UPowerDeviceState::UPOWER_DEVICE_STATE_EMPTY; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 0; |
- battery_bat0_properties.percentage = 0; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(0, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, LevelRoundedToThreeSignificantDigits) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.percentage = 14.56; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(0.15, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, UsingFirstBatteryDevice) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 70; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- MockBatteryProperties battery_bat1_properties; |
- battery_bat1_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_CHARGING; |
- battery_bat1_properties.time_to_full = 100; |
- battery_bat1_properties.time_to_empty = 0; |
- battery_bat1_properties.percentage = 80; |
- AddDeviceProxy(kUPowerDeviceBattery1Path, &battery_bat1_properties); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.7, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, SkipNonBatteryDevice) { |
- MockBatteryProperties line_power_AC_properties; |
- line_power_AC_properties.type = |
- UPowerDeviceType::UPOWER_DEVICE_TYPE_LINE_POWER; |
- AddDeviceProxy(kUPowerDeviceACLinePath, &line_power_AC_properties); |
- |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 70; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.7, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, UpdateDevicePropertyState) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_CHARGING; |
- battery_bat0_properties.time_to_full = 100; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 80; |
- MockBatteryObject& battery_bat0 = |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_TRUE(status.charging); |
- EXPECT_EQ(100, status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(.8, status.level); |
- |
- int last_count = count_battery_updates(); |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- DeviceSignalPropertyChanged(&battery_bat0, kUPowerDevicePropertyState); |
- status = last_battery_status(); |
- |
- EXPECT_LT(last_count, count_battery_updates()); |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(.8, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, UpdateDevicePropertyPercentage) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 100; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 80; |
- MockBatteryObject& battery_bat0 = |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(.8, status.level); |
- |
- int last_count = count_battery_updates(); |
- battery_bat0_properties.percentage = 70; |
- DeviceSignalPropertyChanged(&battery_bat0, kUPowerDevicePropertyPercentage); |
- status = last_battery_status(); |
- |
- EXPECT_LT(last_count, count_battery_updates()); |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(.7, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, UpdateDevicePropertyTimeToEmpty) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 100; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 80; |
- MockBatteryObject& battery_bat0 = |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(.8, status.level); |
- |
- int last_count = count_battery_updates(); |
- battery_bat0_properties.time_to_empty = 150; |
- DeviceSignalPropertyChanged(&battery_bat0, kUPowerDevicePropertyTimeToEmpty); |
- status = last_battery_status(); |
- |
- EXPECT_LT(last_count, count_battery_updates()); |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(150, status.discharging_time); |
- EXPECT_EQ(.8, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, UpdateDevicePropertyTimeToFull) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_CHARGING; |
- battery_bat0_properties.time_to_full = 100; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 80; |
- MockBatteryObject& battery_bat0 = |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_TRUE(status.charging); |
- EXPECT_EQ(100, status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(.8, status.level); |
- |
- int last_count = count_battery_updates(); |
- battery_bat0_properties.time_to_full = 50; |
- DeviceSignalPropertyChanged(&battery_bat0, kUPowerDevicePropertyTimeToFull); |
- status = last_battery_status(); |
- |
- EXPECT_LT(last_count, count_battery_updates()); |
- EXPECT_TRUE(status.charging); |
- EXPECT_EQ(50, status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(.8, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, OldDaemonDeviceSignalChanged) { |
- mock_upower_.daemon_version = "0.9.23"; |
- |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 100; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 80; |
- MockBatteryObject& battery_bat0 = |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalChanged() |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(.8, status.level); |
- |
- int last_count = count_battery_updates(); |
- battery_bat0_properties.percentage = 70; |
- DeviceSignalChanged(&battery_bat0); |
- status = last_battery_status(); |
- |
- EXPECT_LT(last_count, count_battery_updates()); |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(.7, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, DisplayDeviceNoBattery) { |
- MockBatteryProperties display_device_properties; |
- display_device_properties.type = UPowerDeviceType::UPOWER_DEVICE_TYPE_UNKNOWN; |
- SetUpDisplayDeviceProxy(&display_device_properties); |
- |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 90; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.9, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, DisplayDeviceBattery) { |
- MockBatteryProperties display_device_properties; |
- display_device_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- display_device_properties.time_to_full = 0; |
- display_device_properties.time_to_empty = 200; |
- display_device_properties.percentage = 90; |
- SetUpDisplayDeviceProxy(&display_device_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(.9, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, DisplayDeviceBatterySkipsEnumerate) { |
- MockBatteryProperties display_device_properties; |
- display_device_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- display_device_properties.time_to_full = 0; |
- display_device_properties.time_to_empty = 200; |
- display_device_properties.percentage = 90; |
- SetUpDisplayDeviceProxy(&display_device_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- AddDevicePath(kUPowerDeviceACLinePath); |
- AddDevicePath(kUPowerDeviceBattery0Path); |
- AddDevicePath(kUPowerDeviceBattery1Path); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(.9, status.level); |
-} |
- |
-// Adding a display-device will make the BatteryStatusManagerLinux switch to |
-// the display-device. |
-TEST_F(BatteryStatusManagerLinuxTest, SignalDeviceAddedDisplayDevice) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 70; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.7, status.level); |
- |
- int last_count = count_battery_updates(); |
- MockBatteryProperties display_device_properties; |
- display_device_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_CHARGING; |
- display_device_properties.time_to_full = 100; |
- display_device_properties.time_to_empty = 150; |
- display_device_properties.percentage = 80; |
- SetUpDisplayDeviceProxy(&display_device_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- UPowerSignalDeviceAdded(mock_upower_.display_device); |
- status = last_battery_status(); |
- EXPECT_LT(last_count, count_battery_updates()); |
- |
- EXPECT_TRUE(status.charging); |
- EXPECT_EQ(100, status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(0.8, status.level); |
-} |
- |
-// Prepending a battery should switch to that battery. |
-TEST_F(BatteryStatusManagerLinuxTest, SignalDeviceAddedBatteryAtFront) { |
- MockBatteryProperties battery_bat1_properties; |
- battery_bat1_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat1_properties.time_to_full = 0; |
- battery_bat1_properties.time_to_empty = 200; |
- battery_bat1_properties.percentage = 70; |
- AddDeviceProxy(kUPowerDeviceBattery1Path, &battery_bat1_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.7, status.level); |
- |
- int last_count = count_battery_updates(); |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 150; |
- battery_bat0_properties.percentage = 50; |
- PushFrontDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- UPowerSignalDeviceAdded(kUPowerDeviceBattery0Path); |
- status = last_battery_status(); |
- EXPECT_LT(last_count, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(150, status.discharging_time); |
- EXPECT_EQ(0.5, status.level); |
-} |
- |
-// Appending a battery should keep the current battery. |
-TEST_F(BatteryStatusManagerLinuxTest, SignalDeviceAddedBatteryAtBack) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 150; |
- battery_bat0_properties.percentage = 50; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(150, status.discharging_time); |
- EXPECT_EQ(0.5, status.level); |
- |
- int last_count = count_battery_updates(); |
- MockBatteryProperties battery_bat1_properties; |
- battery_bat1_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat1_properties.time_to_full = 0; |
- battery_bat1_properties.time_to_empty = 200; |
- battery_bat1_properties.percentage = 70; |
- AddDeviceProxy(kUPowerDeviceBattery1Path, &battery_bat1_properties); |
- UPowerSignalDeviceAdded(kUPowerDeviceBattery1Path); |
- status = last_battery_status(); |
- EXPECT_LT(last_count, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(150, status.discharging_time); |
- EXPECT_EQ(0.5, status.level); |
-} |
- |
-// Adding a device that is no battery should not change anything. |
-TEST_F(BatteryStatusManagerLinuxTest, SignalDeviceAddedNoBattery) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 70; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.7, status.level); |
- |
- int last_count = count_battery_updates(); |
- MockBatteryProperties line_power_AC_properties; |
- line_power_AC_properties.type = |
- UPowerDeviceType::UPOWER_DEVICE_TYPE_LINE_POWER; |
- PushFrontDeviceProxy(kUPowerDeviceACLinePath, &line_power_AC_properties); |
- UPowerSignalDeviceAdded(kUPowerDeviceACLinePath); |
- status = last_battery_status(); |
- EXPECT_LT(last_count, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.7, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, SignalDeviceRemovedBattery) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 70; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- MockBatteryProperties battery_bat1_properties; |
- battery_bat1_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_CHARGING; |
- battery_bat1_properties.time_to_full = 100; |
- battery_bat1_properties.time_to_empty = 0; |
- battery_bat1_properties.percentage = 80; |
- MockBatteryObject& battery_bat1 = |
- AddDeviceProxy(kUPowerDeviceBattery1Path, &battery_bat1_properties); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.7, status.level); |
- |
- int last_count = count_battery_updates(); |
- ExpectGetObjectProxy(kUPowerDeviceBattery1Path, &battery_bat1); |
- battery_bat1.ExpectConnectToSignalPropertyChanged(); |
- |
- EXPECT_EQ(kUPowerDeviceBattery0Path, mock_upower_.devices.front()); |
- mock_upower_.devices.pop_front(); |
- UPowerSignalDeviceRemoved(kUPowerDeviceBattery0Path); |
- status = last_battery_status(); |
- EXPECT_LT(last_count, count_battery_updates()); |
- |
- EXPECT_TRUE(status.charging); |
- EXPECT_EQ(100, status.charging_time); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.discharging_time); |
- EXPECT_EQ(0.8, status.level); |
-} |
- |
-TEST_F(BatteryStatusManagerLinuxTest, SignalDeviceRemovedOther) { |
- MockBatteryProperties battery_bat0_properties; |
- battery_bat0_properties.state = |
- UPowerDeviceState::UPOWER_DEVICE_STATE_DISCHARGING; |
- battery_bat0_properties.time_to_full = 0; |
- battery_bat0_properties.time_to_empty = 200; |
- battery_bat0_properties.percentage = 70; |
- AddDeviceProxy(kUPowerDeviceBattery0Path, &battery_bat0_properties) |
- .ExpectConnectToSignalPropertyChanged(); |
- |
- MockBatteryProperties line_power_AC_properties; |
- line_power_AC_properties.type = |
- UPowerDeviceType::UPOWER_DEVICE_TYPE_LINE_POWER; |
- AddDeviceProxy(kUPowerDeviceACLinePath, &line_power_AC_properties); |
- |
- StartBatteryStatusManagerLinux(); |
- mojom::BatteryStatus status = last_battery_status(); |
- EXPECT_LE(1, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.7, status.level); |
- |
- int last_count = count_battery_updates(); |
- mock_upower_.devices.pop_back(); |
- UPowerSignalDeviceRemoved(kUPowerDeviceACLinePath); |
- status = last_battery_status(); |
- EXPECT_EQ(last_count, count_battery_updates()); |
- |
- EXPECT_FALSE(status.charging); |
- EXPECT_EQ(std::numeric_limits<double>::infinity(), status.charging_time); |
- EXPECT_EQ(200, status.discharging_time); |
- EXPECT_EQ(0.7, status.level); |
-} |
- |
-} // namespace device |