From 6d69906159e04edf756c0deeb96e670490e50b91 Mon Sep 17 00:00:00 2001 From: Nikolay Volf Date: Wed, 27 Jan 2016 21:31:14 +0400 Subject: [PATCH] working blockhain sequence generator --- src/blockchain.rs | 6 +++--- src/tests/helpers.rs | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/blockchain.rs b/src/blockchain.rs index f0e2ff62f..bdd1ba9a2 100644 --- a/src/blockchain.rs +++ b/src/blockchain.rs @@ -765,8 +765,8 @@ mod tests { } #[test] - fn can_consist_of_random_blocks() { - let bc = generate_dummy_blockchain(100); - assert_eq!(bc.best_block_hash(), 0); + fn can_contain_arbitrary_block_sequence() { + let bc = generate_dummy_blockchain(50); + assert_eq!(bc.best_block_number(), 49); } } diff --git a/src/tests/helpers.rs b/src/tests/helpers.rs index a522d24fe..ad27f75ed 100644 --- a/src/tests/helpers.rs +++ b/src/tests/helpers.rs @@ -45,6 +45,18 @@ pub fn create_test_block(header: &Header) -> Bytes { rlp.out() } +fn create_unverifiable_block(order: usize, parent_hash: H256) -> Bytes { + let mut header = Header::new(); + header.gas_limit = x!(0); + header.difficulty = x!(order * 100); + header.timestamp = (order * 10) as u64; + header.number = order as u64; + header.parent_hash = parent_hash; + header.state_root = H256::from_str("0000000000000000000000000000000000000000000000000000000000000000").unwrap(); + + create_test_block(&header) +} + pub fn generate_dummy_client(block_number: usize) -> Arc { let dir = RandomTempPath::new(); @@ -82,7 +94,14 @@ pub fn generate_dummy_client(block_number: usize) -> Arc { pub fn generate_dummy_blockchain(block_number: usize) -> BlockChain { let temp = RandomTempPath::new(); - let genesis = "fffffff".from_hex().unwrap(); - let bc = BlockChain::new(&genesis, temp.as_path()); + let bc = BlockChain::new( + &create_unverifiable_block( + 0, + H256::from_str("0000000000000000000000000000000000000000000000000000000000000000").unwrap()), + temp.as_path()); + + for block_order in 1..block_number { + bc.insert_block(&create_unverifiable_block(block_order, bc.best_block_hash())); + } bc } \ No newline at end of file