use indoc::indoc; use miniserde::json::{self, Value}; #[test] fn test_round_trip_deeply_nested() { let depth = if cfg!(miri) { 40 } else { 100_000 }; let mut j = String::new(); for _ in 0..depth { j.push_str("{\"x\":["); } for _ in 0..depth { j.push_str("]}"); } let value: Value = json::from_str(&j).unwrap(); let j2 = json::to_string(&value); assert_eq!(j, j2); } #[test] fn test_debug() { let j = r#" { "Null": null, "Bool": true, "Number": 1, "String": "...", "Array": [true], "EmptyArray": [], "EmptyObject": {} } "#; let value: Value = json::from_str(j).unwrap(); let debug = format!("{:#?}", value); let expected = indoc! {r#" Object { "Array": Array [ Bool(true), ], "Bool": Bool(true), "EmptyArray": Array [], "EmptyObject": Object {}, "Null": Null, "Number": Number(1), "String": String("..."), }"# }; assert_eq!(debug, expected); }