Add genesis tests pre modifying the beancon structs

This commit is contained in:
Kirk Baird
2019-01-14 16:32:55 +11:00
parent 67a153bf4f
commit d12b5249e0
3 changed files with 159 additions and 1 deletions

View File

@@ -47,4 +47,58 @@ mod tests {
// This only checks that the function runs without panic.
genesis_beacon_block(state_root, &spec);
}
// Tests parent_root, randao_reveal, deposit_root are the zero hash after creation and slot == 0
#[test]
fn test_zero_items() {
let spec = ChainSpec::foundation();
// Note: state_root will not be available without a state (test in beacon_state)
let state_root = Hash256::zero();
let genesis_block = genesis_beacon_block(state_root, &spec);
assert!(genesis_block.parent_root.is_zero());
assert!(genesis_block.randao_reveal.is_zero());
assert!(genesis_block.slot == 0);
// assert!(genesis_block.depsoit_root.is_zero());
}
#[test]
fn test_beacon_body() {
let spec = ChainSpec::foundation();
// Note: state_root will not be available without a state (test in beacon_state)
let state_root = Hash256::zero();
let genesis_block = genesis_beacon_block(state_root, &spec);
assert!(genesis_block.body.proposer_slashings.is_empty());
assert!(genesis_block.body.casper_slashings.is_empty());
assert!(genesis_block.body.attestations.is_empty());
assert!(genesis_block.body.deposits.is_empty());
assert!(genesis_block.body.exits.is_empty());
// Specs have changed to include 3 more variables in BeaconBody to be added later
}
#[test]
fn test_signature() {
let spec = ChainSpec::foundation();
// Note: state_root will not be available without a state (test in beacon_state)
let state_root = Hash256::zero();
let genesis_block = genesis_beacon_block(state_root, &spec);
// Signature should consist of [bytes48(0), bytes48(0)]
// Note this is implemented using Apache Milagro BLS which requires one extra byte -> 97bytes
let raw_sig = genesis_block.signature.as_raw();
let raw_sig_bytes = raw_sig.as_bytes();
assert!(raw_sig_bytes.len() == 97);
for item in raw_sig_bytes.iter() {
assert!(*item == 0);
}
}
}