[
    {
        "description": "allOf with false unevaluatedProperties",
        "schema": {
            "$schema": "https://json-schema.org/draft/2019-09/schema",
            "unevaluatedProperties": false,
            "allOf": [
                {
                    "properties": {
                        "foo": { "type": ["string", "null"] },
                        "bar": { "type": ["string", "null"] }
                    }
                },
                {
                    "additionalProperties": {
                        "not": { "enum": [ null ] }
                    }
                }
            ]
        },
        "tests": [
            {
                "description": "string props valid",
                "data": { "bar": "foo", "bob": "who?" },
                "valid": true
            },
            {
                "description": "null prop is invalid",
                "data": { "bar": "foo", "bob": null },
                "valid": false
            },
            {
              "description": "named property with wrong type is invalid",
              "data": { "bar": "foo", "bob": "who?" },
              "valid": true
            }
        ]
    },
    {
        "description": "complex unevaluated schema",
        "schema": {
            "$schema": "https://json-schema.org/draft/2019-09/schema",
            "unevaluatedProperties": {
                "allOf": [{"minLength": 3}, {"type":  "string"}]
            },
            "if": {
                "properties":  {
                    "foo": {"type": "integer"},
                    "arr": {"type": "array"}
                },
                "required": ["foo"]
            }
        },
        "tests": [
            {
                "description": "empty object",
                "data": {},
                "valid": true
            },
            {
                "description": "if passes",
                "data": {"foo": 3, "arr": [1,2]},
                "valid": true
            },
            {
                "description": "if passes with valid uneval",
                "data": {"foo": 3, "arr": [1,2], "uneval": "long-string"},
                "valid": true
            },
            {
                "description": "if passes with invalid short uneval",
                "data": {"foo": 3, "arr": [1,2], "uneval": "zz"},
                "valid": false
            },
            {
                "description": "if fails, and uneval fails because of array",
                "data": {"foo": "not-an-int", "arr": [1,2], "uneval": "long-string"},
                "valid": false
            },
            {
                "description": "if fails with valid uneval",
                "data": {"foo": "not-an-int", "uneval": "long-string"},
                "valid": true
            },
            {
                "description": "if fails with invalid uneval",
                "data": {"foo": "zz", "uneval": "long-string"},
                "valid": false
            }
        ]
    }
]