#![cfg(feature = "std")]
use musli::json::Encoding;
use musli::{Decode, Encode};
use rand::prelude::*;
pub(crate) enum Json {}
const CONFIG: Encoding<Json> = Encoding::new().with_mode();
#[derive(Debug, PartialEq, Encode, Decode)]
#[musli(mode = Json, name_all = "name")]
struct SimpleJsonStruct<'a> {
name: &'a str,
age: f32,
c: char,
}
#[test]
fn test_simple_json_encoding() {
let mut rng = StdRng::seed_from_u64(123412327832);
let expected = vec![SimpleJsonStruct {
name: "Aristotle",
age: 61.1415,
c: rng.random(),
}];
let out = CONFIG.to_string(&expected).unwrap();
println!("{out}");
let actual: Vec<SimpleJsonStruct<'_>> = CONFIG.from_slice(out.as_bytes()).unwrap();
assert_eq!(expected, actual);
let out = musli::json::to_string(&expected).unwrap();
println!("{out}");
let actual: Vec<SimpleJsonStruct<'_>> = musli::json::from_slice(out.as_bytes()).unwrap();
assert_eq!(expected, actual);
let value: musli::value::Value<_> = musli::json::from_slice(b"10.00001e-121").unwrap();
println!("{value:?}");
}