Add command-line tool for generating a genesis block

This commit is contained in:
Greg Fitzgerald
2018-03-03 14:41:36 -07:00
parent 74ebaf1744
commit 11a0f96f5e
5 changed files with 165 additions and 0 deletions

View File

@@ -110,6 +110,8 @@ mod tests {
use super::*;
use log::*;
use event::*;
use genesis::*;
use std::sync::mpsc::sync_channel;
#[test]
fn test_bad_event_signature() {
@@ -132,4 +134,27 @@ mod tests {
assert!(verify_event_and_reserve_signature(&mut sigs, &event0));
assert!(!verify_event_and_reserve_signature(&mut sigs, &event0));
}
fn run_genesis(gen: &Genesis) -> Vec<Entry<u64>> {
let (_sender, event_receiver) = sync_channel(100);
let (entry_sender, receiver) = sync_channel(100);
let mut logger = Logger::new(event_receiver, entry_sender, gen.seed);
for tx in gen.create_events() {
logger.log_event(tx).unwrap();
}
drop(logger.sender);
receiver.iter().collect::<Vec<_>>()
}
#[test]
fn test_genesis_no_creators() {
let gen = Genesis::new(100, vec![]);
assert!(verify_slice_u64(&run_genesis(&gen), &gen.seed));
}
#[test]
fn test_genesis() {
let gen = Genesis::new(100, vec![Creator::new("Satoshi", 42)]);
assert!(verify_slice_u64(&run_genesis(&gen), &gen.seed));
}
}