From c09de59a009a1f6e30a24ff0e420a7dad8b1e3b7 Mon Sep 17 00:00:00 2001 From: Eduardo Ponz Segrelles Date: Mon, 10 Jun 2024 16:20:34 +0200 Subject: [PATCH] Correctly initialize `MatchingFailureMask` constants to be used with the `std::bitset` API (#4922) * Refs #21165: Add regression test Signed-off-by: eduponz * Refs #21165: Init MatchingFailureMask constants as normal uints Signed-off-by: eduponz * Refs #21165: Apply Ricardo's suggestions Signed-off-by: eduponz --------- Signed-off-by: eduponz (cherry picked from commit 5e1f1dd22afb2dd50abfbeb0726a06907e01209c) --- .../rtps/builtin/discovery/endpoint/EDP.h | 8 ++++---- test/unittest/rtps/discovery/EdpTests.cpp | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/include/fastdds/rtps/builtin/discovery/endpoint/EDP.h b/include/fastdds/rtps/builtin/discovery/endpoint/EDP.h index bcdc927919a..4a1174a15b7 100644 --- a/include/fastdds/rtps/builtin/discovery/endpoint/EDP.h +++ b/include/fastdds/rtps/builtin/discovery/endpoint/EDP.h @@ -71,16 +71,16 @@ class EDP public: //! Bit index for matching failing due to different topic - static const uint32_t different_topic = (0x00000001 << 0u); + static const uint32_t different_topic = 0u; //! Bit index for matching failing due to inconsistent topic (same topic name but different characteristics) - static const uint32_t inconsistent_topic = (0x00000001 << 1u); + static const uint32_t inconsistent_topic = 1u; //! Bit index for matching failing due to incompatible QoS - static const uint32_t incompatible_qos = (0x00000001 << 2u); + static const uint32_t incompatible_qos = 2u; //! Bit index for matching failing due to inconsistent partitions - static const uint32_t partitions = (0x00000001 << 3u); + static const uint32_t partitions = 3u; }; /** diff --git a/test/unittest/rtps/discovery/EdpTests.cpp b/test/unittest/rtps/discovery/EdpTests.cpp index 930d13ba9dc..ad8fd2db8ed 100644 --- a/test/unittest/rtps/discovery/EdpTests.cpp +++ b/test/unittest/rtps/discovery/EdpTests.cpp @@ -434,6 +434,24 @@ TEST_F(EdpTests, CheckDataRepresentationCompatibility) } } +TEST(MatchingFailureMask, matching_failure_mask_overflow) +{ + EDP::MatchingFailureMask mask; + + mask.set(EDP::MatchingFailureMask::different_topic); + EXPECT_TRUE(mask.test(EDP::MatchingFailureMask::different_topic)); + + mask.set(EDP::MatchingFailureMask::inconsistent_topic); + EXPECT_TRUE(mask.test(EDP::MatchingFailureMask::inconsistent_topic)); + + mask.set(EDP::MatchingFailureMask::incompatible_qos); + EXPECT_TRUE(mask.test(EDP::MatchingFailureMask::incompatible_qos)); + + mask.set(EDP::MatchingFailureMask::partitions); + EXPECT_TRUE(mask.test(EDP::MatchingFailureMask::partitions)); +} + + } // namespace rtps } // namespace fastrtps } // namespace eprosima