Merge rust-bitcoin/rust-bitcoin#3324: Add tests for witness_program

733505148c Add tests for witness_program (Shing Him Ng)

Pull request description:

  Add tests for witness_program

ACKs for top commit:
  tcharding:
    ACK 733505148c
  Kixunil:
    ACK 733505148c
  apoelstra:
    ACK 733505148c successfully ran local tests

Tree-SHA512: c1ee82edf22c7b39bc110d03836ba5ebfa785a63185a75c1a61781180ff907c1ea0c491c963629450f360152766845dacedccc6cf56bc3d8c607e66281427dd3
This commit is contained in:
merge-script 2024-09-09 20:28:24 +00:00
commit 08710d81a6
No known key found for this signature in database
GPG Key ID: C588D63CE41B97C1
1 changed files with 42 additions and 0 deletions

View File

@ -164,3 +164,45 @@ impl std::error::Error for Error {
} }
} }
} }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn witness_program_is_too_short() {
let arbitrary_bytes = [0x00; MIN_SIZE - 1];
assert!(WitnessProgram::new(WitnessVersion::V15, &arbitrary_bytes).is_err()); // Arbitrary version
}
#[test]
fn witness_program_is_too_long() {
let arbitrary_bytes = [0x00; MAX_SIZE + 1];
assert!(WitnessProgram::new(WitnessVersion::V15, &arbitrary_bytes).is_err()); // Arbitrary version
}
#[test]
fn valid_v0_witness_programs() {
let arbitrary_bytes = [0x00; MAX_SIZE];
for size in MIN_SIZE..=MAX_SIZE {
let program = WitnessProgram::new(WitnessVersion::V0, &arbitrary_bytes[..size]);
if size == 20 {
assert!(program.expect("valid witness program").is_p2wpkh());
continue
}
if size == 32 {
assert!(program.expect("valid witness program").is_p2wsh());
continue
}
assert!(program.is_err());
}
}
#[test]
fn valid_v1_witness_programs() {
let arbitrary_bytes = [0x00; 32];
assert!(WitnessProgram::new(WitnessVersion::V1, &arbitrary_bytes).expect("valid witness program").is_p2tr());
}
}