Skip to content

Commit cd3dd2a

Browse files
committed
Merge rust-bitcoin#5559: primitives: Improve test coverage of CompactTarget
899846c Improve test coverage of CompactTarget (Jamil Lambert, PhD) Pull request description: Add tests to increase the test coverage of pow.rs to 100% ACKs for top commit: tcharding: ACK 899846c apoelstra: ACK 899846c; successfully ran local tests Tree-SHA512: 543cb7cfc44a371002d0ad3335f91aeb09f2ccd025cd363a925bda08cc7f5ef223a364056d1d44537d32d496488e4fb1d14c16d03f866f5888a3f663b0cd4349
2 parents 48efa42 + 899846c commit cd3dd2a

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

primitives/src/pow.rs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,52 @@ impl std::error::Error for CompactTargetDecoderError {
128128
mod tests {
129129
#[cfg(feature = "alloc")]
130130
use alloc::format;
131+
#[cfg(feature = "alloc")]
132+
use alloc::string::ToString;
133+
#[cfg(feature = "std")]
134+
use std::error::Error as _;
135+
136+
use encoding::Decoder as _;
131137

132138
use super::*;
133139

140+
#[test]
141+
fn compact_target_decoder_read_limit() {
142+
// read_limit is one u32 = 4 bytes for empty decoder
143+
assert_eq!(CompactTargetDecoder::default().read_limit(), 4);
144+
assert_eq!(<CompactTarget as encoding::Decodable>::decoder().read_limit(), 4);
145+
}
146+
147+
#[test]
148+
fn compact_target_decoder_round_trip() {
149+
let bits: u32 = 0x1d00_ffff;
150+
let compact_target =
151+
encoding::decode_from_slice::<CompactTarget>(&bits.to_le_bytes()).unwrap();
152+
assert_eq!(compact_target.to_consensus(), bits);
153+
}
154+
155+
#[test]
156+
#[cfg(feature = "alloc")]
157+
#[allow(deprecated)]
158+
fn compact_target_to_hex() {
159+
let compact_target = CompactTarget::from_consensus(0x1d00_ffff);
160+
assert_eq!(compact_target.to_hex(), "1d00ffff");
161+
}
162+
163+
#[test]
164+
#[cfg(feature = "alloc")]
165+
fn compact_target_decoder_error_display_and_source() {
166+
let mut slice = [0u8; 3].as_slice();
167+
let mut decoder = CompactTargetDecoder::new();
168+
169+
assert!(decoder.push_bytes(&mut slice).unwrap());
170+
171+
let err = decoder.end().unwrap_err();
172+
assert!(!err.to_string().is_empty());
173+
#[cfg(feature = "std")]
174+
assert!(err.source().is_some());
175+
}
176+
134177
#[test]
135178
fn compact_target_ordering() {
136179
let lower = CompactTarget::from_consensus(0x1d00_fffe);

0 commit comments

Comments
 (0)