diff --git a/rclcpp/test/rclcpp/test_wait_for_message.cpp b/rclcpp/test/rclcpp/test_wait_for_message.cpp index 81179ca6fc..3ecd153ef2 100644 --- a/rclcpp/test/rclcpp/test_wait_for_message.cpp +++ b/rclcpp/test/rclcpp/test_wait_for_message.cpp @@ -23,6 +23,7 @@ #include "rclcpp/wait_for_message.hpp" #include "test_msgs/msg/strings.hpp" +#include "test_msgs/msg/unbounded_sequences.hpp" #include "test_msgs/message_fixtures.hpp" using namespace std::chrono_literals; @@ -135,6 +136,36 @@ TEST(TestUtilities, wait_for_last_message) { rclcpp::shutdown(); } +TEST(TestUtilities, wait_for_last_message_with_unbounded_uint8_values) { + rclcpp::init(0, nullptr); + + auto node = std::make_shared("wait_for_unbounded_uint8_message_node"); + auto qos = rclcpp::QoS(1).reliable().transient_local(); + + using MsgT = test_msgs::msg::UnboundedSequences; + auto pub = node->create_publisher("wait_for_unbounded_uint8_message_topic", qos); + MsgT input; + input.uint8_values = {1, 2, 3}; + input.alignment_check = 42; + pub->publish(input); + + MsgT out; + auto received = false; + auto wait = std::async( + [&]() { + auto ret = rclcpp::wait_for_message( + out, node, "wait_for_unbounded_uint8_message_topic", 5s, qos); + EXPECT_TRUE(ret); + received = true; + }); + + ASSERT_NO_THROW(wait.get()); + ASSERT_TRUE(received); + EXPECT_EQ(out, input); + + rclcpp::shutdown(); +} + TEST(TestUtilities, wait_for_message_custom_context) { auto context = std::make_shared(); context->init(0, nullptr);