messy_json 0.2.2

JSON Parser for dynamically structured documents
Documentation
use super::*;

#[test]
fn null() {
    let nested_string = MessyJson::from(MessyJsonInner::String(MessyJsonScalar::new(true)));
    let schema = MessyJsonObject::from(MessyJsonObjectInner::new(
        vec![(gen_key("hello"), nested_string)]
            .into_iter()
            .collect(),
        false,
    ));
    let value = r#"
	{
		"hello": null
	}
	"#;

    let mut deserializer = serde_json::Deserializer::from_str(value);
    let parsed = schema
        .builder(MessyJsonSettings::default())
        .deserialize(&mut deserializer)
        .unwrap();
    match parsed.inner() {
        MessyJsonValue::Obj(x) => assert_eq!(
            matches!(x.get("hello").unwrap(), MessyJsonValue::Null(x, _y) if matches!(x, MessyJsonNullType::Null)),
            true
        ),
        _ => panic!(),
    }
}

#[test]
fn absent() {
    let nested_string = MessyJson::from(MessyJsonInner::String(MessyJsonScalar::new(true)));
    let schema = MessyJsonObject::from(MessyJsonObjectInner::new(
        vec![(gen_key("hello"), nested_string)]
            .into_iter()
            .collect(),
        false,
    ));
    let value = r#"
	{
	}
	"#;

    let mut deserializer = serde_json::Deserializer::from_str(value);
    let parsed = schema
        .builder(MessyJsonSettings::default())
        .deserialize(&mut deserializer)
        .unwrap();
    match parsed.inner() {
        MessyJsonValue::Obj(x) => assert_eq!(
            matches!(x.get("hello").unwrap(), MessyJsonValue::Null(x, _y) if matches!(x, MessyJsonNullType::Absent)),
            true
        ),
        _ => panic!(),
    }
}