use core::marker::PhantomData; use msgpacker::prelude::*; use proptest::prelude::*; use std::collections::HashMap; mod utils; #[derive( Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, MsgPacker, proptest_derive::Arbitrary, )] struct Value { pub t00: Option, pub t01: Option, pub t02: Option, pub t03: Option, pub t04: Option, pub t05: Option, pub t06: Option, pub t07: Option, pub t08: Option, pub t09: Option, pub t10: (), pub t11: PhantomData, pub t12: Option, pub t13: Option>, pub t14: Option, } proptest! { #[test] fn array(value: Vec) { let mut bytes = Vec::new(); let n = msgpacker::pack_array(&mut bytes, &value); assert_eq!(n, bytes.len()); let (o, x): (usize, Vec) = msgpacker::unpack_array(&bytes).unwrap(); let (p, y): (usize, Vec) = msgpacker::unpack_array_iter(bytes).unwrap(); assert_eq!(n, o); assert_eq!(n, p); assert_eq!(value, x); assert_eq!(value, y); } #[test] fn map(map: HashMap) { let mut bytes = Vec::new(); let n = msgpacker::pack_map(&mut bytes, &map); assert_eq!(n, bytes.len()); let (o, x): (usize, HashMap) = msgpacker::unpack_map(&bytes).unwrap(); let (p, y): (usize, HashMap) = msgpacker::unpack_map_iter(bytes).unwrap(); assert_eq!(n, o); assert_eq!(n, p); assert_eq!(map, x); assert_eq!(map, y); } }