| // Copyright 2021 The Chromium OS 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 <dbus/mock_bus.h> |
| #include <dbus/mock_object_proxy.h> |
| #include <dbus/power_manager/dbus-constants.h> |
| #include <gmock/gmock.h> |
| #include <gtest/gtest.h> |
| |
| #include "rmad/system/power_manager_client_impl.h" |
| |
| using testing::_; |
| using testing::Return; |
| using testing::StrictMock; |
| |
| namespace rmad { |
| |
| class PowerManagerClientTest : public testing::Test { |
| public: |
| PowerManagerClientTest() |
| : mock_bus_(new StrictMock<dbus::MockBus>(dbus::Bus::Options())), |
| mock_object_proxy_(new StrictMock<dbus::MockObjectProxy>( |
| mock_bus_.get(), |
| power_manager::kPowerManagerServiceName, |
| dbus::ObjectPath(power_manager::kPowerManagerServicePath))) {} |
| ~PowerManagerClientTest() override = default; |
| |
| dbus::MockObjectProxy* mock_object_proxy() const { |
| return mock_object_proxy_.get(); |
| } |
| |
| PowerManagerClientImpl* power_manager_client() const { |
| return power_manager_client_.get(); |
| } |
| |
| void SetUp() override { |
| EXPECT_CALL(*mock_bus_, |
| GetObjectProxy( |
| power_manager::kPowerManagerServiceName, |
| dbus::ObjectPath(power_manager::kPowerManagerServicePath))) |
| .WillOnce(Return(mock_object_proxy_.get())); |
| power_manager_client_ = std::make_unique<PowerManagerClientImpl>(mock_bus_); |
| } |
| |
| private: |
| scoped_refptr<dbus::MockBus> mock_bus_; |
| scoped_refptr<dbus::MockObjectProxy> mock_object_proxy_; |
| std::unique_ptr<PowerManagerClientImpl> power_manager_client_; |
| }; |
| |
| TEST_F(PowerManagerClientTest, Restart_Success) { |
| EXPECT_CALL(*mock_object_proxy(), CallMethodAndBlock(_, _)) |
| .WillOnce( |
| [](dbus::MethodCall*, int) { return dbus::Response::CreateEmpty(); }); |
| EXPECT_TRUE(power_manager_client()->Restart()); |
| } |
| |
| TEST_F(PowerManagerClientTest, Restart_Failed) { |
| EXPECT_CALL(*mock_object_proxy(), CallMethodAndBlock(_, _)) |
| .WillOnce([](dbus::MethodCall*, int) { return nullptr; }); |
| EXPECT_FALSE(power_manager_client()->Restart()); |
| } |
| |
| TEST_F(PowerManagerClientTest, Shutdown_Success) { |
| EXPECT_CALL(*mock_object_proxy(), CallMethodAndBlock(_, _)) |
| .WillOnce( |
| [](dbus::MethodCall*, int) { return dbus::Response::CreateEmpty(); }); |
| EXPECT_TRUE(power_manager_client()->Shutdown()); |
| } |
| |
| TEST_F(PowerManagerClientTest, Shutdown_Failed) { |
| EXPECT_CALL(*mock_object_proxy(), CallMethodAndBlock(_, _)) |
| .WillOnce([](dbus::MethodCall*, int) { return nullptr; }); |
| EXPECT_FALSE(power_manager_client()->Shutdown()); |
| } |
| |
| } // namespace rmad |