use simd_json_derive::{Deserialize, Serialize};
#[test]
fn unnamed1() {
#[derive(simd_json_derive::Serialize)]
struct Bla(u8);
let b = Bla(1);
println!("{}", b.json_string().unwrap());
assert_eq!(r#"1"#, b.json_string().unwrap())
}
#[test]
fn unnamed2() {
#[derive(simd_json_derive::Serialize)]
struct Bla(u8, u16);
let b = Bla(1, 2);
println!("{}", b.json_string().unwrap());
assert_eq!(r#"[1,2]"#, b.json_string().unwrap())
}
#[test]
fn named() {
#[derive(simd_json_derive::Serialize, simd_json_derive::Deserialize, PartialEq, Debug)]
struct Bla {
f1: u8,
f2: String,
}
let b = Bla {
f1: 1,
f2: "snot".into(),
};
let mut s = b.json_string().unwrap();
println!("{s}",);
assert_eq!(r#"{"f1":1,"f2":"snot"}"#, s);
let b1 = unsafe { Bla::from_str(s.as_mut_str()) }.unwrap();
assert_eq!(b, b1);
}
#[test]
fn unnamed1_lifetime() {
#[derive(simd_json_derive::Serialize)]
struct BlaU1L<'a>(&'a str);
let b = BlaU1L("snot");
println!("{}", b.json_string().unwrap());
assert_eq!(r#""snot""#, b.json_string().unwrap())
}
#[test]
fn unnamed2_lifetime() {
#[derive(simd_json_derive::Serialize)]
struct BlaU2L<'a, 'b>(&'a str, &'b str);
let b = BlaU2L("hello", "world");
println!("{}", b.json_string().unwrap());
assert_eq!(r#"["hello","world"]"#, b.json_string().unwrap())
}
#[test]
fn named_lifetime() {
#[derive(simd_json_derive::Serialize)]
struct BlaN2L<'a, 'b> {
f1: &'a str,
f2: &'b str,
}
let b = BlaN2L {
f1: "snot",
f2: "badger",
};
println!("{}", b.json_string().unwrap());
assert_eq!(r#"{"f1":"snot","f2":"badger"}"#, b.json_string().unwrap())
}
#[test]
fn borrowed() {
#[derive(simd_json_derive::Serialize, simd_json_derive::Deserialize, PartialEq, Debug)]
struct SIMDExample<'sin> {
id: u64,
#[serde(borrow)]
id_str: &'sin str,
}
let mut s = r#"{"id":23,"id_str":"42"}"#.to_string();
unsafe {
assert_eq!(
SIMDExample {
id: 23,
id_str: "42"
},
SIMDExample::from_str(s.as_mut_str()).unwrap()
);
}
}
#[test]
fn tpl_array() {
#[derive(simd_json_derive::Serialize, simd_json_derive::Deserialize, PartialEq, Debug)]
struct Bla {
tpl: (u8, u8),
array: [u8; 2],
}
let b = Bla {
tpl: (1, 2),
array: [3, 4],
};
println!("{}", b.json_string().unwrap());
let mut s = r#"{"tpl":[1,2],"array":[3,4]}"#.to_string();
assert_eq!(s, b.json_string().unwrap());
unsafe {
assert_eq!(b, Bla::from_str(s.as_mut_str()).unwrap());
}
}