[

{
    "description": "allOf",
    "schema": {
        "allOf": [
            {
                "properties": {
                    "bar": {"type": "integer"}
                },
                "required": ["bar"]
            },
            {
                "properties": {
                    "foo": {"type": "string"}
                },
                "required": ["foo"]
            }
        ]
    },
    "tests": [
        {
            "description": "allOf",
            "data": {"foo": "baz", "bar": 2},
            "valid": true
        },
        {
            "description": "mismatch second",
            "data": {"foo": "baz"},
            "valid": false
        },
        {
            "description": "mismatch first",
            "data": {"bar": 2},
            "valid": false
        },
        {
            "description": "wrong type",
            "data": {"foo": "baz", "bar": "quux"},
            "valid": false
        }
    ]
},
{
    "description": "allOf with base schema",
    "schema": {
        "properties": {"bar": {"type": "integer"}},
        "required": ["bar"],
        "allOf" : [
            {
                "properties": {
                    "foo": {"type": "string"}
                },
                "required": ["foo"]
            },
            {
                "properties": {
                    "baz": {"type": "null"}
                },
                "required": ["baz"]
            }
        ]
    },
    "tests": [
        {
            "description": "valid",
            "data": {"foo": "quux", "bar": 2, "baz": null},
            "valid": true
        },
        {
            "description": "mismatch base schema",
            "data": {"foo": "quux", "baz": null},
            "valid": false
        },
        {
            "description": "mismatch first allOf",
            "data": {"bar": 2, "baz": null},
            "valid": false
        },
        {
            "description": "mismatch second allOf",
            "data": {"foo": "quux", "bar": 2},
            "valid": false
        },
        {
            "description": "mismatch both",
            "data": {"bar": 2},
            "valid": false
        }
    ]
},
{
    "description": "allOf simple types",
    "schema": {
        "allOf": [
            {"maximum": 30},
            {"minimum": 20}
        ]
    },
    "tests": [
        {
            "description": "valid",
            "data": 25,
            "valid": true
        },
        {
            "description": "mismatch one",
            "data": 35,
            "valid": false
        }
    ]
}

]