Merge rust-bitcoin/rust-bitcoin#4012: primitives: Add tests to `block.rs`

ff3b3ddb67 Add a test for Header size (Jamil Lambert, PhD)
0df15d5cfd Add version test (Jamil Lambert, PhD)
927251ef8e Expand version signalling test (Jamil Lambert, PhD)

Pull request description:

  Running `cargo mutants` on `primitives/src/block.rs` found multiple mutants.

  Add tests to kill the mutants and replace one verbosely written out sum with the result.

ACKs for top commit:
  apoelstra:
    ACK ff3b3ddb675446fd21f3f7488749fc7fb26c7ef2; successfully ran local tests
  tcharding:
    ACK ff3b3ddb67

Tree-SHA512: a30cabf699b5c1c5f1b3507385f1041795316c8a5739454b219719aafe24d1f10e20b69b3cb2330290b7df71d5fedfd0d353b63404f47bef9476e0be2b115295
This commit is contained in:
merge-script 2025-02-07 05:15:53 +00:00
commit 94c3fa4ca7
No known key found for this signature in database
GPG Key ID: C588D63CE41B97C1
1 changed files with 32 additions and 0 deletions

View File

@ -365,6 +365,8 @@ mod tests {
fn version_is_signalling() { fn version_is_signalling() {
let version = Version::from_consensus(0b00100000000000000000000000000010); let version = Version::from_consensus(0b00100000000000000000000000000010);
assert!(Version::is_signalling_soft_fork(&version, 1)); assert!(Version::is_signalling_soft_fork(&version, 1));
let version = Version::from_consensus(0b00110000000000000000000000000000);
assert!(Version::is_signalling_soft_fork(&version, 28));
} }
#[test] #[test]
@ -372,4 +374,34 @@ mod tests {
let version = Version::from_consensus(0b00100000000000000000000000000010); let version = Version::from_consensus(0b00100000000000000000000000000010);
assert!(!Version::is_signalling_soft_fork(&version, 0)); assert!(!Version::is_signalling_soft_fork(&version, 0));
} }
#[test]
fn version_to_consensus() {
let version = Version::from_consensus(1234567890);
assert_eq!(version.to_consensus(), 1234567890);
}
// Check that the size of the header consensus serialization matches the const SIZE value
#[test]
fn header_size() {
let header = Header {
version: Version::ONE,
prev_blockhash: BlockHash::from_byte_array([0x99; 32]),
merkle_root: TxMerkleNode::from_byte_array([0x77; 32]),
time: 2,
bits: CompactTarget::from_consensus(3),
nonce: 4,
};
// Calculate the size of the block header in bytes from the sum of the serialized lengths
// it's fields: version, prev_blockhash, merkle_root, time, bits, nonce.
let header_size = header.version.to_consensus().to_le_bytes().len()
+ header.prev_blockhash.as_byte_array().len()
+ header.merkle_root.as_byte_array().len()
+ header.time.to_le_bytes().len()
+ header.bits.to_consensus().to_le_bytes().len()
+ header.nonce.to_le_bytes().len();
assert_eq!(header_size, Header::SIZE);
}
} }