From b3bf7659d5909737a003c0e21afaefd93b4b5a7d Mon Sep 17 00:00:00 2001 From: joemphilips Date: Tue, 26 Nov 2019 20:43:08 +0900 Subject: [PATCH] add tests for script deserialization --- src/miniscript/mod.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/miniscript/mod.rs b/src/miniscript/mod.rs index 1b5c908e6..1dbfd4c3b 100644 --- a/src/miniscript/mod.rs +++ b/src/miniscript/mod.rs @@ -438,6 +438,7 @@ mod tests { match (ms, valid) { (Ok(ms), true) => { assert_eq!(format!("{:x}", ms.encode()), expected_hex); + assert_eq!(format!("{:x}", Miniscript::parse(&ms.encode()).unwrap().encode()), expected_hex); assert_eq!(ms.ty.mall.non_malleable, non_mal); assert_eq!(ms.ty.mall.safe, need_sig); assert_eq!(ms.ext.ops_count_sat.unwrap(), ops); @@ -496,6 +497,22 @@ mod tests { ms_attributes_test("c:or_i(andor(c:pk_h(fcd35ddacad9f2d5be5e464639441c6065e6955d),pk_h(9652d86bedf43ad264362e6e6eba6eb764508127),pk_h(06afd46bcdfd22ef94ac122aa11f241244a37ecc)),pk(02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e))", "6376a914fcd35ddacad9f2d5be5e464639441c6065e6955d88ac6476a91406afd46bcdfd22ef94ac122aa11f241244a37ecc886776a9149652d86bedf43ad264362e6e6eba6eb7645081278868672102d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e68ac", true, true, true, 17, 5); } + #[test] + fn deserialize_tmp() + { + fn roundtrip(ms: &str) + { + let ms = Miniscript::::from_str(ms).unwrap(); + let sc = ms.encode(); + let ms2 = Miniscript::parse(&sc).unwrap(); + assert_eq!(sc, ms2.encode()); + assert_eq!(ms, ms2); + } + roundtrip("t:and_v(vu:hash256(131772552c01444cd81360818376a040b7c3b2b7b0a53550ee3edde216cec61b),v:sha256(ec4916dd28fc4c10d78e287ca5d9cc51ee1ae73cbfde08c6b37324cbfaac8bc5))"); + roundtrip("and_n(c:pk(03daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729),and_b(l:older(4252898),a:older(16)))"); + roundtrip("t:andor(thresh_m(3,02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e,03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556,02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13),v:older(4194305),v:sha256(9267d3dbed802941483f1afa2a6bc68de5f653128aca9bf1461c5d0a3ad36ed2))"); + } + #[test] fn basic() { let pk = bitcoin::PublicKey::from_str(