serde-smile 0.3.1

A Smile implementation for Serde
Documentation
use crate::{Deserializer, Serializer};
use serde::Serialize;

#[test]
fn empty() {
    let mut ser = Serializer::new(vec![]);
    ser.write_header().unwrap();
    let buf = ser.into_inner();

    let mut it = Deserializer::from_slice(&buf).into_iter::<()>();
    assert!(it.next().is_none());
}

#[test]
fn empty_eos() {
    let mut ser = Serializer::new(vec![]);
    ser.end().unwrap();
    let buf = ser.into_inner();

    let mut it = Deserializer::from_slice(&buf).into_iter::<()>();
    assert!(it.next().is_none());
}

#[test]
fn multiple() {
    let mut ser = Serializer::new(vec![]);
    1i32.serialize(&mut ser).unwrap();
    2i32.serialize(&mut ser).unwrap();
    3i32.serialize(&mut ser).unwrap();
    let buf = ser.into_inner();

    let values = Deserializer::from_slice(&buf)
        .into_iter::<i32>()
        .collect::<Result<Vec<_>, _>>()
        .unwrap();

    assert_eq!(values, [1, 2, 3]);
}

#[test]
fn stop_at_eos() {
    let mut ser = Serializer::new(vec![]);
    1i32.serialize(&mut ser).unwrap();
    2i32.serialize(&mut ser).unwrap();
    3i32.serialize(&mut ser).unwrap();
    ser.end().unwrap();
    let mut buf = ser.into_inner();
    buf.push(0);

    let mut buf = &buf[..];
    let values = Deserializer::from_reader(&mut buf)
        .into_iter::<i32>()
        .collect::<Result<Vec<_>, _>>()
        .unwrap();

    assert_eq!(values, [1, 2, 3]);
    assert_eq!(buf, [0]);
}