Skip to content

Commit a5bb39b

Browse files
committed
Add TxTemplate satifier test
1 parent 0b9249e commit a5bb39b

File tree

1 file changed

+36
-23
lines changed

1 file changed

+36
-23
lines changed

src/interpreter/mod.rs

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,10 +1135,10 @@ mod tests {
11351135
.verify_schnorr(&schnorr_sig.sig, &sighash, xpk)
11361136
.is_ok(),
11371137
};
1138-
let fixed_hash: &sha256::Hash = &sha256::Hash::from_inner([34u8; 32]);
1138+
let txtmpl_hash: &sha256::Hash = &sha256::Hash::from_inner([34u8; 32]);
11391139
fn from_stack<'txin, 'elem>(
11401140
verify_fn: Box<dyn FnMut(&KeySigPair) -> bool + 'elem>,
1141-
fixed_hash: &'elem sha256::Hash,
1141+
txtmpl_hash: &'elem sha256::Hash,
11421142
stack: Stack<'txin>,
11431143
ms: &'elem Miniscript<BitcoinKey, NoChecks>,
11441144
) -> Iter<'elem, 'txin> {
@@ -1155,7 +1155,7 @@ mod tests {
11551155
height: 1002,
11561156
has_errored: false,
11571157
// TODO: Replace with actual hash
1158-
txtemplate: &fixed_hash,
1158+
txtemplate: &txtmpl_hash,
11591159
}
11601160
}
11611161

@@ -1177,10 +1177,11 @@ mod tests {
11771177
let hash160 = no_checks_ms(&format!("hash160({})", hash160_hash));
11781178
let ripemd160_hash = ripemd160::Hash::hash(&preimage);
11791179
let ripemd160 = no_checks_ms(&format!("ripemd160({})", ripemd160_hash));
1180+
let txtemplate = no_checks_ms(&format!("t:txtmpl({})", txtmpl_hash));
11801181

11811182
let stack = Stack::from(vec![stack::Element::Push(&der_sigs[0])]);
11821183
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1183-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &pk);
1184+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &pk);
11841185
let pk_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
11851186
assert_eq!(
11861187
pk_satisfied.unwrap(),
@@ -1192,7 +1193,7 @@ mod tests {
11921193
//Check Pk failure with wrong signature
11931194
let stack = Stack::from(vec![stack::Element::Dissatisfied]);
11941195
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1195-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &pk);
1196+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &pk);
11961197
let pk_err: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
11971198
assert!(pk_err.is_err());
11981199

@@ -1203,7 +1204,7 @@ mod tests {
12031204
stack::Element::Push(&pk_bytes),
12041205
]);
12051206
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1206-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &pkh);
1207+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &pkh);
12071208
let pkh_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
12081209
assert_eq!(
12091210
pkh_satisfied.unwrap(),
@@ -1216,7 +1217,7 @@ mod tests {
12161217
//Check After
12171218
let stack = Stack::from(vec![]);
12181219
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1219-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &after);
1220+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &after);
12201221
let after_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
12211222
assert_eq!(
12221223
after_satisfied.unwrap(),
@@ -1226,7 +1227,7 @@ mod tests {
12261227
//Check Older
12271228
let stack = Stack::from(vec![]);
12281229
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1229-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &older);
1230+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &older);
12301231
let older_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
12311232
assert_eq!(
12321233
older_satisfied.unwrap(),
@@ -1236,7 +1237,7 @@ mod tests {
12361237
//Check Sha256
12371238
let stack = Stack::from(vec![stack::Element::Push(&preimage)]);
12381239
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1239-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &sha256);
1240+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &sha256);
12401241
let sah256_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
12411242
assert_eq!(
12421243
sah256_satisfied.unwrap(),
@@ -1249,7 +1250,7 @@ mod tests {
12491250
//Check Shad256
12501251
let stack = Stack::from(vec![stack::Element::Push(&preimage)]);
12511252
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1252-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &hash256);
1253+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &hash256);
12531254
let sha256d_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
12541255
assert_eq!(
12551256
sha256d_satisfied.unwrap(),
@@ -1262,7 +1263,7 @@ mod tests {
12621263
//Check hash160
12631264
let stack = Stack::from(vec![stack::Element::Push(&preimage)]);
12641265
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1265-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &hash160);
1266+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &hash160);
12661267
let hash160_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
12671268
assert_eq!(
12681269
hash160_satisfied.unwrap(),
@@ -1275,7 +1276,7 @@ mod tests {
12751276
//Check ripemd160
12761277
let stack = Stack::from(vec![stack::Element::Push(&preimage)]);
12771278
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1278-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &ripemd160);
1279+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &ripemd160);
12791280
let ripemd160_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
12801281
assert_eq!(
12811282
ripemd160_satisfied.unwrap(),
@@ -1285,6 +1286,18 @@ mod tests {
12851286
}]
12861287
);
12871288

1289+
//Check txtemplate
1290+
let stack = Stack::from(vec![]);
1291+
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1292+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &txtemplate);
1293+
let txtemplate_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
1294+
assert_eq!(
1295+
txtemplate_satisfied.unwrap(),
1296+
vec![SatisfiedConstraint::TxTemplate {
1297+
hash: txtmpl_hash.clone()
1298+
}]
1299+
);
1300+
12881301
//Check AndV
12891302
let pk_bytes = pks[1].to_public_key().to_bytes();
12901303
let stack = Stack::from(vec![
@@ -1298,7 +1311,7 @@ mod tests {
12981311
pks[1].to_pubkeyhash()
12991312
));
13001313
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1301-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1314+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
13021315

13031316
let and_v_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
13041317
assert_eq!(
@@ -1324,7 +1337,7 @@ mod tests {
13241337
pks[0], sha256_hash
13251338
));
13261339
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1327-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1340+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
13281341

13291342
let and_b_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
13301343
assert_eq!(
@@ -1352,7 +1365,7 @@ mod tests {
13521365
pks[1].to_pubkeyhash(),
13531366
));
13541367
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1355-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1368+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
13561369

13571370
let and_or_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
13581371
assert_eq!(
@@ -1376,7 +1389,7 @@ mod tests {
13761389
stack::Element::Dissatisfied,
13771390
]);
13781391
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1379-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1392+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
13801393

13811394
let and_or_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
13821395
assert_eq!(
@@ -1397,7 +1410,7 @@ mod tests {
13971410
pks[0], sha256_hash
13981411
));
13991412
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1400-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1413+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
14011414

14021415
let or_b_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
14031416
assert_eq!(
@@ -1415,7 +1428,7 @@ mod tests {
14151428
pks[0], sha256_hash
14161429
));
14171430
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1418-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1431+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
14191432

14201433
let or_d_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
14211434
assert_eq!(
@@ -1435,7 +1448,7 @@ mod tests {
14351448
sha256_hash, pks[0]
14361449
));
14371450
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1438-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1451+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
14391452

14401453
let or_c_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
14411454
assert_eq!(
@@ -1455,7 +1468,7 @@ mod tests {
14551468
sha256_hash, pks[0]
14561469
));
14571470
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1458-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1471+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
14591472

14601473
let or_i_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
14611474
assert_eq!(
@@ -1478,7 +1491,7 @@ mod tests {
14781491
pks[4], pks[3], pks[2], pks[1], pks[0],
14791492
));
14801493
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1481-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1494+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
14821495

14831496
let thresh_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
14841497
assert_eq!(
@@ -1508,7 +1521,7 @@ mod tests {
15081521
pks[4], pks[3], pks[2], pks[1], pks[0],
15091522
));
15101523
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1511-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1524+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
15121525

15131526
let multi_satisfied: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
15141527
assert_eq!(
@@ -1538,7 +1551,7 @@ mod tests {
15381551
pks[4], pks[3], pks[2], pks[1], pks[0],
15391552
));
15401553
let vfyfn = vfyfn_.clone(); // sigh rust 1.29...
1541-
let constraints = from_stack(Box::new(vfyfn), fixed_hash, stack, &elem);
1554+
let constraints = from_stack(Box::new(vfyfn), txtmpl_hash, stack, &elem);
15421555

15431556
let multi_error: Result<Vec<SatisfiedConstraint>, Error> = constraints.collect();
15441557
assert!(multi_error.is_err());

0 commit comments

Comments
 (0)