diff options
Diffstat (limited to 'osp/impl/service_publisher_impl_unittest.cc')
-rw-r--r-- | osp/impl/service_publisher_impl_unittest.cc | 81 |
1 files changed, 44 insertions, 37 deletions
diff --git a/osp/impl/service_publisher_impl_unittest.cc b/osp/impl/service_publisher_impl_unittest.cc index 8c8bc9ec..b77a8aa5 100644 --- a/osp/impl/service_publisher_impl_unittest.cc +++ b/osp/impl/service_publisher_impl_unittest.cc @@ -5,6 +5,7 @@ #include "osp/impl/service_publisher_impl.h" #include <memory> +#include <utility> #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -13,6 +14,7 @@ namespace openscreen { namespace osp { namespace { +using ::testing::_; using ::testing::Expectation; using ::testing::NiceMock; @@ -26,7 +28,7 @@ class MockObserver final : public ServicePublisher::Observer { MOCK_METHOD0(OnStopped, void()); MOCK_METHOD0(OnSuspended, void()); - MOCK_METHOD1(OnError, void(ServicePublisherError)); + MOCK_METHOD1(OnError, void(Error)); MOCK_METHOD1(OnMetrics, void(ServicePublisher::Metrics)); }; @@ -38,23 +40,27 @@ class MockMdnsDelegate : public ServicePublisherImpl::Delegate { using ServicePublisherImpl::Delegate::SetState; - MOCK_METHOD0(StartPublisher, void()); - MOCK_METHOD0(StartAndSuspendPublisher, void()); + MOCK_METHOD1(StartPublisher, void(const ServicePublisher::Config&)); + MOCK_METHOD1(StartAndSuspendPublisher, void(const ServicePublisher::Config&)); MOCK_METHOD0(StopPublisher, void()); MOCK_METHOD0(SuspendPublisher, void()); - MOCK_METHOD0(ResumePublisher, void()); + MOCK_METHOD1(ResumePublisher, void(const ServicePublisher::Config&)); MOCK_METHOD0(RunTasksPublisher, void()); }; class ServicePublisherImplTest : public ::testing::Test { protected: void SetUp() override { - service_publisher_ = - std::make_unique<ServicePublisherImpl>(nullptr, &mock_delegate_); + auto mock_delegate = std::make_unique<NiceMock<MockMdnsDelegate>>(); + mock_delegate_ = mock_delegate.get(); + service_publisher_ = std::make_unique<ServicePublisherImpl>( + nullptr, std::move(mock_delegate)); + service_publisher_->SetConfig(config); } - NiceMock<MockMdnsDelegate> mock_delegate_; + NiceMock<MockMdnsDelegate>* mock_delegate_ = nullptr; std::unique_ptr<ServicePublisherImpl> service_publisher_; + ServicePublisher::Config config; }; } // namespace @@ -62,99 +68,100 @@ class ServicePublisherImplTest : public ::testing::Test { TEST_F(ServicePublisherImplTest, NormalStartStop) { ASSERT_EQ(State::kStopped, service_publisher_->state()); - EXPECT_CALL(mock_delegate_, StartPublisher()); + EXPECT_CALL(*mock_delegate_, StartPublisher(_)); EXPECT_TRUE(service_publisher_->Start()); EXPECT_FALSE(service_publisher_->Start()); EXPECT_EQ(State::kStarting, service_publisher_->state()); - mock_delegate_.SetState(State::kRunning); + mock_delegate_->SetState(State::kRunning); EXPECT_EQ(State::kRunning, service_publisher_->state()); - EXPECT_CALL(mock_delegate_, StopPublisher()); + EXPECT_CALL(*mock_delegate_, StopPublisher()); EXPECT_TRUE(service_publisher_->Stop()); EXPECT_FALSE(service_publisher_->Stop()); EXPECT_EQ(State::kStopping, service_publisher_->state()); - mock_delegate_.SetState(State::kStopped); + mock_delegate_->SetState(State::kStopped); EXPECT_EQ(State::kStopped, service_publisher_->state()); } TEST_F(ServicePublisherImplTest, StopBeforeRunning) { - EXPECT_CALL(mock_delegate_, StartPublisher()); + EXPECT_CALL(*mock_delegate_, StartPublisher(_)); EXPECT_TRUE(service_publisher_->Start()); EXPECT_EQ(State::kStarting, service_publisher_->state()); - EXPECT_CALL(mock_delegate_, StopPublisher()); + EXPECT_CALL(*mock_delegate_, StopPublisher()); EXPECT_TRUE(service_publisher_->Stop()); EXPECT_FALSE(service_publisher_->Stop()); EXPECT_EQ(State::kStopping, service_publisher_->state()); - mock_delegate_.SetState(State::kStopped); + mock_delegate_->SetState(State::kStopped); EXPECT_EQ(State::kStopped, service_publisher_->state()); } TEST_F(ServicePublisherImplTest, StartSuspended) { - EXPECT_CALL(mock_delegate_, StartAndSuspendPublisher()); - EXPECT_CALL(mock_delegate_, StartPublisher()).Times(0); + EXPECT_CALL(*mock_delegate_, StartAndSuspendPublisher(_)); + EXPECT_CALL(*mock_delegate_, StartPublisher(_)).Times(0); EXPECT_TRUE(service_publisher_->StartAndSuspend()); EXPECT_FALSE(service_publisher_->Start()); EXPECT_EQ(State::kStarting, service_publisher_->state()); - mock_delegate_.SetState(State::kSuspended); + mock_delegate_->SetState(State::kSuspended); EXPECT_EQ(State::kSuspended, service_publisher_->state()); } TEST_F(ServicePublisherImplTest, SuspendAndResume) { EXPECT_TRUE(service_publisher_->Start()); - mock_delegate_.SetState(State::kRunning); + mock_delegate_->SetState(State::kRunning); - EXPECT_CALL(mock_delegate_, ResumePublisher()).Times(0); - EXPECT_CALL(mock_delegate_, SuspendPublisher()).Times(2); + EXPECT_CALL(*mock_delegate_, ResumePublisher(_)).Times(0); + EXPECT_CALL(*mock_delegate_, SuspendPublisher()).Times(2); EXPECT_FALSE(service_publisher_->Resume()); EXPECT_TRUE(service_publisher_->Suspend()); EXPECT_TRUE(service_publisher_->Suspend()); - mock_delegate_.SetState(State::kSuspended); + mock_delegate_->SetState(State::kSuspended); EXPECT_EQ(State::kSuspended, service_publisher_->state()); - EXPECT_CALL(mock_delegate_, StartPublisher()).Times(0); - EXPECT_CALL(mock_delegate_, SuspendPublisher()).Times(0); - EXPECT_CALL(mock_delegate_, ResumePublisher()).Times(2); + EXPECT_CALL(*mock_delegate_, StartPublisher(_)).Times(0); + EXPECT_CALL(*mock_delegate_, SuspendPublisher()).Times(0); + EXPECT_CALL(*mock_delegate_, ResumePublisher(_)).Times(2); EXPECT_FALSE(service_publisher_->Start()); EXPECT_FALSE(service_publisher_->Suspend()); EXPECT_TRUE(service_publisher_->Resume()); EXPECT_TRUE(service_publisher_->Resume()); - mock_delegate_.SetState(State::kRunning); + mock_delegate_->SetState(State::kRunning); EXPECT_EQ(State::kRunning, service_publisher_->state()); - EXPECT_CALL(mock_delegate_, ResumePublisher()).Times(0); + EXPECT_CALL(*mock_delegate_, ResumePublisher(_)).Times(0); EXPECT_FALSE(service_publisher_->Resume()); } TEST_F(ServicePublisherImplTest, ObserverTransitions) { MockObserver observer; - NiceMock<MockMdnsDelegate> mock_delegate; - service_publisher_ = - std::make_unique<ServicePublisherImpl>(&observer, &mock_delegate); + auto mock_delegate = std::make_unique<NiceMock<MockMdnsDelegate>>(); + NiceMock<MockMdnsDelegate>* const mock_delegate_ptr = mock_delegate.get(); + auto service_publisher = std::make_unique<ServicePublisherImpl>( + &observer, std::move(mock_delegate)); - service_publisher_->Start(); + service_publisher->Start(); Expectation start_from_stopped = EXPECT_CALL(observer, OnStarted()); - mock_delegate.SetState(State::kRunning); + mock_delegate_ptr->SetState(State::kRunning); - service_publisher_->Suspend(); + service_publisher->Suspend(); Expectation suspend_from_running = EXPECT_CALL(observer, OnSuspended()).After(start_from_stopped); - mock_delegate.SetState(State::kSuspended); + mock_delegate_ptr->SetState(State::kSuspended); - service_publisher_->Resume(); + service_publisher->Resume(); Expectation resume_from_suspended = EXPECT_CALL(observer, OnStarted()).After(suspend_from_running); - mock_delegate.SetState(State::kRunning); + mock_delegate_ptr->SetState(State::kRunning); - service_publisher_->Stop(); + service_publisher->Stop(); EXPECT_CALL(observer, OnStopped()).After(resume_from_suspended); - mock_delegate.SetState(State::kStopped); + mock_delegate_ptr->SetState(State::kStopped); } } // namespace osp |