@@ -34,3 +34,121 @@ pub struct GetLiteGroupInfoRequestHeader {
3434 #[ serde( flatten) ]
3535 pub rpc : Option < RpcRequestHeader > ,
3636}
37+
38+ #[ cfg( test) ]
39+ mod tests {
40+ use std:: collections:: HashMap ;
41+
42+ use super :: * ;
43+ use crate :: protocol:: command_custom_header:: CommandCustomHeader ;
44+ use crate :: protocol:: command_custom_header:: FromMap ;
45+
46+ #[ test]
47+ fn get_lite_group_info_request_header_creation ( ) {
48+ let header = GetLiteGroupInfoRequestHeader {
49+ group : CheetahString :: from ( "test_group" ) ,
50+ lite_topic : CheetahString :: from ( "test_lite_topic" ) ,
51+ top_k : 10 ,
52+ rpc : None ,
53+ } ;
54+
55+ assert_eq ! ( header. group, CheetahString :: from( "test_group" ) ) ;
56+ assert_eq ! ( header. lite_topic, CheetahString :: from( "test_lite_topic" ) ) ;
57+ assert_eq ! ( header. top_k, 10 ) ;
58+ assert ! ( header. rpc. is_none( ) ) ;
59+ }
60+
61+ #[ test]
62+ fn get_lite_group_info_request_header_serializes_to_map ( ) {
63+ let header = GetLiteGroupInfoRequestHeader {
64+ group : CheetahString :: from ( "my_group" ) ,
65+ lite_topic : CheetahString :: from ( "my_lite_topic" ) ,
66+ top_k : 5 ,
67+ rpc : None ,
68+ } ;
69+
70+ let map = header. to_map ( ) . unwrap ( ) ;
71+ assert_eq ! ( map. get( & CheetahString :: from_static_str( "group" ) ) . unwrap( ) , "my_group" ) ;
72+ assert_eq ! (
73+ map. get( & CheetahString :: from_static_str( "liteTopic" ) ) . unwrap( ) ,
74+ "my_lite_topic"
75+ ) ;
76+ assert_eq ! ( map. get( & CheetahString :: from_static_str( "topK" ) ) . unwrap( ) , "5" ) ;
77+ }
78+
79+ #[ test]
80+ fn get_lite_group_info_request_header_deserializes_from_map ( ) {
81+ let mut map = HashMap :: new ( ) ;
82+ map. insert (
83+ CheetahString :: from_static_str ( "group" ) ,
84+ CheetahString :: from ( "deserialized_group" ) ,
85+ ) ;
86+ map. insert (
87+ CheetahString :: from_static_str ( "liteTopic" ) ,
88+ CheetahString :: from ( "deserialized_lite" ) ,
89+ ) ;
90+ map. insert ( CheetahString :: from_static_str ( "topK" ) , CheetahString :: from ( "20" ) ) ;
91+
92+ let header = <GetLiteGroupInfoRequestHeader as FromMap >:: from ( & map) . unwrap ( ) ;
93+ assert_eq ! ( header. group, CheetahString :: from( "deserialized_group" ) ) ;
94+ assert_eq ! ( header. lite_topic, CheetahString :: from( "deserialized_lite" ) ) ;
95+ assert_eq ! ( header. top_k, 20 ) ;
96+ }
97+
98+ #[ test]
99+ fn get_lite_group_info_request_header_clone ( ) {
100+ let header = GetLiteGroupInfoRequestHeader {
101+ group : CheetahString :: from ( "group" ) ,
102+ lite_topic : CheetahString :: from ( "lite" ) ,
103+ top_k : 3 ,
104+ rpc : None ,
105+ } ;
106+
107+ let cloned = header. clone ( ) ;
108+ assert_eq ! ( header. group, cloned. group) ;
109+ assert_eq ! ( header. lite_topic, cloned. lite_topic) ;
110+ assert_eq ! ( header. top_k, cloned. top_k) ;
111+ }
112+
113+ #[ test]
114+ fn get_lite_group_info_request_header_debug ( ) {
115+ let header = GetLiteGroupInfoRequestHeader {
116+ group : CheetahString :: from ( "group" ) ,
117+ lite_topic : CheetahString :: from ( "lite" ) ,
118+ top_k : 7 ,
119+ rpc : None ,
120+ } ;
121+
122+ let debug_str = format ! ( "{:?}" , header) ;
123+ assert ! ( debug_str. contains( "group" ) ) ;
124+ assert ! ( debug_str. contains( "lite" ) ) ;
125+ assert ! ( debug_str. contains( "7" ) ) ;
126+ }
127+
128+ #[ test]
129+ fn get_lite_group_info_request_header_with_different_top_k_values ( ) {
130+ let header_zero = GetLiteGroupInfoRequestHeader {
131+ group : CheetahString :: from ( "g" ) ,
132+ lite_topic : CheetahString :: from ( "t" ) ,
133+ top_k : 0 ,
134+ rpc : None ,
135+ } ;
136+ assert_eq ! ( header_zero. top_k, 0 ) ;
137+
138+ let header_negative = GetLiteGroupInfoRequestHeader {
139+ group : CheetahString :: from ( "g" ) ,
140+ lite_topic : CheetahString :: from ( "t" ) ,
141+ top_k : -1 ,
142+ rpc : None ,
143+ } ;
144+ assert_eq ! ( header_negative. top_k, -1 ) ;
145+
146+ let header_large = GetLiteGroupInfoRequestHeader {
147+ group : CheetahString :: from ( "g" ) ,
148+ lite_topic : CheetahString :: from ( "t" ) ,
149+ top_k : i32:: MAX ,
150+ rpc : None ,
151+ } ;
152+ assert_eq ! ( header_large. top_k, i32 :: MAX ) ;
153+ }
154+ }
0 commit comments