diff options
Diffstat (limited to 'src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc')
-rw-r--r-- | src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc | 82 |
1 files changed, 70 insertions, 12 deletions
diff --git a/src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc b/src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc index 06cca74ba9..fd459ea094 100644 --- a/src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc +++ b/src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Ford Motor Company + * Copyright (c) 2017, Ford Motor Company * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,13 +36,16 @@ #include "hmi_message_handler/messagebroker_adapter.h" #include "hmi_message_handler/mock_hmi_message_observer.h" #include "hmi_message_handler/mock_hmi_message_handler_settings.h" -#include "utils/make_shared.h" +#include "hmi_message_handler/mock_hmi_message_adapter_impl.h" +#include "utils/test_async_waiter.h" namespace test { namespace components { namespace hmi_message_handler_test { -using ::testing::ReturnRef; +using ::testing::Return; +using ::testing::_; + class HMIMessageHandlerImplTest : public ::testing::Test { public: HMIMessageHandlerImplTest() @@ -53,20 +56,23 @@ class HMIMessageHandlerImplTest : public ::testing::Test { protected: hmi_message_handler::MessageBrokerAdapter* mb_adapter_; hmi_message_handler::HMIMessageHandlerImpl* hmi_handler_; - hmi_message_handler::MockHMIMessageObserver* mock_hmi_message_observer_; + MockHMIMessageObserver* mock_hmi_message_observer_; + testing::NiceMock<MockHMIMessageHandlerSettings> mock_hmi_message_handler_settings; const uint64_t stack_size = 1000u; virtual void SetUp() OVERRIDE { ON_CALL(mock_hmi_message_handler_settings, thread_min_stack_size()) - .WillByDefault(ReturnRef(stack_size)); + .WillByDefault(Return(stack_size)); hmi_handler_ = new hmi_message_handler::HMIMessageHandlerImpl( mock_hmi_message_handler_settings); + ASSERT_TRUE(NULL != hmi_handler_); mb_adapter_ = new hmi_message_handler::MessageBrokerAdapter( - hmi_handler_, "localhost", 22); - mock_hmi_message_observer_ = - new hmi_message_handler::MockHMIMessageObserver(); + hmi_handler_, "127.0.0.1", 8087); + ASSERT_TRUE(NULL != mb_adapter_); + mock_hmi_message_observer_ = new MockHMIMessageObserver(); + ASSERT_TRUE(NULL != mock_hmi_message_observer_); hmi_handler_->set_message_observer(mock_hmi_message_observer_); EXPECT_TRUE(NULL != hmi_handler_->observer()); } @@ -77,6 +83,13 @@ class HMIMessageHandlerImplTest : public ::testing::Test { delete hmi_handler_; delete mb_adapter_; } + + hmi_message_handler::MessageSharedPointer CreateMessage() { + // The ServiceType doesn't really matter + return new application_manager::Message( + protocol_handler::MessagePriority::FromServiceType( + protocol_handler::ServiceType::kInvalidServiceType)); + } }; TEST_F(HMIMessageHandlerImplTest, @@ -91,16 +104,23 @@ TEST_F(HMIMessageHandlerImplTest, TEST_F(HMIMessageHandlerImplTest, OnErrorSending_NotEmptyMessage_ExpectOnErrorSendingProceeded) { // Arrange - utils::SharedPtr<application_manager::Message> message( - utils::MakeShared<application_manager::Message>( - protocol_handler::MessagePriority::FromServiceType( - protocol_handler::ServiceType::kControl))); + utils::SharedPtr<application_manager::Message> message = CreateMessage(); EXPECT_CALL(*mock_hmi_message_observer_, OnErrorSending(message)); // Act hmi_handler_->OnErrorSending(message); } +TEST_F(HMIMessageHandlerImplTest, OnErrorSending_InvalidObserver_Cancelled) { + // Arrange + utils::SharedPtr<application_manager::Message> message = CreateMessage(); + + hmi_handler_->set_message_observer(NULL); + EXPECT_CALL(*mock_hmi_message_observer_, OnErrorSending(_)).Times(0); + // Act + hmi_handler_->OnErrorSending(message); +} + TEST_F(HMIMessageHandlerImplTest, AddHMIMessageAdapter_AddExistedAdapter_ExpectAdded) { // Check before action @@ -131,6 +151,44 @@ TEST_F(HMIMessageHandlerImplTest, RemoveHMIMessageAdapter_ExpectRemoved) { EXPECT_TRUE(hmi_handler_->message_adapters().empty()); } +// TODO(atimchenko) SDLOPEN-44 Wrong message to observer +TEST_F(HMIMessageHandlerImplTest, + DISABLED_OnMessageReceived_ValidObserver_Success) { + hmi_message_handler::MessageSharedPointer message = CreateMessage(); + EXPECT_CALL(*mock_hmi_message_observer_, OnMessageReceived(message)); + + hmi_handler_->OnMessageReceived(message); + // Wait for the message to be processed + hmi_handler_->messages_from_hmi()->WaitDumpQueue(); +} + +TEST_F(HMIMessageHandlerImplTest, OnMessageReceived_InvalidObserver_Cancelled) { + hmi_message_handler::MessageSharedPointer message = CreateMessage(); + EXPECT_CALL(*mock_hmi_message_observer_, OnMessageReceived(_)).Times(0); + // Make the observer invalid + hmi_handler_->set_message_observer(NULL); + hmi_handler_->OnMessageReceived(message); + hmi_handler_->messages_from_hmi()->WaitDumpQueue(); +} + +TEST_F(HMIMessageHandlerImplTest, SendMessageToHMI_Success) { + hmi_message_handler::MessageSharedPointer message = CreateMessage(); + + TestAsyncWaiter waiter; + + MockHMIMessageAdapterImpl message_adapter(hmi_handler_); + EXPECT_CALL(message_adapter, SendMessageToHMI(message)) + .WillOnce(NotifyTestAsyncWaiter(&waiter)); + + hmi_handler_->AddHMIMessageAdapter(&message_adapter); + hmi_handler_->SendMessageToHMI(message); + + // Wait for the message to be processed + hmi_handler_->messages_to_hmi()->WaitDumpQueue(); + + EXPECT_TRUE(waiter.WaitFor(1, 100)); +} + } // namespace hmi_message_handler_test } // namespace components } // namespace test |