lilliput_core/header/
null.rs1#[cfg(any(test, feature = "testing"))]
2use proptest::prelude::*;
3#[cfg(any(test, feature = "testing"))]
4use proptest_derive::Arbitrary;
5
6#[cfg_attr(any(test, feature = "testing"), derive(Arbitrary))]
8#[derive(Default, Copy, Clone, Eq, PartialEq, Debug)]
9pub struct NullHeader;
10
11impl NullHeader {
12 #[inline]
14 pub fn new() -> Self {
15 Self
16 }
17}
18
19impl NullHeader {
20 pub(crate) const MASK: u8 = 0b00000000;
21 pub(crate) const TYPE_BITS: u8 = 0b00000000;
22}
23
24#[cfg(test)]
25mod tests {
26 use proptest::prelude::*;
27 use test_log::test;
28
29 use crate::{
30 config::EncoderConfig,
31 decoder::Decoder,
32 encoder::Encoder,
33 io::{SliceReader, VecWriter},
34 };
35
36 use super::*;
37
38 proptest! {
39 #[test]
40 fn encode_decode_roundtrip(header in NullHeader::arbitrary(), config in EncoderConfig::arbitrary()) {
41 let mut encoded: Vec<u8> = Vec::new();
42 let writer = VecWriter::new(&mut encoded);
43 let mut encoder = Encoder::new(writer, config);
44 encoder.encode_null_header(&header).unwrap();
45
46 prop_assert!(encoded.len() == 1);
47
48 let reader = SliceReader::new(&encoded);
49 let mut decoder = Decoder::from_reader(reader);
50 let decoded = decoder.decode_null_header().unwrap();
51 prop_assert_eq!(&decoded, &header);
52 }
53 }
54}