use std::fmt::{self, Display};
use crate::parse::application::protocols::bitcoin::BitcoinPacket;
impl Display for BitcoinPacket {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"Bitcoin Packet: magic={:02X?}, command={}, length={}, checksum={:02X?}, payload={:02X?}",
self.magic, self.command, self.length, self.checksum, self.payload
)
}
}
#[cfg(test)]
mod tests {
use crate::parse::application::protocols::bitcoin::BitcoinPacket;
#[test]
fn test_bitcoin_packet_display() {
let packet = BitcoinPacket {
magic: 0xF9BEB4D9,
command: "version".to_string(),
length: 2,
checksum: [0xAB, 0xCD, 0xEF, 0x01],
payload: vec![0xDE, 0xAD],
};
let rendered = packet.to_string();
assert!(rendered.starts_with("Bitcoin Packet:"));
assert!(rendered.contains("command=version"));
assert!(rendered.contains("length=2"));
assert!(rendered.contains("payload=[DE, AD]"));
}
}