in rust-runtime/aws-smithy-json/src/deserialize/token.rs [612:675]
fn test_expect_document() {
let test = |value| expect_document(&mut json_token_iter(value).peekable()).unwrap();
assert_eq!(Document::Null, test(b"null"));
assert_eq!(Document::Bool(true), test(b"true"));
assert_eq!(Document::Number(Number::Float(3.2)), test(b"3.2"));
assert_eq!(Document::String("Foo\nBar".into()), test(b"\"Foo\\nBar\""));
assert_eq!(Document::Array(Vec::new()), test(b"[]"));
assert_eq!(Document::Object(HashMap::new()), test(b"{}"));
assert_eq!(
Document::Array(vec![
Document::Number(Number::PosInt(1)),
Document::Bool(false),
Document::String("s".into()),
Document::Array(Vec::new()),
Document::Object(HashMap::new()),
]),
test(b"[1,false,\"s\",[],{}]")
);
assert_eq!(
Document::Object(
vec![
("num".to_string(), Document::Number(Number::PosInt(1))),
("bool".to_string(), Document::Bool(true)),
("string".to_string(), Document::String("s".into())),
(
"array".to_string(),
Document::Array(vec![
Document::Object(
vec![("foo".to_string(), Document::Bool(false))]
.into_iter()
.collect(),
),
Document::Object(
vec![("bar".to_string(), Document::Bool(true))]
.into_iter()
.collect(),
),
])
),
(
"nested".to_string(),
Document::Object(
vec![("test".to_string(), Document::Null),]
.into_iter()
.collect()
)
),
]
.into_iter()
.collect()
),
test(
br#"
{ "num": 1,
"bool": true,
"string": "s",
"array":
[{ "foo": false },
{ "bar": true }],
"nested": { "test": null } }
"#
)
);
}