aboutsummaryrefslogtreecommitdiff
path: root/osp/impl/service_publisher_impl_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'osp/impl/service_publisher_impl_unittest.cc')
-rw-r--r--osp/impl/service_publisher_impl_unittest.cc81
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