Merge pull request #152 from rust-bitcoin/2018-08-script-ord

impl PartialOrd, Ord for Script
This commit is contained in:
Andrew Poelstra 2018-08-26 15:38:43 +00:00 committed by GitHub
commit fe99a88acf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 5 deletions

View File

@ -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<Vec<u8>> for Script {
fn from(v: Vec<u8>) -> 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 () {