[

{
    "description": "not",
    "schema": {
        "not": {"type": "integer"}
    },
    "tests": [
        {
            "description": "allowed",
            "data": "foo",
            "valid": true
        },
        {
            "description": "disallowed",
            "data": 1,
            "valid": false
        }
    ]
},
{
    "description": "not multiple types",
    "schema": {
        "not": {"type": ["integer", "boolean"]}
    },
    "tests": [
        {
            "description": "valid",
            "data": "foo",
            "valid": true
        },
        {
            "description": "mismatch",
            "data": 1,
            "valid": false
        },
        {
            "description": "other mismatch",
            "data": true,
            "valid": false
        }
    ]
},
{
    "description": "not more complex schema",
    "schema": {
        "not": {
            "type": "object",
            "properties": {
                "foo": {
                    "type": "string"
                }
            }
         }
    },
    "tests": [
        {
            "description": "match",
            "data": 1,
            "valid": true
        },
        {
            "description": "other match",
            "data": {"foo": 1},
            "valid": true
        },
        {
            "description": "mismatch",
            "data": {"foo": "bar"},
            "valid": false
        }
    ]
},
{
    "description": "forbidden property",
    "schema": {
        "properties": {
            "foo": { 
                "not": {}
            }
        }
    },
    "tests": [
        {
            "description": "property present",
            "data": {"foo": 1, "bar": 2},
            "valid": false
        },
        {
            "description": "property absent",
            "data": {"bar": 1, "baz": 2},
            "valid": true
        }
    ]
}

]