[ { "description": "items with boolean schema (false)", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "items": false }, "tests": [ { "description": "any non-empty array is invalid", "data": [ 1, "foo", true ], "valid": false }, { "description": "empty array is valid", "data": [], "valid": true } ] }, { "description": "items and subitems", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "item": { "type": "array", "items": false, "prefixItems": [ { "$ref": "#/$defs/sub-item" }, { "$ref": "#/$defs/sub-item" } ] }, "sub-item": { "type": "object", "required": [ "foo" ] } }, "type": "array", "items": false, "prefixItems": [ { "$ref": "#/$defs/item" }, { "$ref": "#/$defs/item" }, { "$ref": "#/$defs/item" } ] }, "tests": [ { "description": "valid items", "data": [ [ { "foo": null }, { "foo": null } ], [ { "foo": null }, { "foo": null } ], [ { "foo": null }, { "foo": null } ] ], "valid": true }, { "description": "too many items", "data": [ [ { "foo": null }, { "foo": null } ], [ { "foo": null }, { "foo": null } ], [ { "foo": null }, { "foo": null } ], [ { "foo": null }, { "foo": null } ] ], "valid": false }, { "description": "too many sub-items", "data": [ [ { "foo": null }, { "foo": null }, { "foo": null } ], [ { "foo": null }, { "foo": null } ], [ { "foo": null }, { "foo": null } ] ], "valid": false }, { "description": "wrong item", "data": [ { "foo": null }, [ { "foo": null }, { "foo": null } ], [ { "foo": null }, { "foo": null } ] ], "valid": false }, { "description": "wrong sub-item", "data": [ [ {}, { "foo": null } ], [ { "foo": null }, { "foo": null } ], [ { "foo": null }, { "foo": null } ] ], "valid": false }, { "description": "fewer items is valid", "data": [ [ { "foo": null } ], [ { "foo": null } ] ], "valid": true } ] }, { "description": "items does not look in applicators, valid case", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "allOf": [ { "prefixItems": [ { "minimum": 3 } ] } ], "items": { "minimum": 5 } }, "tests": [ { "description": "prefixItems in allOf does not constrain items, invalid case", "data": [ 3, 5 ], "valid": false }, { "description": "prefixItems in allOf does not constrain items, valid case", "data": [ 5, 5 ], "valid": true } ] }, { "description": "items with heterogeneous array", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "prefixItems": [ {} ], "items": false }, "tests": [ { "description": "heterogeneous invalid instance", "data": [ "foo", "bar", 37 ], "valid": false }, { "description": "valid instance", "data": [ null ], "valid": true } ] }, { "description": "items with null instance elements", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "items": { "type": "null" } }, "tests": [ { "description": "allows null elements", "data": [ null ], "valid": true } ] } ]