[
    {
        "description": "past and future keywords are ignored",
        "schema": {
            "id": "#bad_syntax!for anchor~",
            "dependentSchemas": {
                "alpha": false
            },
            "dependentRequired": {
                "beta": [ "zeta" ]
            },
            "prefixItems": [
                true,
                false
            ],
            "type": "number"
        },
        "tests": [
            {
                "description": "passing",
                "data": 1,
                "valid": true
            },
            {
                "description": "failing (string)",
                "data": "foo",
                "valid": false
            },
            {
                "description": "failing (object)",
                "data": { "alpha": 1, "beta": 2 },
                "valid": false
            },
            {
                "description": "failing (array)",
                "data": [ 1, 2 ],
                "valid": false
            }
        ]
    },
    {
        "description": "$recursiveRef without $recursiveAnchor works like $ref",
        "schema": {
            "properties": {
                "foo": {"$recursiveRef": "#"}
            },
            "additionalProperties": false
        },
        "tests": [
            {
                "description": "match",
                "data": {"foo": false},
                "valid": true
            },
            {
                "description": "recursive match",
                "data": {"foo": {"foo": false}},
                "valid": true
            },
            {
                "description": "mismatch",
                "data": {"bar": false},
                "valid": false
            },
            {
                "description": "recursive mismatch (but $dynamicRef is ignored)",
                "data": {"foo": {"bar": false}},
                "valid": true
            }
        ]
    }
]