Skip to content

Commit c41cd1a

Browse files
committed
Add satisfaction tests
1 parent 4b86afe commit c41cd1a

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/miniscript/mod.rs

Lines changed: 21 additions & 0 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,5 +1033,24 @@ mod tests {
10311033
);
10321034
assert_eq!(tap_ms.script_size(), 104);
10331035
assert_eq!(tap_ms.encode().len(), tap_ms.script_size());
1036+
1037+
// Test satisfaction code
1038+
struct SimpleSatisfier(secp256k1::schnorr::Signature);
1039+
1040+
// a simple satisfier that always outputs the same signature
1041+
impl<Pk: ToPublicKey> Satisfier<Pk> for SimpleSatisfier {
1042+
fn lookup_schnorr_sig(&self, _pk: &Pk) -> Option<bitcoin::SchnorrSig> {
1043+
Some(bitcoin::SchnorrSig {
1044+
sig: self.0,
1045+
hash_ty: bitcoin::SchnorrSigHashType::Default,
1046+
})
1047+
}
1048+
}
1049+
1050+
let schnorr_sig = secp256k1::schnorr::Signature::from_str("84526253c27c7aef56c7b71a5cd25bebb66dddda437826defc5b2568bde81f0784526253c27c7aef56c7b71a5cd25bebb66dddda437826defc5b2568bde81f07").unwrap();
1051+
let s = SimpleSatisfier(schnorr_sig);
1052+
1053+
let wit = tap_ms.satisfy(s).unwrap();
1054+
assert_eq!(wit, vec![schnorr_sig.as_ref().to_vec(), vec![], vec![]]);
10341055
}
10351056
}

0 commit comments

Comments
 (0)