diff options
author | Andrey Oleynik (GitHub) <aoleynik@luxoft.com> | 2017-09-25 16:32:45 +0300 |
---|---|---|
committer | Andriy Byzhynar <AByzhynar@luxoft.com> | 2018-01-18 11:28:38 +0200 |
commit | a6eb294c8f1805d2b3e39fc71f31f461f2cb4a65 (patch) | |
tree | db446569713df45088ea53e0f5697a06ec6757ba | |
parent | 7d03482c7f9689a375cd87f3acabda1b9af7624f (diff) | |
download | sdl_core-a6eb294c8f1805d2b3e39fc71f31f461f2cb4a65.tar.gz |
Removes odd interface, updates TM unit tests
10 files changed, 165 insertions, 97 deletions
diff --git a/src/components/include/transport_manager/transport_adapter/transport_adapter_event.h b/src/components/include/transport_manager/transport_adapter/transport_adapter_event.h index 0c06c39723..c277faa339 100644 --- a/src/components/include/transport_manager/transport_adapter/transport_adapter_event.h +++ b/src/components/include/transport_manager/transport_adapter/transport_adapter_event.h @@ -46,7 +46,6 @@ enum class EventTypeEnum { ON_SEARCH_DONE = 0, ON_SEARCH_FAIL, ON_DEVICE_LIST_UPDATED, - ON_DEVICE_ADDED, ON_FIND_NEW_APPLICATIONS_REQUEST, ON_CONNECT_DONE, ON_CONNECT_FAIL, diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h index 8cc812fc4d..db8ab4fce5 100644 --- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h +++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener.h @@ -85,13 +85,6 @@ class TransportAdapterListener { const TransportAdapter* transport_adapter) = 0; /** - * @brief OnDeviceAdded is triggered by transport adapter on new device - * coming - * @param device_uid Device id of new device - */ - virtual void OnDeviceAdded(DeviceUID device_uid) = 0; - - /** * @brief Reaction to "Find new applications" request * @param adapter Current transport adapter */ diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h index 4977547f97..f5a7934ed6 100644 --- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h +++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_listener_impl.h @@ -85,13 +85,6 @@ class TransportAdapterListenerImpl */ virtual void OnDeviceListUpdated(const TransportAdapter* adapter); - /** - * @brief OnDeviceAdded is triggered by transport adapter on new device - * coming and sends ON_DEVICE_ADDED event to transport manager - * @param device_uid Device id of new device - */ - virtual void OnDeviceAdded(DeviceUID device_uid); - virtual void OnFindNewApplicationsRequest(const TransportAdapter* adapter); /** diff --git a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h index 4c8e36b745..5cf488f1b7 100644 --- a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h +++ b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h @@ -245,6 +245,8 @@ class TransportManagerImpl int Visibility(const bool& on_off) const OVERRIDE; /** + * DEPRECATED + * Must be moved under 'private' section * @brief Updates total device list with info from specific transport adapter. * @param ta Transport adapter */ @@ -475,12 +477,6 @@ class TransportManagerImpl unsigned int frame_size, unsigned char** frame); - /** - * @brief OnDeviceAdded processes new device detected by specific transport - * adapter - * @param ta Pointer to transport adapter - */ - void OnDeviceAdded(TransportAdapter* ta); void OnDeviceListUpdated(TransportAdapter* ta); void DisconnectAllDevices(); void TerminateAllAdapters(); @@ -498,8 +494,9 @@ class TransportManagerImpl * performs its update on adding/removal of devices. Also used by IAP2 * switching flow to substitute BT with USB transport * @param ta Pointer to transport adapter + * @return True if mapping has been updated, otherwise - false */ - void UpdateDeviceMapping(TransportAdapter* ta); + bool UpdateDeviceMapping(TransportAdapter* ta); }; // class TransportManagerImpl } // namespace transport_manager #endif // SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_MANAGER_IMPL_H_ diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc index 4513597400..ba85ea8276 100644 --- a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc +++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc @@ -388,7 +388,7 @@ DeviceSptr TransportAdapterImpl::AddDevice(DeviceSptr device) { for (TransportAdapterListenerList::iterator it = listeners_.begin(); it != listeners_.end(); ++it) { - (*it)->OnDeviceAdded(device->unique_device_id()); + (*it)->OnDeviceListUpdated(this); } if (ToBeAutoConnected(device)) { ConnectDevice(device); diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc index 5c561ad6e3..a559174dd7 100644 --- a/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc +++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_listener_impl.cc @@ -98,20 +98,6 @@ void TransportAdapterListenerImpl::OnDeviceListUpdated( LOG4CXX_TRACE(logger_, "exit"); } -void TransportAdapterListenerImpl::OnDeviceAdded(DeviceUID device_uid) { - const TransportAdapterEvent event(EventTypeEnum::ON_DEVICE_ADDED, - transport_adapter_, - device_uid, - 0, - ::protocol_handler::RawMessagePtr(), - BaseErrorPtr()); - if (transport_manager_ != NULL && - transport_manager::E_SUCCESS != - transport_manager_->ReceiveEventFromDevice(event)) { - LOG4CXX_WARN(logger_, "Failed to receive event from device"); - } -} - void TransportAdapterListenerImpl::OnFindNewApplicationsRequest( const TransportAdapter* adapter) { LOG4CXX_TRACE(logger_, "enter. adapter* " << adapter); diff --git a/src/components/transport_manager/src/transport_manager_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc index 8c5259f811..3896c5961b 100644 --- a/src/components/transport_manager/src/transport_manager_impl.cc +++ b/src/components/transport_manager/src/transport_manager_impl.cc @@ -748,12 +748,7 @@ bool TransportManagerImpl::TryDeviceSwitch( return true; } -void TransportManagerImpl::OnDeviceAdded(TransportAdapter* ta) { - LOG4CXX_AUTO_TRACE(logger_); - OnDeviceListUpdated(ta); -} - -void TransportManagerImpl::UpdateDeviceMapping( +bool TransportManagerImpl::UpdateDeviceMapping( transport_adapter::TransportAdapter* ta) { const DeviceList device_list = ta->GetDeviceList(); LOG4CXX_DEBUG(logger_, "DEVICE_LIST_UPDATED " << device_list.size()); @@ -794,17 +789,27 @@ void TransportManagerImpl::UpdateDeviceMapping( DeviceInfo info( device_handle, *it, ta->DeviceName(*it), ta->GetConnectionType()); RaiseEvent(&TransportManagerListener::OnDeviceFound, info); + } else { + LOG4CXX_ERROR( + logger_, + "Same UUID " + *it + "detected, but transport switching failed."); + return false; } } LOG4CXX_DEBUG(logger_, "After update. Device map size is " << device_to_adapter_map_.size()); + + return true; } void TransportManagerImpl::OnDeviceListUpdated(TransportAdapter* ta) { LOG4CXX_TRACE(logger_, "enter. TransportAdapter: " << ta); - UpdateDeviceMapping(ta); + if (!UpdateDeviceMapping(ta)) { + LOG4CXX_ERROR(logger_, "Device list update failed."); + return; + } UpdateDeviceList(ta); std::vector<DeviceInfo> device_infos; device_list_lock_.AcquireForReading(); @@ -838,11 +843,6 @@ void TransportManagerImpl::Handle(TransportAdapterEvent event) { LOG4CXX_DEBUG(logger_, "event_type = ON_DEVICE_LIST_UPDATED"); break; } - case EventTypeEnum::ON_DEVICE_ADDED: { - OnDeviceAdded(event.transport_adapter); - LOG4CXX_DEBUG(logger_, "event_type = ON_ADDED"); - break; - } case EventTypeEnum::ON_FIND_NEW_APPLICATIONS_REQUEST: { RaiseEvent(&TransportManagerListener::OnFindNewApplicationsRequest); LOG4CXX_DEBUG(logger_, "event_type = ON_FIND_NEW_APPLICATIONS_REQUEST"); diff --git a/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_transport_adapter_listener.h b/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_transport_adapter_listener.h index 5e873211b2..8302a63beb 100644 --- a/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_transport_adapter_listener.h +++ b/src/components/transport_manager/test/include/transport_manager/transport_adapter/mock_transport_adapter_listener.h @@ -61,7 +61,6 @@ class MockTransportAdapterListener : public TransportAdapterListener { void(const TransportAdapter* adapter)); MOCK_METHOD1(OnDeviceListUpdated, void(const TransportAdapter* transport_adapter)); - MOCK_METHOD1(OnDeviceAdded, void(DeviceUID device_uid)); MOCK_METHOD3(OnConnectDone, void(const TransportAdapter* transport_adapter, const DeviceUID& device_handle, diff --git a/src/components/transport_manager/test/transport_adapter_test.cc b/src/components/transport_manager/test/transport_adapter_test.cc index 9b01dfcdb5..6d709e0c17 100644 --- a/src/components/transport_manager/test/transport_adapter_test.cc +++ b/src/components/transport_manager/test/transport_adapter_test.cc @@ -192,7 +192,7 @@ TEST_F(TransportAdapterTest, AddDevice) { utils::SharedPtr<MockDevice> mockdev = utils::MakeShared<MockDevice>(dev_id, uniq_id); - EXPECT_CALL(mock_listener, OnDeviceAdded(_)); + EXPECT_CALL(mock_listener, OnDeviceListUpdated(&transport_adapter)); transport_adapter.AddDevice(mockdev); } @@ -469,7 +469,7 @@ TEST_F(TransportAdapterTest, DeviceDisconnected) { utils::SharedPtr<MockDevice> mockdev = utils::MakeShared<MockDevice>(dev_id, uniq_id); - EXPECT_CALL(mock_listener, OnDeviceAdded(_)); + EXPECT_CALL(mock_listener, OnDeviceListUpdated(&transport_adapter)); transport_adapter.AddDevice(mockdev); std::vector<std::string> devList = transport_adapter.GetDeviceList(); @@ -489,6 +489,7 @@ TEST_F(TransportAdapterTest, DeviceDisconnected) { utils::MakeShared<MockConnection>(); transport_adapter.ConnectionCreated(mock_connection, uniq_id, app_handle); + EXPECT_CALL(mock_listener, OnDeviceListUpdated(&transport_adapter)); EXPECT_CALL(*mockdev, GetApplicationList()).WillOnce(Return(intList)); EXPECT_CALL( mock_listener, diff --git a/src/components/transport_manager/test/transport_manager_impl_test.cc b/src/components/transport_manager/test/transport_manager_impl_test.cc index 9bfa13cd9c..80b4ba5316 100644 --- a/src/components/transport_manager/test/transport_manager_impl_test.cc +++ b/src/components/transport_manager/test/transport_manager_impl_test.cc @@ -637,34 +637,50 @@ TEST_F(TransportManagerImplTest, Reinit_InitAdapterFailed) { TEST_F(TransportManagerImplTest, UpdateDeviceList_AddNewDevice) { device_list_.push_back(dev_info_.mac_address()); - EXPECT_CALL(*mock_adapter_, GetDeviceList()).WillOnce(Return(device_list_)); - EXPECT_CALL(*mock_adapter_, DeviceName(dev_info_.mac_address())) - .WillOnce(Return(dev_info_.name())); + EXPECT_CALL(*mock_adapter_, GetDeviceList()) + .WillRepeatedly(Return(device_list_)); EXPECT_CALL(*mock_adapter_, GetConnectionType()) .WillRepeatedly(Return(dev_info_.connection_type())); - EXPECT_CALL(*tm_listener_, OnDeviceAdded(dev_info_)); + EXPECT_CALL(*mock_adapter_, DeviceName(dev_info_.mac_address())) + .WillRepeatedly(Return(dev_info_.name())); - tm_.UpdateDeviceList(mock_adapter_); + EXPECT_CALL(*tm_listener_, OnDeviceFound(dev_info_)); + EXPECT_CALL(*tm_listener_, OnDeviceAdded(dev_info_)); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(mock_adapter_); device_list_.pop_back(); } TEST_F(TransportManagerImplTest, UpdateDeviceList_RemoveDevice) { device_list_.push_back(dev_info_.mac_address()); + { + EXPECT_CALL(*mock_adapter_, GetDeviceList()) + .WillRepeatedly(Return(device_list_)); + EXPECT_CALL(*mock_adapter_, GetConnectionType()) + .WillRepeatedly(Return(dev_info_.connection_type())); + EXPECT_CALL(*mock_adapter_, DeviceName(dev_info_.mac_address())) + .WillRepeatedly(Return(dev_info_.name())); - ::testing::InSequence seq; - EXPECT_CALL(*mock_adapter_, GetDeviceList()).WillOnce(Return(device_list_)); + ::testing::InSequence s; + EXPECT_CALL(*tm_listener_, OnDeviceFound(dev_info_)); + EXPECT_CALL(*tm_listener_, OnDeviceAdded(dev_info_)); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(mock_adapter_); + } + device_list_.pop_back(); + + EXPECT_CALL(*mock_adapter_, GetDeviceList()) + .WillRepeatedly(Return(device_list_)); EXPECT_CALL(*mock_adapter_, GetConnectionType()) .WillRepeatedly(Return(dev_info_.connection_type())); EXPECT_CALL(*mock_adapter_, DeviceName(dev_info_.mac_address())) - .WillOnce(Return(dev_info_.name())); - EXPECT_CALL(*tm_listener_, OnDeviceAdded(dev_info_)); - tm_.UpdateDeviceList(mock_adapter_); - device_list_.pop_back(); + .WillRepeatedly(Return(dev_info_.name())); // Device list is empty now - EXPECT_CALL(*mock_adapter_, GetDeviceList()).WillOnce(Return(device_list_)); + ::testing::InSequence s; EXPECT_CALL(*tm_listener_, OnDeviceRemoved(dev_info_)); - tm_.UpdateDeviceList(mock_adapter_); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(mock_adapter_); } /* @@ -1008,7 +1024,7 @@ TEST_F(TransportManagerImplTest, RunAppOnDevice_TransportAdapterFound_SUCCESS) { } TEST_F(TransportManagerImplTest, - UpdateDeviceList_AddDevices_TwoTransportAdapters) { + UpdateDeviceList_AddDevices_TwoTransportAdapters_ExpectSuccess) { // Arrange MockTransportAdapter* second_mock_adapter = new MockTransportAdapter(); device_list_.push_back(dev_info_.mac_address()); @@ -1018,22 +1034,80 @@ TEST_F(TransportManagerImplTest, EXPECT_EQ(E_SUCCESS, tm_.AddTransportAdapter(second_mock_adapter)); // Act and Assert - EXPECT_CALL(*second_mock_adapter, GetDeviceList()) - .WillOnce(Return(device_list_)); - EXPECT_CALL(*second_mock_adapter, DeviceName(dev_info_.mac_address())) - .WillOnce(Return(dev_info_.name())); - EXPECT_CALL(*second_mock_adapter, GetConnectionType()) + EXPECT_CALL(*mock_adapter_, GetDeviceList()) + .WillRepeatedly(Return(device_list_)); + EXPECT_CALL(*mock_adapter_, DeviceName(dev_info_.mac_address())) + .WillRepeatedly(Return(dev_info_.name())); + EXPECT_CALL(*mock_adapter_, GetConnectionType()) .WillRepeatedly(Return(dev_info_.connection_type())); + EXPECT_CALL(*tm_listener_, OnDeviceFound(dev_info_)); EXPECT_CALL(*tm_listener_, OnDeviceAdded(dev_info_)); - tm_.UpdateDeviceList(second_mock_adapter); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(mock_adapter_); - EXPECT_CALL(*mock_adapter_, GetDeviceList()).WillOnce(Return(device_list_)); + const std::string mac_address("NE:WA:DR:ES:SS"); + const std::string connection_type("TCP"); + const std::string device_name("TestName"); + const transport_manager::DeviceHandle device_handle( + tm_.get_converter().UidToHandle(mac_address, connection_type)); + + DeviceInfo second_device( + device_handle, mac_address, device_name, connection_type); + DeviceList device_list_2; + device_list_2.push_back(second_device.mac_address()); + + EXPECT_CALL(*second_mock_adapter, GetDeviceList()) + .WillRepeatedly(Return(device_list_2)); + EXPECT_CALL(*second_mock_adapter, DeviceName(second_device.mac_address())) + .WillRepeatedly(Return(second_device.name())); + EXPECT_CALL(*second_mock_adapter, GetConnectionType()) + .WillRepeatedly(Return(second_device.connection_type())); + + EXPECT_CALL(*tm_listener_, OnDeviceAdded(second_device)); + EXPECT_CALL(*tm_listener_, OnDeviceFound(second_device)); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(second_mock_adapter); + + device_list_.pop_back(); +} + +TEST_F( + TransportManagerImplTest, + UpdateDeviceList_AddSameUUIDNonSwitchableDevices_TwoTransportAdapters_ExpectSecondFailed) { + // Arrange + MockTransportAdapter* second_mock_adapter = new MockTransportAdapter(); + device_list_.push_back(dev_info_.mac_address()); + // Check before Act + EXPECT_CALL(*second_mock_adapter, AddListener(_)); + EXPECT_CALL(*second_mock_adapter, IsInitialised()).WillOnce(Return(true)); + EXPECT_EQ(E_SUCCESS, tm_.AddTransportAdapter(second_mock_adapter)); + + // Act and Assert + EXPECT_CALL(*mock_adapter_, GetDeviceList()) + .WillRepeatedly(Return(device_list_)); EXPECT_CALL(*mock_adapter_, DeviceName(dev_info_.mac_address())) - .WillOnce(Return(dev_info_.name())); + .WillRepeatedly(Return(dev_info_.name())); EXPECT_CALL(*mock_adapter_, GetConnectionType()) .WillRepeatedly(Return(dev_info_.connection_type())); + EXPECT_CALL(*tm_listener_, OnDeviceFound(dev_info_)); EXPECT_CALL(*tm_listener_, OnDeviceAdded(dev_info_)); - tm_.UpdateDeviceList(mock_adapter_); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(mock_adapter_); + + EXPECT_CALL(*second_mock_adapter, GetDeviceList()) + .WillRepeatedly(Return(device_list_)); + EXPECT_CALL(*second_mock_adapter, DeviceName(dev_info_.mac_address())) + .WillRepeatedly(Return(dev_info_.name())); + EXPECT_CALL(*second_mock_adapter, GetConnectionType()) + .WillRepeatedly(Return(dev_info_.connection_type())); + + EXPECT_CALL(*mock_adapter_, GetDeviceType()) + .WillOnce(Return(transport_adapter::DeviceType::TCP)); + + EXPECT_CALL(*second_mock_adapter, StopDevice(_)).Times(0); + EXPECT_CALL(*second_mock_adapter, DeviceSwitched(_)).Times(0); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)).Times(0); + tm_.OnDeviceListUpdated(second_mock_adapter); device_list_.pop_back(); } @@ -1050,7 +1124,11 @@ TEST_F(TransportManagerImplTest, OnlyOneDeviceShouldNotTriggerSwitch) { EXPECT_CALL(*tm_listener_, OnDeviceAdded(dev_info_)); EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); - tm_.TestHandle(TransportAdapterEvent(EventTypeEnum::ON_DEVICE_ADDED, + EXPECT_CALL(*mock_adapter_, StopDevice(_)).Times(0); + EXPECT_CALL(*mock_adapter_, DeviceSwitched(_)).Times(0); + EXPECT_CALL(*tm_listener_, OnDeviceSwitchingStart(_)).Times(0); + + tm_.TestHandle(TransportAdapterEvent(EventTypeEnum::ON_DEVICE_LIST_UPDATED, mock_adapter_, mac_address_, application_id_, @@ -1060,14 +1138,15 @@ TEST_F(TransportManagerImplTest, OnlyOneDeviceShouldNotTriggerSwitch) { device_list_.pop_back(); } -TEST_F(TransportManagerImplTest, TwoTransportAdapterAddSameDeviceTimeout) { +TEST_F(TransportManagerImplTest, + TwoTransportAdapterAddSameSwitchableDevice_ExpectSuccess) { device_list_.push_back(dev_info_.mac_address()); const uint32_t timeout = 0; SetAddDeviceExpectations(mock_adapter_, transport_adapter::DeviceType::IOS_BT); - tm_.TestHandle(TransportAdapterEvent(EventTypeEnum::ON_DEVICE_ADDED, + tm_.TestHandle(TransportAdapterEvent(EventTypeEnum::ON_DEVICE_LIST_UPDATED, mock_adapter_, mac_address_, application_id_, @@ -1090,7 +1169,7 @@ TEST_F(TransportManagerImplTest, TwoTransportAdapterAddSameDeviceTimeout) { EXPECT_CALL(*tm_listener_, OnDeviceSwitchingStart(mac_address_)); EXPECT_CALL(*tm_listener_, OnDeviceSwitchFinish(mac_address_)); - tm_.TestHandle(TransportAdapterEvent(EventTypeEnum::ON_DEVICE_ADDED, + tm_.TestHandle(TransportAdapterEvent(EventTypeEnum::ON_DEVICE_LIST_UPDATED, second_mock_adapter.get(), mac_address_, application_id_, @@ -1101,7 +1180,7 @@ TEST_F(TransportManagerImplTest, TwoTransportAdapterAddSameDeviceTimeout) { } TEST_F(TransportManagerImplTest, - UpdateDeviceList_RemoveDevices_TwoTransportAdapters) { + UpdateDeviceList_RemoveDevices_TwoTransportAdapters_ExpectSuccess) { // Arrange MockTransportAdapter* second_mock_adapter = new MockTransportAdapter(); device_list_.push_back(dev_info_.mac_address()); @@ -1111,33 +1190,54 @@ TEST_F(TransportManagerImplTest, EXPECT_EQ(E_SUCCESS, tm_.AddTransportAdapter(second_mock_adapter)); // Act and Assert - EXPECT_CALL(*second_mock_adapter, GetDeviceList()) - .WillOnce(Return(device_list_)); - EXPECT_CALL(*second_mock_adapter, DeviceName(dev_info_.mac_address())) - .WillOnce(Return(dev_info_.name())); - EXPECT_CALL(*second_mock_adapter, GetConnectionType()) - .WillRepeatedly(Return(dev_info_.connection_type())); - EXPECT_CALL(*tm_listener_, OnDeviceAdded(dev_info_)); - tm_.UpdateDeviceList(second_mock_adapter); - - EXPECT_CALL(*mock_adapter_, GetDeviceList()).WillOnce(Return(device_list_)); + EXPECT_CALL(*mock_adapter_, GetDeviceList()) + .WillRepeatedly(Return(device_list_)); EXPECT_CALL(*mock_adapter_, DeviceName(dev_info_.mac_address())) - .WillOnce(Return(dev_info_.name())); + .WillRepeatedly(Return(dev_info_.name())); EXPECT_CALL(*mock_adapter_, GetConnectionType()) .WillRepeatedly(Return(dev_info_.connection_type())); + EXPECT_CALL(*tm_listener_, OnDeviceFound(dev_info_)); EXPECT_CALL(*tm_listener_, OnDeviceAdded(dev_info_)); - tm_.UpdateDeviceList(mock_adapter_); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(mock_adapter_); + + const std::string mac_address("NE:WA:DR:ES:SS"); + const std::string connection_type("TCP"); + const std::string device_name("TestName"); + const transport_manager::DeviceHandle device_handle( + tm_.get_converter().UidToHandle(mac_address, connection_type)); + + DeviceInfo second_device( + device_handle, mac_address, device_name, connection_type); + DeviceList device_list_2; + device_list_2.push_back(second_device.mac_address()); + + EXPECT_CALL(*second_mock_adapter, GetDeviceList()) + .WillRepeatedly(Return(device_list_2)); + EXPECT_CALL(*second_mock_adapter, DeviceName(second_device.mac_address())) + .WillRepeatedly(Return(second_device.name())); + EXPECT_CALL(*second_mock_adapter, GetConnectionType()) + .WillRepeatedly(Return(second_device.connection_type())); + + EXPECT_CALL(*tm_listener_, OnDeviceAdded(second_device)); + EXPECT_CALL(*tm_listener_, OnDeviceFound(second_device)); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(second_mock_adapter); device_list_.pop_back(); + device_list_2.pop_back(); EXPECT_CALL(*second_mock_adapter, GetDeviceList()) - .WillOnce(Return(device_list_)); - EXPECT_CALL(*tm_listener_, OnDeviceRemoved(dev_info_)); - tm_.UpdateDeviceList(second_mock_adapter); + .WillRepeatedly(Return(device_list_2)); + EXPECT_CALL(*tm_listener_, OnDeviceRemoved(second_device)); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(second_mock_adapter); - EXPECT_CALL(*mock_adapter_, GetDeviceList()).WillOnce(Return(device_list_)); + EXPECT_CALL(*mock_adapter_, GetDeviceList()) + .WillRepeatedly(Return(device_list_)); EXPECT_CALL(*tm_listener_, OnDeviceRemoved(dev_info_)); - tm_.UpdateDeviceList(mock_adapter_); + EXPECT_CALL(*tm_listener_, OnDeviceListUpdated(_)); + tm_.OnDeviceListUpdated(mock_adapter_); } } // namespace transport_manager_test |