Skip to content

Commit 683458f

Browse files
committed
Add satisfaction tests
1 parent 4b2a456 commit 683458f

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

src/miniscript/mod.rs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,8 @@ serde_string_impl_pk!(Miniscript, "a miniscript", Ctx; ScriptContext);
449449
#[cfg(test)]
450450
mod tests {
451451

452+
use {Satisfier, ToPublicKey};
453+
452454
use super::{Miniscript, ScriptContext};
453455
use super::{Segwitv0, Tap};
454456
use hex_script;
@@ -1031,16 +1033,22 @@ mod tests {
10311033
assert_eq!(tap_ms.encode().len(), tap_ms.script_size());
10321034

10331035
// Test satisfaction code
1034-
// struct SimpleSatisfier(secp256k1::schnorrsig::Signature);
1035-
1036-
// impl Satisfier<bitcoin::PublicKey> for SimpleSatisfier {
1037-
// fn lookup_sig(&self, pk: &bitcoin::PublicKey) -> Option<BitcoinSig> {
1038-
// if *pk == self.0 {
1039-
// Some((self.sig, bitcoin::SigHashType::All))
1040-
// } else {
1041-
// None
1042-
// }
1043-
// }
1044-
// }
1036+
struct SimpleSatisfier(secp256k1::schnorrsig::Signature);
1037+
1038+
// a simple satisfier that always outputs the same signature
1039+
impl<Pk: ToPublicKey> Satisfier<Pk> for SimpleSatisfier {
1040+
fn lookup_schnorr_sig(&self, _pk: &Pk) -> Option<bitcoin::SchnorrSig> {
1041+
Some(bitcoin::SchnorrSig {
1042+
sig: self.0,
1043+
hash_ty: bitcoin::SchnorrSigHashType::Default,
1044+
})
1045+
}
1046+
}
1047+
1048+
let schnorr_sig = secp256k1::schnorrsig::Signature::from_str("84526253c27c7aef56c7b71a5cd25bebb66dddda437826defc5b2568bde81f0784526253c27c7aef56c7b71a5cd25bebb66dddda437826defc5b2568bde81f07").unwrap();
1049+
let s = SimpleSatisfier(schnorr_sig);
1050+
1051+
let wit = tap_ms.satisfy(s).unwrap();
1052+
assert_eq!(wit, vec![schnorr_sig.as_ref().to_vec(), vec![], vec![]]);
10451053
}
10461054
}

0 commit comments

Comments
 (0)