eserde 0.1.7

Like `serde`, but it doesn't stop at the first deserialization error
Documentation
use eserde_test_helper::assert_from_json_inline;
use eserde_test_helper::contract::*;
use eserde_test_helper::test_helper::TestHelper;

#[test]
fn struct_deny_unknown_fields() {
    let test = TestHelper::<StructDenyUnknownFields>::new_serialized(
        r#"{"DEFAULT":true,"SKIP-SERIALIZING-IF":true,"renamed":false,"OPTION":false}"#,
    );
    assert_from_json_inline!(test, @r#"
    Err(
        DeserializationErrors(
            [
                DeserializationError {
                    path: Some(
                        Path {
                            segments: [],
                        },
                    ),
                    details: "missing field `write_only`",
                },
            ],
        ),
    )
    "#);
}

#[test]
fn struct_allow_unknown_fields() {
    let test = TestHelper::<StructAllowUnknownFields>::new_serialized(
        r#"{"DEFAULT":false,"renamed":false,"OPTION":null}"#,
    );
    assert_from_json_inline!(test, @r#"
    Err(
        DeserializationErrors(
            [
                DeserializationError {
                    path: Some(
                        Path {
                            segments: [],
                        },
                    ),
                    details: "missing field `write_only`",
                },
                DeserializationError {
                    path: Some(
                        Path {
                            segments: [],
                        },
                    ),
                    details: "missing field `skip_serializing_if`",
                },
            ],
        ),
    )
    "#);
}

#[test]
fn tuple_struct() {
    let test =
        TestHelper::<TupleStruct>::new_serialized(r#"["XVUgTUKTJ7J8r","yZwcp1Ge","nf9hN3"]"#);
    assert_from_json_inline!(test, @r#"
    Ok(
        TupleStruct(
            "XVUgTUKTJ7J8r",
            false,
            "yZwcp1Ge",
            "nf9hN3",
        ),
    )
    "#);
}

#[test]
fn externally_tagged_enum() {
    let test = TestHelper::<ExternalEnum>::new_serialized(r#""renamed_unit""#);
    assert_from_json_inline!(test, @r"
    Ok(
        RenamedUnit,
    )
    ");
}

#[test]
fn internally_tagged_enum() {
    let test = TestHelper::<InternalEnum>::new_serialized(r#"{"tag":"renamed_unit"}"#);
    assert_from_json_inline!(test, @r"
    Ok(
        RenamedUnit,
    )
    ");
}

#[test]
fn adjacently_tagged_enum() {
    let test = TestHelper::<AdjacentEnum>::new_serialized(r#"{"tag":"renamed_unit"}"#);
    assert_from_json_inline!(test, @r"
    Ok(
        RenamedUnit,
    )
    ");
}