| [ |
| { |
| "description": |
| "patternProperties validates properties matching a regex", |
| "schema": { |
| "patternProperties": { |
| "f.*o": {"type": "integer"} |
| } |
| }, |
| "tests": [ |
| { |
| "description": "a single valid match is valid", |
| "data": {"foo": 1}, |
| "valid": true |
| }, |
| { |
| "description": "multiple valid matches is valid", |
| "data": {"foo": 1, "foooooo" : 2}, |
| "valid": true |
| }, |
| { |
| "description": "a single invalid match is invalid", |
| "data": {"foo": "bar", "fooooo": 2}, |
| "valid": false |
| }, |
| { |
| "description": "multiple invalid matches is invalid", |
| "data": {"foo": "bar", "foooooo" : "baz"}, |
| "valid": false |
| }, |
| { |
| "description": "ignores non-objects", |
| "data": 12, |
| "valid": true |
| } |
| ] |
| }, |
| { |
| "description": "multiple simultaneous patternProperties are validated", |
| "schema": { |
| "patternProperties": { |
| "a*": {"type": "integer"}, |
| "aaa*": {"maximum": 20} |
| } |
| }, |
| "tests": [ |
| { |
| "description": "a single valid match is valid", |
| "data": {"a": 21}, |
| "valid": true |
| }, |
| { |
| "description": "a simultaneous match is valid", |
| "data": {"aaaa": 18}, |
| "valid": true |
| }, |
| { |
| "description": "multiple matches is valid", |
| "data": {"a": 21, "aaaa": 18}, |
| "valid": true |
| }, |
| { |
| "description": "an invalid due to one is invalid", |
| "data": {"a": "bar"}, |
| "valid": false |
| }, |
| { |
| "description": "an invalid due to the other is invalid", |
| "data": {"aaaa": 31}, |
| "valid": false |
| }, |
| { |
| "description": "an invalid due to both is invalid", |
| "data": {"aaa": "foo", "aaaa": 31}, |
| "valid": false |
| } |
| ] |
| }, |
| { |
| "description": "regexes are not anchored by default and are case sensitive", |
| "schema": { |
| "patternProperties": { |
| "[0-9]{2,}": { "type": "boolean" }, |
| "X_": { "type": "string" } |
| } |
| }, |
| "tests": [ |
| { |
| "description": "non recognized members are ignored", |
| "data": { "answer 1": "42" }, |
| "valid": true |
| }, |
| { |
| "description": "recognized members are accounted for", |
| "data": { "a31b": null }, |
| "valid": false |
| }, |
| { |
| "description": "regexes are case sensitive", |
| "data": { "a_x_3": 3 }, |
| "valid": true |
| }, |
| { |
| "description": "regexes are case sensitive, 2", |
| "data": { "a_X_3": 3 }, |
| "valid": false |
| } |
| ] |
| } |
| ] |