From a0bf736ae964cd0d924433b48e002f413c9834d1 Mon Sep 17 00:00:00 2001 From: xieyuschen Date: Thu, 10 Oct 2024 13:36:22 +0800 Subject: [PATCH] [#213]: test more crates under static_config --- .../static_config/messaging_pattern.rs | 73 +++++++++++++++++-- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/iceoryx2/src/service/static_config/messaging_pattern.rs b/iceoryx2/src/service/static_config/messaging_pattern.rs index 45192c8a9..874e62ede 100644 --- a/iceoryx2/src/service/static_config/messaging_pattern.rs +++ b/iceoryx2/src/service/static_config/messaging_pattern.rs @@ -42,15 +42,9 @@ impl Display for MessagingPattern { } impl MessagingPattern { + /// checks whether the 2 MessagingPattern are the same regardless the values inside them. pub(crate) fn is_same_pattern(&self, rhs: &MessagingPattern) -> bool { - match self { - MessagingPattern::PublishSubscribe(_) => { - matches!(rhs, MessagingPattern::PublishSubscribe(_)) - } - MessagingPattern::Event(_) => { - matches!(rhs, MessagingPattern::Event(_)) - } - } + std::mem::discriminant(self) == std::mem::discriminant(rhs) } pub(crate) fn required_amount_of_samples_per_data_segment( @@ -68,3 +62,66 @@ impl MessagingPattern { } } } + +#[cfg(test)] +mod tests { + use iceoryx2_bb_testing::assert_that; + + use super::*; + use crate::service::config; + use crate::service::static_config::event; + use crate::service::static_config::publish_subscribe; + + #[test] + fn test_is_same_pattern() { + let cfg = config::Config::default(); + let p1 = MessagingPattern::PublishSubscribe(publish_subscribe::StaticConfig::new(&cfg)); + let p2 = MessagingPattern::PublishSubscribe(publish_subscribe::StaticConfig::new(&cfg)); + assert_that!(p1.is_same_pattern(&p2), eq true); + assert_that!(p2.is_same_pattern(&p1), eq true); + + let mut new_defaults = config::Defaults { + publish_subscribe: cfg.defaults.publish_subscribe.clone(), + event: cfg.defaults.event.clone(), + }; + new_defaults.event.event_id_max_value -= 1; + new_defaults.publish_subscribe.max_nodes -= 1; + + let cfg2 = config::Config { + defaults: new_defaults, + global: cfg.global.clone(), + }; + + // ensure the cfg and cfg2 are not equal + assert_that!(cfg, ne cfg2); + let p3 = MessagingPattern::PublishSubscribe(publish_subscribe::StaticConfig::new(&cfg2)); + assert_that!(p1.is_same_pattern(&p3), eq true); + assert_that!(p3.is_same_pattern(&p1), eq true); + + let e1 = MessagingPattern::Event(event::StaticConfig::new(&cfg)); + let e2 = MessagingPattern::Event(event::StaticConfig::new(&cfg)); + assert_that!(e1.is_same_pattern(&e2), eq true); + assert_that!(e2.is_same_pattern(&e1), eq true); + + let e3 = MessagingPattern::Event(event::StaticConfig::new(&cfg2)); + assert_that!(e1.is_same_pattern(&e3), eq true); + assert_that!(e2.is_same_pattern(&e3), eq true); + + assert_that!(p1.is_same_pattern(&e1), eq false); + assert_that!(p3.is_same_pattern(&e3), eq false); + } + + #[test] + fn test_required_amount_of_samples_per_data_segment() { + let cfg = config::Config::default(); + let p1 = MessagingPattern::PublishSubscribe(publish_subscribe::StaticConfig::new(&cfg)); + let sut = p1.required_amount_of_samples_per_data_segment(0); + assert_that!(sut, eq 33); + let sut = p1.required_amount_of_samples_per_data_segment(1); + assert_that!(sut, eq 34); + + let e1 = MessagingPattern::Event(event::StaticConfig::new(&cfg)); + let sut = e1.required_amount_of_samples_per_data_segment(1); + assert_that!(sut, eq 0); + } +}