reth_primitives_traits/header/
test_utils.rs1use alloy_consensus::Header;
4use alloy_primitives::B256;
5use proptest::{arbitrary::any, prop_compose};
6use proptest_arbitrary_interop::arb;
7
8pub use super::HeaderMut as TestHeader;
10
11pub const fn generate_valid_header(
20 mut header: Header,
21 eip_4844_active: bool,
22 blob_gas_used: u64,
23 excess_blob_gas: u64,
24 parent_beacon_block_root: B256,
25) -> Header {
26 if header.base_fee_per_gas.is_none() {
28 header.withdrawals_root = None;
29 }
30
31 if eip_4844_active {
33 header.blob_gas_used = Some(blob_gas_used);
34 header.excess_blob_gas = Some(excess_blob_gas);
35 header.parent_beacon_block_root = Some(parent_beacon_block_root);
36 } else {
37 header.blob_gas_used = None;
38 header.excess_blob_gas = None;
39 header.parent_beacon_block_root = None;
40 }
41
42 header.requests_hash = None;
44
45 header
46}
47
48prop_compose! {
49 pub fn valid_header_strategy()(
54 header in arb::<Header>(),
55 eip_4844_active in any::<bool>(),
56 blob_gas_used in any::<u64>(),
57 excess_blob_gas in any::<u64>(),
58 parent_beacon_block_root in arb::<B256>()
59 ) -> Header {
60 generate_valid_header(header, eip_4844_active, blob_gas_used, excess_blob_gas, parent_beacon_block_root)
61 }
62}