encdec_base/helpers/
mod.rs

1//! encdec test and encoding/decoding helpers
2//!
3
4use crate::EncDec;
5
6#[cfg(feature = "bitflags")]
7mod bitflags;
8
9#[cfg(feature = "bitflags")]
10pub use bitflags::EncDecBitflags;
11
12/// Helper for writing encode_decode tests for encodable objects
13pub fn test_encode_decode<'a, T>(buff: &'a mut [u8], v: T)
14where
15    T: EncDec<'a> + PartialEq,
16{
17    let encoded_len = v.encode(buff).unwrap();
18    assert_eq!(
19        encoded_len,
20        v.encode_len().unwrap(),
21        "actual and expected encode_len differ"
22    );
23
24    let (decoded, decoded_len) = T::decode(&buff[..encoded_len]).expect("decode failed");
25
26    assert!(v == decoded, "value: {:?}, decoded: {:?}", v, decoded);
27    assert_eq!(encoded_len, decoded_len, "encode and decode length differ");
28}