diff --git a/rocketmq-remoting/src/protocol/header/get_lite_group_info_request_header.rs b/rocketmq-remoting/src/protocol/header/get_lite_group_info_request_header.rs index 9d7ff483b..2dc0d79c2 100644 --- a/rocketmq-remoting/src/protocol/header/get_lite_group_info_request_header.rs +++ b/rocketmq-remoting/src/protocol/header/get_lite_group_info_request_header.rs @@ -34,3 +34,121 @@ pub struct GetLiteGroupInfoRequestHeader { #[serde(flatten)] pub rpc: Option, } + +#[cfg(test)] +mod tests { + use std::collections::HashMap; + + use super::*; + use crate::protocol::command_custom_header::CommandCustomHeader; + use crate::protocol::command_custom_header::FromMap; + + #[test] + fn get_lite_group_info_request_header_creation() { + let header = GetLiteGroupInfoRequestHeader { + group: CheetahString::from("test_group"), + lite_topic: CheetahString::from("test_lite_topic"), + top_k: 10, + rpc: None, + }; + + assert_eq!(header.group, CheetahString::from("test_group")); + assert_eq!(header.lite_topic, CheetahString::from("test_lite_topic")); + assert_eq!(header.top_k, 10); + assert!(header.rpc.is_none()); + } + + #[test] + fn get_lite_group_info_request_header_serializes_to_map() { + let header = GetLiteGroupInfoRequestHeader { + group: CheetahString::from("my_group"), + lite_topic: CheetahString::from("my_lite_topic"), + top_k: 5, + rpc: None, + }; + + let map = header.to_map().unwrap(); + assert_eq!(map.get(&CheetahString::from_static_str("group")).unwrap(), "my_group"); + assert_eq!( + map.get(&CheetahString::from_static_str("liteTopic")).unwrap(), + "my_lite_topic" + ); + assert_eq!(map.get(&CheetahString::from_static_str("topK")).unwrap(), "5"); + } + + #[test] + fn get_lite_group_info_request_header_deserializes_from_map() { + let mut map = HashMap::new(); + map.insert( + CheetahString::from_static_str("group"), + CheetahString::from("deserialized_group"), + ); + map.insert( + CheetahString::from_static_str("liteTopic"), + CheetahString::from("deserialized_lite"), + ); + map.insert(CheetahString::from_static_str("topK"), CheetahString::from("20")); + + let header = ::from(&map).unwrap(); + assert_eq!(header.group, CheetahString::from("deserialized_group")); + assert_eq!(header.lite_topic, CheetahString::from("deserialized_lite")); + assert_eq!(header.top_k, 20); + } + + #[test] + fn get_lite_group_info_request_header_clone() { + let header = GetLiteGroupInfoRequestHeader { + group: CheetahString::from("group"), + lite_topic: CheetahString::from("lite"), + top_k: 3, + rpc: None, + }; + + let cloned = header.clone(); + assert_eq!(header.group, cloned.group); + assert_eq!(header.lite_topic, cloned.lite_topic); + assert_eq!(header.top_k, cloned.top_k); + } + + #[test] + fn get_lite_group_info_request_header_debug() { + let header = GetLiteGroupInfoRequestHeader { + group: CheetahString::from("group"), + lite_topic: CheetahString::from("lite"), + top_k: 7, + rpc: None, + }; + + let debug_str = format!("{:?}", header); + assert!(debug_str.contains("group")); + assert!(debug_str.contains("lite")); + assert!(debug_str.contains("7")); + } + + #[test] + fn get_lite_group_info_request_header_with_different_top_k_values() { + let header_zero = GetLiteGroupInfoRequestHeader { + group: CheetahString::from("g"), + lite_topic: CheetahString::from("t"), + top_k: 0, + rpc: None, + }; + assert_eq!(header_zero.top_k, 0); + + let header_negative = GetLiteGroupInfoRequestHeader { + group: CheetahString::from("g"), + lite_topic: CheetahString::from("t"), + top_k: -1, + rpc: None, + }; + assert_eq!(header_negative.top_k, -1); + + let header_large = GetLiteGroupInfoRequestHeader { + group: CheetahString::from("g"), + lite_topic: CheetahString::from("t"), + top_k: i32::MAX, + rpc: None, + }; + assert_eq!(header_large.top_k, i32::MAX); + } +}