[
    {
        "description": "positive integer range",
        "schema": {"minimum": 2, "maximum": 4},
        "tests": [
            {
                "description": "integer number clearly in range",
                "data": 3,
                "valid": true
            },
            {
                "description": "integer number just small enough",
                "data": 2,
                "valid": true
            },
            {
                "description": "integer number just large enough",
                "data": 4,
                "valid": true
            },
            {
                "description": "integer number too small",
                "data": 1,
                "valid": false
            },
            {
                "description": "integer number too large",
                "data": 5,
                "valid": false
            },
            {
                "description": "negative integer number too small",
                "data": -1,
                "valid": false
            },
            {
                "description": "floating point number clearly in range",
                "data": 3.0,
                "valid": true
            },
            {
                "description": "floating point number just small enough",
                "data": 2.0,
                "valid": true
            },
            {
                "description": "floating point number just large enough",
                "data": 4.0,
                "valid": true
            },
            {
                "description": "floating point number too small",
                "data": 1.999999,
                "valid": false
            },
            {
                "description": "floating point number too large",
                "data": 4.000001,
                "valid": false
            },
            {
                "description": "negative floating point number too small",
                "data": -0.1,
                "valid": false
            }
        ]
    },
    {
        "description": "positive floating point range",
        "schema": {"minimum": 2.0, "maximum": 4.0},
        "tests": [
            {
                "description": "integer number clearly in range",
                "data": 3,
                "valid": true
            },
            {
                "description": "integer number just small enough",
                "data": 2,
                "valid": true
            },
            {
                "description": "integer number just large enough",
                "data": 3,
                "valid": true
            },
            {
                "description": "integer number too small",
                "data": 1,
                "valid": false
            },
            {
                "description": "integer number too large",
                "data": 5,
                "valid": false
            },
            {
                "description": "negative integer number too small",
                "data": -1,
                "valid": false
            },
            {
                "description": "floating point number clearly in range",
                "data": 3.0,
                "valid": true
            },
            {
                "description": "floating point number just small enough",
                "data": 2.0,
                "valid": true
            },
            {
                "description": "floating point number just large enough",
                "data": 4.0,
                "valid": true
            },
            {
                "description": "floating point number too small",
                "data": 1.999999,
                "valid": false
            },
            {
                "description": "floating point number too large",
                "data": 4.000001,
                "valid": false
            },
            {
                "description": "negative floating point number too large",
                "data": -0.1,
                "valid": false
            }
        ]
    },
    {
        "description": "positive exclusive integer range",
        "schema": {
            "minimum": 2,
            "exclusiveMinimum": true,
            "maximum": 4,
            "exclusiveMaximum": true
        },
        "tests": [
            {
                "description": "integer number clearly in range",
                "data": 3,
                "valid": true
            },
            {
                "description": "integer number exact limit too small",
                "data": 2,
                "valid": false
            },
            {
                "description": "integer number exact limit too large",
                "data": 4,
                "valid": false
            },
            {
                "description": "integer number too small",
                "data": 1,
                "valid": false
            },
            {
                "description": "integer number too large",
                "data": 5,
                "valid": false
            },
            {
                "description": "negative integer number too small",
                "data": -1,
                "valid": false
            },
            {
                "description": "floating point number clearly in range",
                "data": 3.0,
                "valid": true
            },
            {
                "description": "floating point number exact limit too small",
                "data": 2.0,
                "valid": false
            },
            {
                "description": "floating point number exact limit too large",
                "data": 4.0,
                "valid": false
            },
            {
                "description": "floating point number too small",
                "data": 1.999999,
                "valid": false
            },
            {
                "description": "floating point number too large",
                "data": 4.000001,
                "valid": false
            },
            {
                "description": "negative floating point number too small",
                "data": -0.1,
                "valid": false
            }
        ]
    },
    {
        "description": "positive exclusive floating point range",
        "schema": {
            "minimum": 2.0,
            "exclusiveMinimum": true,
            "maximum": 4.0,
            "exclusiveMaximum": true
        },
        "tests": [
            {
                "description": "integer number clearly in range",
                "data": 3,
                "valid": true
            },
            {
                "description": "integer number exact limit too small",
                "data": 2,
                "valid": false
            },
            {
                "description": "integer number exact limit too large",
                "data": 4,
                "valid": false
            },
            {
                "description": "integer number too small",
                "data": 1,
                "valid": false
            },
            {
                "description": "integer number too large",
                "data": 5,
                "valid": false
            },
            {
                "description": "negative integer number too small",
                "data": -1,
                "valid": false
            },
            {
                "description": "floating point number clearly in range",
                "data": 3.0,
                "valid": true
            },
            {
                "description": "floating point number exact limit too small",
                "data": 2.0,
                "valid": false
            },
            {
                "description": "floating point number exact limit too large",
                "data": 4.0,
                "valid": false
            },
            {
                "description": "floating point number too small",
                "data": 1.999999,
                "valid": false
            },
            {
                "description": "floating point number too large",
                "data": 4.000001,
                "valid": false
            },
            {
                "description": "negative floating point number too small",
                "data": -0.1,
                "valid": false
            }
        ]
    },
    {
        "description": "negative integer range",
        "schema": {"minimum": -4, "maximum": -2},
        "tests": [
            {
                "description": "integer number clearly in range",
                "data": -3,
                "valid": true
            },
            {
                "description": "integer number just small enough",
                "data": -4,
                "valid": true
            },
            {
                "description": "integer number just large enough",
                "data": -2,
                "valid": true
            },
            {
                "description": "integer number too small",
                "data": -5,
                "valid": false
            },
            {
                "description": "integer number too large",
                "data": -1,
                "valid": false
            },
            {
                "description": "positive integer number too large",
                "data": 0,
                "valid": false
            },
            {
                "description": "floating point number clearly in range",
                "data": -3.0,
                "valid": true
            },
            {
                "description": "floating point number just small enough",
                "data": -4.0,
                "valid": true
            },
            {
                "description": "floating point number just large enough",
                "data": -2.0,
                "valid": true
            },
            {
                "description": "floating point number too small",
                "data": -4.000001,
                "valid": false
            },
            {
                "description": "floating point number too large",
                "data": -1.999999,
                "valid": false
            },
            {
                "description": "positive floating point number too large",
                "data": 0.0,
                "valid": false
            }
        ]
    },
    {
        "description": "negative floating point range",
        "schema": {"minimum": -4.0, "maximum": -2.0},
        "tests": [
            {
                "description": "integer number clearly in range",
                "data": -3,
                "valid": true
            },
            {
                "description": "integer number just small enough",
                "data": -4,
                "valid": true
            },
            {
                "description": "integer number just large enough",
                "data": -2,
                "valid": true
            },
            {
                "description": "integer number too small",
                "data": -5,
                "valid": false
            },
            {
                "description": "integer number too large",
                "data": -1,
                "valid": false
            },
            {
                "description": "positive integer number too large",
                "data": 0,
                "valid": false
            },
            {
                "description": "floating point number clearly in range",
                "data": -3.0,
                "valid": true
            },
            {
                "description": "floating point number just small enough",
                "data": -4.0,
                "valid": true
            },
            {
                "description": "floating point number just large enough",
                "data": -2.0,
                "valid": true
            },
            {
                "description": "floating point number too small",
                "data": -4.000001,
                "valid": false
            },
            {
                "description": "floating point number too large",
                "data": -1.999999,
                "valid": false
            },
            {
                "description": "positive floating point number too large",
                "data": 0.0,
                "valid": false
            }
        ]
    },
    {
        "description": "negative exclusive integer range",
        "schema": {
            "minimum": -4,
            "exclusiveMinimum": true,
            "maximum": -2,
            "exclusiveMaximum": true
        },
        "tests": [
            {
                "description": "integer number clearly in range",
                "data": -3,
                "valid": true
            },
            {
                "description": "integer number exact limit too small",
                "data": -4,
                "valid": false
            },
            {
                "description": "integer number exact limit too large",
                "data": -2,
                "valid": false
            },
            {
                "description": "integer number too small",
                "data": -5,
                "valid": false
            },
            {
                "description": "integer number too large",
                "data": -1,
                "valid": false
            },
            {
                "description": "positive integer number too large",
                "data": 0,
                "valid": false
            },
            {
                "description": "floating point number clearly in range",
                "data": -3.0,
                "valid": true
            },
            {
                "description": "floating point number exact limit too small",
                "data": -4.0,
                "valid": false
            },
            {
                "description": "floating point number exact limit too large",
                "data": -2.0,
                "valid": false
            },
            {
                "description": "floating point number too small",
                "data": -4.000001,
                "valid": false
            },
            {
                "description": "floating point number too large",
                "data": -1.999999,
                "valid": false
            },
            {
                "description": "positive floating point number too large",
                "data": 0.0,
                "valid": false
            }
        ]
    },
    {
        "description": "negative exclusive floating point range",
        "schema": {
            "minimum": -4.0,
            "exclusiveMinimum": true,
            "maximum": -2.0,
            "exclusiveMaximum": true
        },
        "tests": [
            {
                "description": "integer number clearly in range",
                "data": -3,
                "valid": true
            },
            {
                "description": "integer number exact limit too small",
                "data": -4,
                "valid": false
            },
            {
                "description": "integer number exact limit too large",
                "data": -2,
                "valid": false
            },
            {
                "description": "integer number too small",
                "data": -5,
                "valid": false
            },
            {
                "description": "integer number too large",
                "data": -1,
                "valid": false
            },
            {
                "description": "positive integer number too large",
                "data": 0,
                "valid": false
            },
            {
                "description": "floating point number clearly in range",
                "data": -3.0,
                "valid": true
            },
            {
                "description": "floating point number exact limit too small",
                "data": -4.0,
                "valid": false
            },
            {
                "description": "floating point number exact limit too large",
                "data": -2.0,
                "valid": false
            },
            {
                "description": "floating point number too small",
                "data": -4.000001,
                "valid": false
            },
            {
                "description": "floating point number too large",
                "data": -1.999999,
                "valid": false
            },
            {
                "description": "positive floating point number too large",
                "data": 0.0,
                "valid": false
            }
        ]
    },
    {
        "description": "multipleOf 3",
        "schema": {"multipleOf": 3},
        "tests": [
            {
                "description": "0 is multiple of 3",
                "data": 0,
                "valid": true
            },
            {
                "description": "3 is multiple of 3",
                "data": 3,
                "valid": true
            },
            {
                "description": "33 is multiple of 3",
                "data": 33,
                "valid": true
            },
            {
                "description": "-3 is multiple of 3",
                "data": -3,
                "valid": true
            },
            {
                "description": "1 is not a multiple of 3",
                "data": 1,
                "valid": false
            },
            {
                "description": "-1 is not a multiple of 3",
                "data": -1,
                "valid": false
            },
            {
                "description": "0.0 is multiple of 3",
                "data": 0.0,
                "valid": true
            },
            {
                "description": "3.0 is multiple of 3",
                "data": 3.0,
                "valid": true
            },
            {
                "description": "33.0 is multiple of 3",
                "data": 33.0,
                "valid": true
            },
            {
                "description": "-3 is multiple of 3",
                "data": -3.0,
                "valid": true
            },
            {
                "description": "1.0 is not a multiple of 3",
                "data": 1.0,
                "valid": false
            },
            {
                "description": "-1.0 is not a multiple of 3",
                "data": -1.0,
                "valid": false
            }
        ]
    },
    {
        "description": "multipleOf 3.0",
        "schema": {"multipleOf": 3.0},
        "tests": [
            {
                "description": "0 is multiple of 3.0",
                "data": 0,
                "valid": true
            },
            {
                "description": "3 is multiple of 3.0",
                "data": 3,
                "valid": true
            },
            {
                "description": "33 is multiple of 3.0",
                "data": 33,
                "valid": true
            },
            {
                "description": "-3 is multiple of 3.0",
                "data": -3,
                "valid": true
            },
            {
                "description": "1 is not a multiple of 3.0",
                "data": 1,
                "valid": false
            },
            {
                "description": "-1 is not a multiple of 3.0",
                "data": -1,
                "valid": false
            },
            {
                "description": "0.0 is multiple of 3.0",
                "data": 0.0,
                "valid": true
            },
            {
                "description": "3.0 is multiple of 3.0",
                "data": 3.0,
                "valid": true
            },
            {
                "description": "33.0 is multiple of 3.0",
                "data": 33.0,
                "valid": true
            },
            {
                "description": "-3 is multiple of 3.0",
                "data": -3.0,
                "valid": true
            },
            {
                "description": "1.0 is not a multiple of 3.0",
                "data": 1.0,
                "valid": false
            },
            {
                "description": "-1.0 is not a multiple of 3.0",
                "data": -1.0,
                "valid": false
            }
        ]
    }
]
