diff --git a/Cargo.toml b/Cargo.toml index 00c8b0ea..682c37e0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,9 @@ git = "https://github.com/apoelstra/bitcoin-secp256k1-rs.git" [dependencies.eventual] git = "https://github.com/carllerche/eventual" +[dependencies.hamcrest] +git = "https://github.com/carllerche/eventual" + [dependencies] byteorder = "*" num_cpus = "*" @@ -23,3 +26,6 @@ rustc-serialize = "*" serde = "*" time = "*" +[dev-dependencies] +hamcrest = { git = "https://github.com/carllerche/hamcrest-rust.git" } + diff --git a/src/blockdata/block.rs b/src/blockdata/block.rs index f938d796..cae3f9a1 100644 --- a/src/blockdata/block.rs +++ b/src/blockdata/block.rs @@ -137,7 +137,6 @@ impl_consensus_encoding!(LoneBlockHeader, header, tx_count); #[cfg(test)] mod tests { - use std::io; use serialize::hex::FromHex; use blockdata::block::Block; @@ -151,22 +150,22 @@ mod tests { let prevhash = "4ddccd549d28f385ab457e98d1b11ce80bfea2c5ab93015ade4973e400000000".from_hex().unwrap(); let merkle = "bf4473e53794beae34e64fccc471dace6ae544180816f89591894e0f417a914c".from_hex().unwrap(); - let decode: io::Result = deserialize(some_block.clone()); - let bad_decode: io::Result = deserialize(cutoff_block); + let decode: Result = deserialize(&some_block); + let bad_decode: Result = deserialize(&cutoff_block); assert!(decode.is_ok()); assert!(bad_decode.is_err()); let real_decode = decode.unwrap(); assert_eq!(real_decode.header.version, 1); - assert_eq!(serialize(&real_decode.header.prev_blockhash), Ok(prevhash)); + assert_eq!(serialize(&real_decode.header.prev_blockhash).ok(), Some(prevhash)); // [test] TODO: actually compute the merkle root - assert_eq!(serialize(&real_decode.header.merkle_root), Ok(merkle)); + assert_eq!(serialize(&real_decode.header.merkle_root).ok(), Some(merkle)); assert_eq!(real_decode.header.time, 1231965655); assert_eq!(real_decode.header.bits, 486604799); assert_eq!(real_decode.header.nonce, 2067413810); // [test] TODO: check the transaction data - assert_eq!(serialize(&real_decode), Ok(some_block)); + assert_eq!(serialize(&real_decode).ok(), Some(some_block)); } } diff --git a/src/blockdata/blockchain.rs b/src/blockdata/blockchain.rs index 231bb3c7..eb52e01c 100644 --- a/src/blockdata/blockchain.rs +++ b/src/blockdata/blockchain.rs @@ -618,8 +618,6 @@ impl Blockchain { #[cfg(test)] mod tests { - use std::io; - use blockdata::blockchain::Blockchain; use blockdata::constants::genesis_block; use network::constants::Network::Bitcoin; @@ -632,7 +630,7 @@ mod tests { genesis_block(Bitcoin).header.bitcoin_hash()); let serial = serialize(&empty_chain); - let deserial: io::Result = deserialize(serial.unwrap()); + let deserial: Result = deserialize(&serial.unwrap()); assert!(deserial.is_ok()); let read_chain = deserial.unwrap(); diff --git a/src/blockdata/constants.rs b/src/blockdata/constants.rs index e6d83ffe..5d579260 100644 --- a/src/blockdata/constants.rs +++ b/src/blockdata/constants.rs @@ -136,13 +136,13 @@ mod test { assert_eq!(gen.input.len(), 1); assert_eq!(gen.input[0].prev_hash, Default::default()); assert_eq!(gen.input[0].prev_index, 0xFFFFFFFF); - assert_eq!(serialize(&gen.input[0].script_sig), - Ok("4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73".from_hex().unwrap())); + assert_eq!(serialize(&gen.input[0].script_sig).ok(), + Some("4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73".from_hex().unwrap())); assert_eq!(gen.input[0].sequence, MAX_SEQUENCE); assert_eq!(gen.output.len(), 1); - assert_eq!(serialize(&gen.output[0].script_pubkey), - Ok("434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac".from_hex().unwrap())); + assert_eq!(serialize(&gen.output[0].script_pubkey).ok(), + Some("434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac".from_hex().unwrap())); assert_eq!(gen.output[0].value, 50 * COIN_VALUE); assert_eq!(gen.lock_time, 0); @@ -152,7 +152,7 @@ mod test { #[test] fn bitcoin_genesis_full_block() { - let gen = genesis_block(network::Bitcoin); + let gen = genesis_block(Network::Bitcoin); assert_eq!(gen.header.version, 1); assert_eq!(gen.header.prev_blockhash, Default::default()); @@ -167,7 +167,7 @@ mod test { #[test] fn testnet_genesis_full_block() { - let gen = genesis_block(network::Testnet); + let gen = genesis_block(Network::Testnet); assert_eq!(gen.header.version, 1); assert_eq!(gen.header.prev_blockhash, Default::default()); assert_eq!(gen.header.merkle_root.be_hex_string(), diff --git a/src/blockdata/script.rs b/src/blockdata/script.rs index 162fe54c..cabf16d8 100644 --- a/src/blockdata/script.rs +++ b/src/blockdata/script.rs @@ -2552,10 +2552,9 @@ impl ConsensusDecodable for Script { #[cfg(test)] mod test { - use std::io; use serialize::hex::FromHex; - use super::{Error, Script, build_scriptint, read_scriptint, read_scriptbool}; + use super::{Error, Script, ScriptBuilder, build_scriptint, read_scriptint, read_scriptbool}; use super::MaybeOwned::Owned; use network::serialize::{deserialize, serialize}; @@ -2565,11 +2564,11 @@ mod test { fn test_tx(tx_hex: &'static str, output_hex: Vec<&'static str>) { let tx_hex = tx_hex.from_hex().unwrap(); - let tx: Transaction = deserialize(tx_hex.clone()).ok().expect("transaction"); + let tx: Transaction = deserialize(&tx_hex).ok().expect("transaction"); let script_pk: Vec