reth_eth_wire_types/
state.rs
1use alloc::vec::Vec;
4use alloy_primitives::{Bytes, B256};
5use alloy_rlp::{RlpDecodableWrapper, RlpEncodableWrapper};
6use reth_codecs_derive::add_arbitrary_tests;
7
8#[derive(Clone, Debug, PartialEq, Eq, RlpEncodableWrapper, RlpDecodableWrapper, Default)]
12#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
14#[add_arbitrary_tests(rlp)]
15pub struct GetNodeData(pub Vec<B256>);
16
17#[derive(Clone, Debug, PartialEq, Eq, RlpEncodableWrapper, RlpDecodableWrapper, Default)]
23#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
24#[cfg_attr(any(test, feature = "arbitrary"), derive(arbitrary::Arbitrary))]
25#[add_arbitrary_tests(rlp)]
26pub struct NodeData(pub Vec<Bytes>);
27
28#[cfg(test)]
29mod tests {
30 use alloy_primitives::hex;
31
32 use crate::{message::RequestPair, GetNodeData, NodeData};
33 use alloy_rlp::{Decodable, Encodable};
34
35 #[test]
36 fn encode_get_node_data() {
38 let expected = hex!(
39 "f847820457f842a000000000000000000000000000000000000000000000000000000000deadc0dea000000000000000000000000000000000000000000000000000000000feedbeef"
40 );
41 let mut data = vec![];
42 let request = RequestPair {
43 request_id: 1111,
44 message: GetNodeData(vec![
45 hex!("00000000000000000000000000000000000000000000000000000000deadc0de").into(),
46 hex!("00000000000000000000000000000000000000000000000000000000feedbeef").into(),
47 ]),
48 };
49 request.encode(&mut data);
50 assert_eq!(data, expected);
51 }
52
53 #[test]
54 fn decode_get_node_data() {
56 let data = hex!(
57 "f847820457f842a000000000000000000000000000000000000000000000000000000000deadc0dea000000000000000000000000000000000000000000000000000000000feedbeef"
58 );
59 let request = RequestPair::<GetNodeData>::decode(&mut &data[..]).unwrap();
60 assert_eq!(
61 request,
62 RequestPair {
63 request_id: 1111,
64 message: GetNodeData(vec![
65 hex!("00000000000000000000000000000000000000000000000000000000deadc0de").into(),
66 hex!("00000000000000000000000000000000000000000000000000000000feedbeef").into(),
67 ])
68 }
69 );
70 }
71
72 #[test]
73 fn encode_node_data() {
75 let expected = hex!("ce820457ca84deadc0de84feedbeef");
76 let mut data = vec![];
77 let request = RequestPair {
78 request_id: 1111,
79 message: NodeData(vec![
80 hex!("deadc0de").as_slice().into(),
81 hex!("feedbeef").as_slice().into(),
82 ]),
83 };
84 request.encode(&mut data);
85 assert_eq!(data, expected);
86 }
87
88 #[test]
89 fn decode_node_data() {
91 let data = hex!("ce820457ca84deadc0de84feedbeef");
92 let request = RequestPair::<NodeData>::decode(&mut &data[..]).unwrap();
93 assert_eq!(
94 request,
95 RequestPair {
96 request_id: 1111,
97 message: NodeData(vec![
98 hex!("deadc0de").as_slice().into(),
99 hex!("feedbeef").as_slice().into(),
100 ])
101 }
102 );
103 }
104}