ouch_model/model/clt/
_05_account_query_req.rs

1use crate::prelude::*;
2use byteserde_derive::{ByteDeserializeSlice, ByteSerializeStack, ByteSerializedLenOf};
3use serde::{Deserialize, Serialize};
4
5#[rustfmt::skip]
6#[derive(ByteSerializeStack, ByteDeserializeSlice, ByteSerializedLenOf, Serialize, Deserialize, PartialEq, Clone, Debug, Default)]
7#[byteserde(endian = "be")]
8pub struct AccountQueryRequest {
9    #[serde(default, skip_serializing)]
10    packet_type: PacketTypeAccountQueryRequest,
11}
12
13#[cfg(test)]
14mod test {
15    use super::*;
16    use byteserde::prelude::*;
17    use links_core::unittest::setup;
18
19    use log::info;
20    use serde_json::{from_str, to_string};
21    use text_diff::{diff, print_diff};
22
23    #[test]
24    fn test_msg_byteserde() {
25        setup::log::configure();
26        let msg_inp = AccountQueryRequest::default();
27
28        let ser: ByteSerializerStack<128> = to_serializer_stack(&msg_inp).unwrap();
29        info!("ser: {:#x}", ser);
30
31        let msg_out: AccountQueryRequest = from_serializer_stack(&ser).unwrap();
32
33        info!("msg_inp: {:?}", msg_inp);
34        info!("msg_out: {:?}", msg_out);
35        assert_eq!(msg_out, msg_inp);
36    }
37
38    #[test]
39    fn test_msg_serde() {
40        setup::log::configure_compact(log::LevelFilter::Info);
41
42        let msg_inp = AccountQueryRequest::default();
43        // info!("msg_inp: {:?}", msg_inp);
44
45        let json_out = to_string(&msg_inp).unwrap();
46        let json_exp = r#"{}"#;
47        info!("json_out: {}", json_out);
48
49        if matches!(diff(&json_out, json_exp, ","), (dist, _) if dist != 0) {
50            print_diff(&json_out, json_exp, ",");
51            assert_eq!(json_out, json_exp);
52        }
53
54        let msg_out: AccountQueryRequest = from_str(&json_out).unwrap();
55        // info!("msg_out: {:?}", msg_out);
56        assert_eq!(msg_out, msg_inp);
57    }
58}