msgpacker 0.4.3

MessagePack protocol implementation for Rust.
Documentation
use msgpacker::prelude::*;
use proptest::prelude::*;

mod utils;

#[test]
fn empty_vec() {
    let v = vec![];
    let mut bytes = vec![];
    let n = v.pack(&mut bytes);
    let (o, x) = Vec::<u8>::unpack(&bytes).unwrap();
    let (p, y) = Vec::<u8>::unpack_iter(bytes).unwrap();
    assert_eq!(o, n);
    assert_eq!(p, n);
    assert_eq!(v, x);
    assert_eq!(v, y);
}

#[test]
fn empty_str() {
    let s = "";
    let mut bytes = vec![];
    let n = s.pack(&mut bytes);
    let (o, x) = String::unpack(&bytes).unwrap();
    let (p, y) = String::unpack_iter(bytes).unwrap();
    assert_eq!(o, n);
    assert_eq!(p, n);
    assert_eq!(s, x);
    assert_eq!(s, y);
}

proptest! {
    #[test]
    fn vec(v: Vec<u8>) {
        utils::case(v);
    }

    #[test]
    fn str(s: String) {
        utils::case(s);
    }

    #[test]
    #[ignore]
    fn large_vec(v in prop::collection::vec(any::<u8>(), 0..=u16::MAX as usize * 2)) {
        utils::case(v);
    }

    #[test]
    #[ignore]
    fn large_str(v in prop::collection::vec(any::<char>(), 0..=u16::MAX as usize * 2)) {
        utils::case(v.into_iter().collect::<String>());
    }
}