rocketmq_remoting/protocol/header/
polling_info_response_header.rs1use rocketmq_macros::RequestHeaderCodecV2;
16
17#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq, Eq, Default, RequestHeaderCodecV2)]
18#[serde(rename_all = "camelCase")]
19pub struct PollingInfoResponseHeader {
20 #[required]
21 pub polling_num: i32,
22}
23
24#[cfg(test)]
25mod tests {
26 use serde_json;
27
28 use super::*;
29
30 #[test]
31 fn test_polling_info_response_header_default() {
32 let header = PollingInfoResponseHeader::default();
33 assert_eq!(header.polling_num, 0);
34 }
35
36 #[test]
37 fn test_polling_info_response_header_new_with_positive_value() {
38 let header = PollingInfoResponseHeader { polling_num: 100 };
39 assert_eq!(header.polling_num, 100);
40 }
41
42 #[test]
43 fn test_polling_info_response_header_new_with_negative_value() {
44 let header = PollingInfoResponseHeader { polling_num: -1 };
45 assert_eq!(header.polling_num, -1);
46 }
47
48 #[test]
49 fn test_polling_info_response_header_new_with_zero() {
50 let header = PollingInfoResponseHeader { polling_num: 0 };
51 assert_eq!(header.polling_num, 0);
52 }
53
54 #[test]
55 fn test_polling_info_response_header_new_with_max_value() {
56 let header = PollingInfoResponseHeader { polling_num: i32::MAX };
57 assert_eq!(header.polling_num, i32::MAX);
58 }
59
60 #[test]
61 fn test_polling_info_response_header_new_with_min_value() {
62 let header = PollingInfoResponseHeader { polling_num: i32::MIN };
63 assert_eq!(header.polling_num, i32::MIN);
64 }
65
66 #[test]
67 fn test_polling_info_response_header_clone() {
68 let header1 = PollingInfoResponseHeader { polling_num: 42 };
69 let header2 = header1.clone();
70 assert_eq!(header1, header2);
71 assert_eq!(header2.polling_num, 42);
72 }
73
74 #[test]
75 fn test_polling_info_response_header_equality() {
76 let header1 = PollingInfoResponseHeader { polling_num: 100 };
77 let header2 = PollingInfoResponseHeader { polling_num: 100 };
78 let header3 = PollingInfoResponseHeader { polling_num: 200 };
79
80 assert_eq!(header1, header2);
81 assert_ne!(header1, header3);
82 }
83
84 #[test]
85 fn test_polling_info_response_header_debug() {
86 let header = PollingInfoResponseHeader { polling_num: 123 };
87 let debug_str = format!("{:?}", header);
88 assert!(debug_str.contains("PollingInfoResponseHeader"));
89 assert!(debug_str.contains("123"));
90 }
91
92 #[test]
93 fn test_polling_info_response_header_serialize_to_json() {
94 let header = PollingInfoResponseHeader { polling_num: 99 };
95 let json = serde_json::to_string(&header).unwrap();
96 assert_eq!(json, r#"{"pollingNum":99}"#);
97 }
98
99 #[test]
100 fn test_polling_info_response_header_serialize_with_zero() {
101 let header = PollingInfoResponseHeader { polling_num: 0 };
102 let json = serde_json::to_string(&header).unwrap();
103 assert_eq!(json, r#"{"pollingNum":0}"#);
104 }
105
106 #[test]
107 fn test_polling_info_response_header_serialize_with_negative() {
108 let header = PollingInfoResponseHeader { polling_num: -50 };
109 let json = serde_json::to_string(&header).unwrap();
110 assert_eq!(json, r#"{"pollingNum":-50}"#);
111 }
112
113 #[test]
114 fn test_polling_info_response_header_deserialize_from_json() {
115 let json = r#"{"pollingNum":88}"#;
116 let header: PollingInfoResponseHeader = serde_json::from_str(json).unwrap();
117 assert_eq!(header.polling_num, 88);
118 }
119
120 #[test]
121 fn test_polling_info_response_header_deserialize_with_zero() {
122 let json = r#"{"pollingNum":0}"#;
123 let header: PollingInfoResponseHeader = serde_json::from_str(json).unwrap();
124 assert_eq!(header.polling_num, 0);
125 }
126
127 #[test]
128 fn test_polling_info_response_header_deserialize_with_negative() {
129 let json = r#"{"pollingNum":-100}"#;
130 let header: PollingInfoResponseHeader = serde_json::from_str(json).unwrap();
131 assert_eq!(header.polling_num, -100);
132 }
133
134 #[test]
135 fn test_polling_info_response_header_serialize_deserialize_roundtrip() {
136 let original = PollingInfoResponseHeader { polling_num: 777 };
137 let json = serde_json::to_string(&original).unwrap();
138 let deserialized: PollingInfoResponseHeader = serde_json::from_str(&json).unwrap();
139 assert_eq!(original, deserialized);
140 }
141
142 #[test]
143 fn test_polling_info_response_header_serialize_deserialize_max_value() {
144 let original = PollingInfoResponseHeader { polling_num: i32::MAX };
145 let json = serde_json::to_string(&original).unwrap();
146 let deserialized: PollingInfoResponseHeader = serde_json::from_str(&json).unwrap();
147 assert_eq!(original, deserialized);
148 }
149
150 #[test]
151 fn test_polling_info_response_header_serialize_deserialize_min_value() {
152 let original = PollingInfoResponseHeader { polling_num: i32::MIN };
153 let json = serde_json::to_string(&original).unwrap();
154 let deserialized: PollingInfoResponseHeader = serde_json::from_str(&json).unwrap();
155 assert_eq!(original, deserialized);
156 }
157
158 #[test]
159 fn test_polling_info_response_header_camel_case_field_name() {
160 let header = PollingInfoResponseHeader { polling_num: 50 };
161 let json = serde_json::to_string(&header).unwrap();
162 assert!(json.contains("pollingNum"));
164 assert!(!json.contains("polling_num"));
165 }
166
167 #[test]
168 fn test_polling_info_response_header_deserialize_invalid_json() {
169 let invalid_json = r#"{"invalidField":123}"#;
170 let result: Result<PollingInfoResponseHeader, _> = serde_json::from_str(invalid_json);
171 assert!(result.is_err());
173 }
174
175 #[test]
176 fn test_polling_info_response_header_deserialize_wrong_type() {
177 let invalid_json = r#"{"pollingNum":"not_a_number"}"#;
178 let result: Result<PollingInfoResponseHeader, _> = serde_json::from_str(invalid_json);
179 assert!(result.is_err());
181 }
182
183 #[test]
184 fn test_polling_info_response_header_multiple_instances() {
185 let headers = [
186 PollingInfoResponseHeader { polling_num: 1 },
187 PollingInfoResponseHeader { polling_num: 2 },
188 PollingInfoResponseHeader { polling_num: 3 },
189 ];
190
191 assert_eq!(headers.len(), 3);
192 assert_eq!(headers[0].polling_num, 1);
193 assert_eq!(headers[1].polling_num, 2);
194 assert_eq!(headers[2].polling_num, 3);
195 }
196
197 #[test]
198 fn test_polling_info_response_header_mutation() {
199 let mut header = PollingInfoResponseHeader { polling_num: 10 };
200 assert_eq!(header.polling_num, 10);
201
202 header.polling_num = 20;
203 assert_eq!(header.polling_num, 20);
204
205 header.polling_num += 5;
206 assert_eq!(header.polling_num, 25);
207 }
208
209 #[test]
210 fn test_polling_info_response_header_pretty_print_json() {
211 let header = PollingInfoResponseHeader { polling_num: 456 };
212 let json = serde_json::to_string_pretty(&header).unwrap();
213 assert!(json.contains("pollingNum"));
214 assert!(json.contains("456"));
215 }
216
217 #[test]
218 fn test_polling_info_response_header_from_value() {
219 let json_value = serde_json::json!({
220 "pollingNum": 888
221 });
222 let header: PollingInfoResponseHeader = serde_json::from_value(json_value).unwrap();
223 assert_eq!(header.polling_num, 888);
224 }
225
226 #[test]
227 fn test_polling_info_response_header_to_value() {
228 let header = PollingInfoResponseHeader { polling_num: 999 };
229 let json_value = serde_json::to_value(&header).unwrap();
230 assert_eq!(json_value["pollingNum"], 999);
231 }
232
233 #[test]
234 fn test_polling_info_response_header_typical_use_cases() {
235 let no_polling = PollingInfoResponseHeader { polling_num: 0 };
237 let low_polling = PollingInfoResponseHeader { polling_num: 5 };
238 let medium_polling = PollingInfoResponseHeader { polling_num: 50 };
239 let high_polling = PollingInfoResponseHeader { polling_num: 500 };
240
241 assert_eq!(no_polling.polling_num, 0);
242 assert_eq!(low_polling.polling_num, 5);
243 assert_eq!(medium_polling.polling_num, 50);
244 assert_eq!(high_polling.polling_num, 500);
245 }
246}