From dac552b4365e9feaffc5614979c7c57d1f41ff5b Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Fri, 22 Mar 2024 07:03:30 +1100 Subject: [PATCH] Add unit tests for shortest/longest witness program Add two unit tests that verify we can correctly determine if a shortest allowed and longest allowed script is a witness program. Done in preparation for patching the `witness_version` function. --- bitcoin/src/blockdata/script/borrowed.rs | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/bitcoin/src/blockdata/script/borrowed.rs b/bitcoin/src/blockdata/script/borrowed.rs index a4bb14fb..6f817d5d 100644 --- a/bitcoin/src/blockdata/script/borrowed.rs +++ b/bitcoin/src/blockdata/script/borrowed.rs @@ -660,3 +660,31 @@ delegate_index!( RangeToInclusive, (Bound, Bound) ); + +#[cfg(test)] +mod tests { + use super::*; + use crate::blockdata::script::witness_program::WitnessProgram; + + #[test] + fn shortest_witness_program() { + let bytes = [0x00; 2]; // Arbitrary bytes, witprog must be between 2 and 40. + let version = WitnessVersion::V15; // Arbitrary version number, intentionally not 0 or 1. + + let p = WitnessProgram::new(version, &bytes).expect("failed to create witness program"); + let script = ScriptBuf::new_witness_program(&p); + + assert_eq!(script.witness_version(), Some(version)); + } + + #[test] + fn longest_witness_program() { + let bytes = [0x00; 40]; // Arbitrary bytes, witprog must be between 2 and 40. + let version = WitnessVersion::V16; // Arbitrary version number, intentionally not 0 or 1. + + let p = WitnessProgram::new(version, &bytes).expect("failed to create witness program"); + let script = ScriptBuf::new_witness_program(&p); + + assert_eq!(script.witness_version(), Some(version)); + } +}