1268896Sbapt[ 2268896Sbapt { 3268896Sbapt "description": 4268896Sbapt "patternProperties validates properties matching a regex", 5268896Sbapt "schema": { 6268896Sbapt "patternProperties": { 7268896Sbapt "f.*o": {"type": "integer"} 8268896Sbapt } 9268896Sbapt }, 10268896Sbapt "tests": [ 11268896Sbapt { 12268896Sbapt "description": "a single valid match is valid", 13268896Sbapt "data": {"foo": 1}, 14268896Sbapt "valid": true 15268896Sbapt }, 16268896Sbapt { 17268896Sbapt "description": "multiple valid matches is valid", 18268896Sbapt "data": {"foo": 1, "foooooo" : 2}, 19268896Sbapt "valid": true 20268896Sbapt }, 21268896Sbapt { 22268896Sbapt "description": "a single invalid match is invalid", 23268896Sbapt "data": {"foo": "bar", "fooooo": 2}, 24268896Sbapt "valid": false 25268896Sbapt }, 26268896Sbapt { 27268896Sbapt "description": "multiple invalid matches is invalid", 28268896Sbapt "data": {"foo": "bar", "foooooo" : "baz"}, 29268896Sbapt "valid": false 30268896Sbapt }, 31268896Sbapt { 32268896Sbapt "description": "ignores non-objects", 33268896Sbapt "data": 12, 34268896Sbapt "valid": true 35268896Sbapt } 36268896Sbapt ] 37268896Sbapt }, 38268896Sbapt { 39268896Sbapt "description": "multiple simultaneous patternProperties are validated", 40268896Sbapt "schema": { 41268896Sbapt "patternProperties": { 42268896Sbapt "a*": {"type": "integer"}, 43268896Sbapt "aaa*": {"maximum": 20} 44268896Sbapt } 45268896Sbapt }, 46268896Sbapt "tests": [ 47268896Sbapt { 48268896Sbapt "description": "a single valid match is valid", 49268896Sbapt "data": {"a": 21}, 50268896Sbapt "valid": true 51268896Sbapt }, 52268896Sbapt { 53268896Sbapt "description": "a simultaneous match is valid", 54268896Sbapt "data": {"aaaa": 18}, 55268896Sbapt "valid": true 56268896Sbapt }, 57268896Sbapt { 58268896Sbapt "description": "multiple matches is valid", 59268896Sbapt "data": {"a": 21, "aaaa": 18}, 60268896Sbapt "valid": true 61268896Sbapt }, 62268896Sbapt { 63268896Sbapt "description": "an invalid due to one is invalid", 64268896Sbapt "data": {"a": "bar"}, 65268896Sbapt "valid": false 66268896Sbapt }, 67268896Sbapt { 68268896Sbapt "description": "an invalid due to the other is invalid", 69268896Sbapt "data": {"aaaa": 31}, 70268896Sbapt "valid": false 71268896Sbapt }, 72268896Sbapt { 73268896Sbapt "description": "an invalid due to both is invalid", 74268896Sbapt "data": {"aaa": "foo", "aaaa": 31}, 75268896Sbapt "valid": false 76268896Sbapt } 77268896Sbapt ] 78268896Sbapt }, 79268896Sbapt { 80268896Sbapt "description": "regexes are not anchored by default and are case sensitive", 81268896Sbapt "schema": { 82268896Sbapt "patternProperties": { 83268896Sbapt "[0-9]{2,}": { "type": "boolean" }, 84268896Sbapt "X_": { "type": "string" } 85268896Sbapt } 86268896Sbapt }, 87268896Sbapt "tests": [ 88268896Sbapt { 89268896Sbapt "description": "non recognized members are ignored", 90268896Sbapt "data": { "answer 1": "42" }, 91268896Sbapt "valid": true 92268896Sbapt }, 93268896Sbapt { 94268896Sbapt "description": "recognized members are accounted for", 95268896Sbapt "data": { "a31b": null }, 96268896Sbapt "valid": false 97268896Sbapt }, 98268896Sbapt { 99268896Sbapt "description": "regexes are case sensitive", 100268896Sbapt "data": { "a_x_3": 3 }, 101268896Sbapt "valid": true 102268896Sbapt }, 103268896Sbapt { 104268896Sbapt "description": "regexes are case sensitive, 2", 105268896Sbapt "data": { "a_X_3": 3 }, 106268896Sbapt "valid": false 107268896Sbapt } 108268896Sbapt ] 109268896Sbapt } 110268896Sbapt] 111