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