Skip to content

Commit 84bee2f

Browse files
committed
Simplify Witness construction in tests
The `Witness`-related tests were constructing `Witness` in over-complicated way by serializing `Vec<Vec<u8>>` and then deserializing `Witness` even though they were not supposed to test serialization but Taproot accessor methods. This was difficult to understand and maintain. This change simplifies them to just construct the `Witness` from array of `Vec<u8>`s using the recently-added constructors. Note that we already have serialization tests written separately so we're not losing meaningful coverage here.
1 parent 3551ec2 commit 84bee2f

File tree

1 file changed

+13
-52
lines changed

1 file changed

+13
-52
lines changed

bitcoin/src/blockdata/witness.rs

Lines changed: 13 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -387,14 +387,8 @@ mod test {
387387
// annex starting with 0x50 causes the branching logic.
388388
let annex = hex!("50");
389389

390-
let witness_vec = vec![tapscript.clone(), control_block.clone()];
391-
let witness_vec_annex = vec![tapscript.clone(), control_block, annex];
392-
393-
let witness_serialized: Vec<u8> = serialize(&witness_vec);
394-
let witness_serialized_annex: Vec<u8> = serialize(&witness_vec_annex);
395-
396-
let witness = deserialize::<Witness>(&witness_serialized[..]).unwrap();
397-
let witness_annex = deserialize::<Witness>(&witness_serialized_annex[..]).unwrap();
390+
let witness = Witness::from([&*tapscript, &control_block]);
391+
let witness_annex = Witness::from([&*tapscript, &control_block, &annex]);
398392

399393
// With or without annex, the tapscript should be returned.
400394
assert_eq!(witness.tapscript(), Some(Script::from_bytes(&tapscript[..])));
@@ -409,14 +403,8 @@ mod test {
409403
// annex starting with 0x50 causes the branching logic.
410404
let annex = hex!("50");
411405

412-
let witness_vec = vec![tapscript.clone(), control_block.clone()];
413-
let witness_vec_annex = vec![tapscript.clone(), control_block, annex];
414-
415-
let witness_serialized: Vec<u8> = serialize(&witness_vec);
416-
let witness_serialized_annex: Vec<u8> = serialize(&witness_vec_annex);
417-
418-
let witness = deserialize::<Witness>(&witness_serialized[..]).unwrap();
419-
let witness_annex = deserialize::<Witness>(&witness_serialized_annex[..]).unwrap();
406+
let witness = Witness::from([&*tapscript, &control_block]);
407+
let witness_annex = Witness::from([&*tapscript, &control_block, &annex]);
420408

421409
let expected_leaf_script =
422410
LeafScript { version: LeafVersion::TapScript, script: Script::from_bytes(&tapscript) };
@@ -432,14 +420,8 @@ mod test {
432420
// annex starting with 0x50 causes the branching logic.
433421
let annex = hex!("50");
434422

435-
let witness_vec = vec![signature.clone()];
436-
let witness_vec_annex = vec![signature.clone(), annex];
437-
438-
let witness_serialized: Vec<u8> = serialize(&witness_vec);
439-
let witness_serialized_annex: Vec<u8> = serialize(&witness_vec_annex);
440-
441-
let witness = deserialize::<Witness>(&witness_serialized[..]).unwrap();
442-
let witness_annex = deserialize::<Witness>(&witness_serialized_annex[..]).unwrap();
423+
let witness = Witness::from([&*signature]);
424+
let witness_annex = Witness::from([&*signature, &annex]);
443425

444426
// With or without annex, no tapscript should be returned.
445427
assert_eq!(witness.tapscript(), None);
@@ -454,18 +436,9 @@ mod test {
454436
let annex = hex!("50");
455437
let signature = vec![0xff; 64];
456438

457-
let witness_vec = vec![tapscript.clone(), control_block.clone()];
458-
let witness_vec_annex = vec![tapscript.clone(), control_block.clone(), annex.clone()];
459-
let witness_vec_key_spend_annex = vec![signature, annex];
460-
461-
let witness_serialized: Vec<u8> = serialize(&witness_vec);
462-
let witness_serialized_annex: Vec<u8> = serialize(&witness_vec_annex);
463-
let witness_serialized_key_spend_annex: Vec<u8> = serialize(&witness_vec_key_spend_annex);
464-
465-
let witness = deserialize::<Witness>(&witness_serialized[..]).unwrap();
466-
let witness_annex = deserialize::<Witness>(&witness_serialized_annex[..]).unwrap();
467-
let witness_key_spend_annex =
468-
deserialize::<Witness>(&witness_serialized_key_spend_annex[..]).unwrap();
439+
let witness = Witness::from([&*tapscript, &control_block]);
440+
let witness_annex = Witness::from([&*tapscript, &control_block, &annex]);
441+
let witness_key_spend_annex = Witness::from([&*signature, &annex]);
469442

470443
// With or without annex, the tapscript should be returned.
471444
assert_eq!(witness.taproot_control_block(), Some(&control_block[..]));
@@ -480,14 +453,8 @@ mod test {
480453
// annex starting with 0x50 causes the branching logic.
481454
let annex = hex!("50");
482455

483-
let witness_vec = vec![tapscript.clone(), control_block.clone()];
484-
let witness_vec_annex = vec![tapscript.clone(), control_block.clone(), annex.clone()];
485-
486-
let witness_serialized: Vec<u8> = serialize(&witness_vec);
487-
let witness_serialized_annex: Vec<u8> = serialize(&witness_vec_annex);
488-
489-
let witness = deserialize::<Witness>(&witness_serialized[..]).unwrap();
490-
let witness_annex = deserialize::<Witness>(&witness_serialized_annex[..]).unwrap();
456+
let witness = Witness::from([&*tapscript, &control_block]);
457+
let witness_annex = Witness::from([&*tapscript, &control_block, &annex]);
491458

492459
// With or without annex, the tapscript should be returned.
493460
assert_eq!(witness.taproot_annex(), None);
@@ -498,14 +465,8 @@ mod test {
498465
// annex starting with 0x50 causes the branching logic.
499466
let annex = hex!("50");
500467

501-
let witness_vec = vec![signature.clone()];
502-
let witness_vec_annex = vec![signature.clone(), annex.clone()];
503-
504-
let witness_serialized: Vec<u8> = serialize(&witness_vec);
505-
let witness_serialized_annex: Vec<u8> = serialize(&witness_vec_annex);
506-
507-
let witness = deserialize::<Witness>(&witness_serialized[..]).unwrap();
508-
let witness_annex = deserialize::<Witness>(&witness_serialized_annex[..]).unwrap();
468+
let witness = Witness::from([&*signature]);
469+
let witness_annex = Witness::from([&*signature, &annex]);
509470

510471
// With or without annex, the tapscript should be returned.
511472
assert_eq!(witness.taproot_annex(), None);

0 commit comments

Comments
 (0)