hashtree 0.4.2

A Merkle Tree implementation in Rust
Documentation
pub mod tree;
pub use tree::HashTree;

#[cfg(test)]
mod tests {
    use crate::HashTree;

    #[test]
    fn one_byte_block_size() {
        const BLOCK_SIZE: usize = 1;
        let data = vec![0u8, 1u8];
        let tree = HashTree::new(BLOCK_SIZE).from_data(&mut data.as_slice()).unwrap();
        assert!(tree.num_blocks() == 2);
        assert!(tree.num_nodes() == 3);
        assert_eq!(tree.root_hash().unwrap(), 
            "30e1867424e66e8b6d159246db94e3486778136f7e386ff5f001859d6b8484ab");
    }

    #[test]
    fn one_byte_clone_compare() {
        const BLOCK_SIZE: usize = 1;
        let data = vec![0u8, 1u8];
        if let Ok(tree) = HashTree::new(BLOCK_SIZE).from_data(&mut data.as_slice()) {
            assert!(tree.num_blocks() == 2);
            assert!(tree.num_nodes() == 3);
            assert_eq!(tree.root_hash().unwrap(), 
                "30e1867424e66e8b6d159246db94e3486778136f7e386ff5f001859d6b8484ab");

            let tree_clone = tree.clone();
            assert!(tree == tree_clone);
        }
    }

    #[test]
    fn odd_block_count() {
        const BLOCK_SIZE: usize = 1000;
        let data = vec![42u8; 3000];
        if let Ok(tree) = HashTree::new(BLOCK_SIZE).from_data(&mut data.as_slice()) {
            assert!(tree.num_blocks() == 3);
            assert!(tree.num_nodes() == 7);
        }
    }
}