fastsnbt 0.2.1

Serde deserializer for Minecraft's stringified NBT format
Documentation
use fastnbt::{ByteArray, IntArray, LongArray};
use serde::Deserialize;

use crate::from_str;


#[test]
fn test_num() {
    let input = "20b";
    let v: i32 = from_str(input).unwrap();
    assert_eq!(20, v);
    let input = "20s";
    let v: i32 = from_str(input).unwrap();
    assert_eq!(20, v);
    let input = "20l";
    let v: i32 = from_str(input).unwrap();
    assert_eq!(20, v);
    let input = "20l";
    let v: u8 = from_str(input).unwrap();
    assert_eq!(20, v);
}

#[test]
fn test_float() {
    let input = "50.";
    let f: f64 = from_str(input).unwrap();
    assert_eq!(50., f);
    let input = "-5000.e-2f";
    let f: f64 = from_str(input).unwrap();
    assert_eq!(-50., f);
    let input = "inf";
    let f: f64 = from_str(input).unwrap();
    assert_eq!(f64::INFINITY, f);
}

#[test]
fn test_str() {
    let input = "\"simple\"";
    let s: &str = from_str(input).unwrap();
    assert_eq!("simple", s);
    let input = "no+.quo0tes";
    let s: &str = from_str(input).unwrap();
    assert_eq!("no+.quo0tes", s);
    let input = "'this\\'is a string'";
    let s: String = from_str(input).unwrap();
    assert_eq!("this\'is a string", s);
    let input = "\"yet\\\"ano\\\\\\\"ther\"";
    let s: String = from_str(input).unwrap();
    assert_eq!("yet\"ano\\\"ther", s);
    assert!(from_str::<&str>("\"not closed").is_err());
    assert!(from_str::<&str>("test/").is_err());
}

#[test]
fn test_seq() {
    let input = "[1b,2b,3b]";
    let bytes: Vec<u8> = from_str(input).unwrap();
    assert_eq!(&[1, 2, 3], bytes.as_slice());
    let input = "[1B,2,5.0e1D]";
    let data: (i8,u64,f64) = from_str(input).unwrap();
    assert_eq!((1, 2, 50.), data);
}

#[test]
fn test_map() {
    #[derive(Debug, Deserialize, PartialEq, Eq)]
    struct SimpleStruct<'a> {
        s: &'a str,
        x: i16,
    }

    let input = "{x:-10,s:test}";
    let data: SimpleStruct = from_str(input).unwrap();
    assert_eq!(SimpleStruct { s: "test", x: -10 }, data);
}

#[test]
fn test_bytearray() {
    let input = "[B;1b,-2b,3B]";
    let data: ByteArray = from_str(input).unwrap();
    assert_eq!(ByteArray::new(vec![1,-2,3]), data);
}

#[test]
fn test_intarray() {
    let input = "[I;1,2,-3]";
    let data: IntArray = from_str(input).unwrap();
    assert_eq!(IntArray::new(vec![1,2,-3]), data);
}

#[test]
fn test_longarray() {
    let input = "[L;1l,2L,-3l]";
    let data: LongArray = from_str(input).unwrap();
    assert_eq!(LongArray::new(vec![1,2,-3]), data);
}