[ { "description": "maxProperties validation", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxProperties": 2, "extensible": true }, "tests": [ { "description": "shorter is valid", "data": { "foo": 1 }, "valid": true }, { "description": "exact length is valid", "data": { "foo": 1, "bar": 2 }, "valid": true }, { "description": "too long is invalid", "data": { "foo": 1, "bar": 2, "baz": 3 }, "valid": false }, { "description": "ignores arrays", "data": [ 1, 2, 3 ], "valid": true }, { "description": "ignores strings", "data": "foobar", "valid": true }, { "description": "ignores other non-objects", "data": 12, "valid": true } ] }, { "description": "maxProperties validation with a decimal", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxProperties": 2.0, "extensible": true }, "tests": [ { "description": "shorter is valid", "data": { "foo": 1 }, "valid": true }, { "description": "too long is invalid", "data": { "foo": 1, "bar": 2, "baz": 3 }, "valid": false } ] }, { "description": "maxProperties = 0 means the object is empty", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxProperties": 0, "extensible": true }, "tests": [ { "description": "no properties is valid", "data": {}, "valid": true }, { "description": "one property is invalid", "data": { "foo": 1 }, "valid": false } ] }, { "description": "extensible: true allows extra properties in maxProperties (though maxProperties still counts them!)", "schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "maxProperties": 2, "extensible": true }, "tests": [ { "description": "extra property is counted towards maxProperties", "data": { "foo": 1, "bar": 2, "baz": 3 }, "valid": false }, { "description": "extra property is valid if below maxProperties", "data": { "foo": 1 }, "valid": true } ] } ]