diff --git a/src/blockdata/script.rs b/src/blockdata/script.rs index e5836d0..45e6a71 100644 --- a/src/blockdata/script.rs +++ b/src/blockdata/script.rs @@ -41,7 +41,7 @@ use util::hash::Hash160; #[cfg(feature="fuzztarget")] use util::sha2::Sha256; #[cfg(not(feature="fuzztarget"))] use crypto::sha2::Sha256; -#[derive(Clone, PartialEq, Eq, Hash)] +#[derive(Clone, Default, PartialOrd, Ord, PartialEq, Eq, Hash)] /// A Bitcoin script pub struct Script(Box<[u8]>); @@ -399,10 +399,6 @@ impl Script { } } -impl Default for Script { - fn default() -> Script { Script(vec![].into_boxed_slice()) } -} - /// Creates a new script from an existing vector impl From> for Script { fn from(v: Vec) -> Script { Script(v.into_boxed_slice()) } @@ -903,6 +899,25 @@ mod test { assert_eq!(v_nonmin_alt, slop_v_nonmin_alt); } + #[test] + fn script_ord() { + let script_1 = Builder::new().push_slice(&[1,2,3,4]).into_script(); + let script_2 = Builder::new().push_int(10).into_script(); + let script_3 = Builder::new().push_int(15).into_script(); + let script_4 = Builder::new().push_opcode(opcodes::All::OP_RETURN).into_script(); + + assert!(script_1 < script_2); + assert!(script_2 < script_3); + assert!(script_3 < script_4); + + assert!(script_1 <= script_1); + assert!(script_1 >= script_1); + + assert!(script_4 > script_3); + assert!(script_3 > script_2); + assert!(script_2 > script_1); + } + #[test] #[cfg(feature="bitcoinconsensus")] fn test_bitcoinconsensus () {