musli_descriptive/
test.rs

1//! Helpers for writing tests.
2
3use core::fmt::Debug;
4
5use musli::mode::Binary;
6use musli::{Decode, Encode};
7
8musli_utils::test_fns!("descriptive", musli::mode::Binary, #[musli_value]);
9
10/// Encode a type as one and decode as another.
11#[inline(never)]
12#[track_caller]
13pub fn transcode<T, O>(value: T) -> O
14where
15    T: Debug + PartialEq + Encode<Binary>,
16    O: for<'de> Decode<'de, Binary>,
17{
18    let out = crate::to_vec(&value).expect("failed to encode");
19    let mut buf = out.as_slice();
20    let value: O = crate::decode(&mut buf).expect("failed to decode");
21    assert!(buf.is_empty());
22    value
23}