mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
ethereum: add unit tests for consensus validation (#10578)
This commit is contained in:
@ -99,3 +99,96 @@ fn compare_receipts_root_and_logs_bloom(
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use reth_primitives::hex;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_verify_receipts_success() {
|
||||
// Create a vector of 5 default Receipt instances
|
||||
let receipts = vec![Receipt::default(); 5];
|
||||
|
||||
// Compare against expected values
|
||||
assert!(verify_receipts(
|
||||
B256::from(hex!("61353b4fb714dc1fccacbf7eafc4273e62f3d1eed716fe41b2a0cd2e12c63ebc")),
|
||||
Bloom::from(hex!("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")),
|
||||
&receipts
|
||||
)
|
||||
.is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_verify_receipts_incorrect_root() {
|
||||
// Generate random expected values to produce a failure
|
||||
let expected_receipts_root = B256::random();
|
||||
let expected_logs_bloom = Bloom::random();
|
||||
|
||||
// Create a vector of 5 random Receipt instances
|
||||
let receipts = vec![Receipt::default(); 5];
|
||||
|
||||
assert!(verify_receipts(expected_receipts_root, expected_logs_bloom, &receipts).is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_compare_receipts_root_and_logs_bloom_success() {
|
||||
let calculated_receipts_root = B256::random();
|
||||
let calculated_logs_bloom = Bloom::random();
|
||||
|
||||
let expected_receipts_root = calculated_receipts_root;
|
||||
let expected_logs_bloom = calculated_logs_bloom;
|
||||
|
||||
assert!(compare_receipts_root_and_logs_bloom(
|
||||
calculated_receipts_root,
|
||||
calculated_logs_bloom,
|
||||
expected_receipts_root,
|
||||
expected_logs_bloom
|
||||
)
|
||||
.is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_compare_receipts_root_failure() {
|
||||
let calculated_receipts_root = B256::random();
|
||||
let calculated_logs_bloom = Bloom::random();
|
||||
|
||||
let expected_receipts_root = B256::random();
|
||||
let expected_logs_bloom = calculated_logs_bloom;
|
||||
|
||||
assert_eq!(
|
||||
compare_receipts_root_and_logs_bloom(
|
||||
calculated_receipts_root,
|
||||
calculated_logs_bloom,
|
||||
expected_receipts_root,
|
||||
expected_logs_bloom
|
||||
),
|
||||
Err(ConsensusError::BodyReceiptRootDiff(
|
||||
GotExpected { got: calculated_receipts_root, expected: expected_receipts_root }
|
||||
.into()
|
||||
))
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_compare_log_bloom_failure() {
|
||||
let calculated_receipts_root = B256::random();
|
||||
let calculated_logs_bloom = Bloom::random();
|
||||
|
||||
let expected_receipts_root = calculated_receipts_root;
|
||||
let expected_logs_bloom = Bloom::random();
|
||||
|
||||
assert_eq!(
|
||||
compare_receipts_root_and_logs_bloom(
|
||||
calculated_receipts_root,
|
||||
calculated_logs_bloom,
|
||||
expected_receipts_root,
|
||||
expected_logs_bloom
|
||||
),
|
||||
Err(ConsensusError::BodyBloomLogDiff(
|
||||
GotExpected { got: calculated_logs_bloom, expected: expected_logs_bloom }.into()
|
||||
))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user