@@ -274,6 +274,33 @@ TEST_F( MessageDecodingTest, arrayTests )
274274 ASSERT_EQ ( test_array.uint16s [4 ], msg_uint16s[4 ] );
275275}
276276
277+ TEST_F ( MessageDecodingTest, deserializeSerializedMessage )
278+ {
279+ using namespace std ::chrono_literals;
280+ rclcpp::GuardCondition::SharedPtr cond = std::make_shared<rclcpp::GuardCondition>();
281+ rclcpp::WaitSet set;
282+ set.add_guard_condition ( cond );
283+
284+ std::shared_ptr<rclcpp::SerializedMessage> serialized_message;
285+ auto subscription = fish.create_subscription (
286+ *node, " /test_message_decoding/test_message" , 1 ,
287+ std::function<void ( std::shared_ptr<rclcpp::SerializedMessage> )>(
288+ [&serialized_message, &cond]( std::shared_ptr<rclcpp::SerializedMessage> msg ) {
289+ serialized_message = std::move ( msg );
290+ cond->trigger ();
291+ } ) );
292+ ASSERT_NE ( subscription, nullptr );
293+ ASSERT_EQ ( set.wait ( 5s ).kind (), rclcpp::WaitResultKind::Ready );
294+ ASSERT_NE ( serialized_message, nullptr );
295+
296+ CompoundMessage result;
297+ ASSERT_TRUE ( subscription->deserialize ( *serialized_message, result ) );
298+
299+ ASSERT_TRUE ( result.isValid () );
300+ ASSERT_EQ ( result.name (), " ros_babel_fish_test_msgs/msg/TestMessage" );
301+ EXPECT_TRUE ( MESSAGE_CONTENT_EQUAL ( test_message, result ) );
302+ }
303+
277304int main ( int argc, char **argv )
278305{
279306 testing::InitGoogleTest ( &argc, argv );
0 commit comments