diff --git a/verification/src/lib.rs b/verification/src/lib.rs index 761a8202..e0fdbcfa 100644 --- a/verification/src/lib.rs +++ b/verification/src/lib.rs @@ -54,6 +54,7 @@ pub enum Chain { Orphan, } +#[derive(PartialEq, Debug)] /// block status within the queue pub enum BlockStatus { Valid, diff --git a/verification/src/queue.rs b/verification/src/queue.rs index 29070565..e6c198ce 100644 --- a/verification/src/queue.rs +++ b/verification/src/queue.rs @@ -27,6 +27,17 @@ pub struct Queue { } impl Queue { + + /// New verification queue + pub fn new(verifier: Box) -> Self { + Queue { + verifier: verifier, + items: RwLock::new(LinkedHashMap::new()), + verified: RwLock::new(LinkedHashMap::new()), + invalid: RwLock::new(HashSet::new()), + } + } + /// Process one block in the queue pub fn process(&self) { let (hash, block) = { @@ -59,3 +70,23 @@ impl Queue { else { BlockStatus::Absent } } } + +#[cfg(test)] +mod tests { + use super::Queue; + use super::super::{BlockStatus, VerificationResult, Verify, Chain}; + use chain::Block; + use primitives::hash::H256; + + struct FacileVerifier; + impl Verify for FacileVerifier { + fn verify(&self, block: &Block) -> VerificationResult { Ok(Chain::Main) } + } + + #[test] + fn new() { + let queue = Queue::new(Box::new(FacileVerifier)); + assert_eq!(queue.block_status(&H256::from(0u8)), BlockStatus::Absent); + } + +}