197bd480fSBaptiste Daroussin[ 297bd480fSBaptiste Daroussin { 397bd480fSBaptiste Daroussin "description": 497bd480fSBaptiste Daroussin "patternProperties validates properties matching a regex", 597bd480fSBaptiste Daroussin "schema": { 697bd480fSBaptiste Daroussin "patternProperties": { 797bd480fSBaptiste Daroussin "f.*o": {"type": "integer"} 897bd480fSBaptiste Daroussin } 997bd480fSBaptiste Daroussin }, 1097bd480fSBaptiste Daroussin "tests": [ 1197bd480fSBaptiste Daroussin { 1297bd480fSBaptiste Daroussin "description": "a single valid match is valid", 1397bd480fSBaptiste Daroussin "data": {"foo": 1}, 1497bd480fSBaptiste Daroussin "valid": true 1597bd480fSBaptiste Daroussin }, 1697bd480fSBaptiste Daroussin { 1797bd480fSBaptiste Daroussin "description": "multiple valid matches is valid", 1897bd480fSBaptiste Daroussin "data": {"foo": 1, "foooooo" : 2}, 1997bd480fSBaptiste Daroussin "valid": true 2097bd480fSBaptiste Daroussin }, 2197bd480fSBaptiste Daroussin { 2297bd480fSBaptiste Daroussin "description": "a single invalid match is invalid", 2397bd480fSBaptiste Daroussin "data": {"foo": "bar", "fooooo": 2}, 2497bd480fSBaptiste Daroussin "valid": false 2597bd480fSBaptiste Daroussin }, 2697bd480fSBaptiste Daroussin { 27*273c26a3SBaptiste Daroussin "description": "a single invalid match is invalid", 28*273c26a3SBaptiste Daroussin "data": {"fooooo": 2, "foo": "bar"}, 29*273c26a3SBaptiste Daroussin "valid": false 30*273c26a3SBaptiste Daroussin }, 31*273c26a3SBaptiste Daroussin { 3297bd480fSBaptiste Daroussin "description": "multiple invalid matches is invalid", 3397bd480fSBaptiste Daroussin "data": {"foo": "bar", "foooooo" : "baz"}, 3497bd480fSBaptiste Daroussin "valid": false 3597bd480fSBaptiste Daroussin }, 3697bd480fSBaptiste Daroussin { 3797bd480fSBaptiste Daroussin "description": "ignores non-objects", 3897bd480fSBaptiste Daroussin "data": 12, 3997bd480fSBaptiste Daroussin "valid": true 4097bd480fSBaptiste Daroussin } 4197bd480fSBaptiste Daroussin ] 4297bd480fSBaptiste Daroussin }, 4397bd480fSBaptiste Daroussin { 4497bd480fSBaptiste Daroussin "description": "multiple simultaneous patternProperties are validated", 4597bd480fSBaptiste Daroussin "schema": { 4697bd480fSBaptiste Daroussin "patternProperties": { 4797bd480fSBaptiste Daroussin "a*": {"type": "integer"}, 4897bd480fSBaptiste Daroussin "aaa*": {"maximum": 20} 4997bd480fSBaptiste Daroussin } 5097bd480fSBaptiste Daroussin }, 5197bd480fSBaptiste Daroussin "tests": [ 5297bd480fSBaptiste Daroussin { 5397bd480fSBaptiste Daroussin "description": "a single valid match is valid", 5497bd480fSBaptiste Daroussin "data": {"a": 21}, 5597bd480fSBaptiste Daroussin "valid": true 5697bd480fSBaptiste Daroussin }, 5797bd480fSBaptiste Daroussin { 5897bd480fSBaptiste Daroussin "description": "a simultaneous match is valid", 5997bd480fSBaptiste Daroussin "data": {"aaaa": 18}, 6097bd480fSBaptiste Daroussin "valid": true 6197bd480fSBaptiste Daroussin }, 6297bd480fSBaptiste Daroussin { 6397bd480fSBaptiste Daroussin "description": "multiple matches is valid", 6497bd480fSBaptiste Daroussin "data": {"a": 21, "aaaa": 18}, 6597bd480fSBaptiste Daroussin "valid": true 6697bd480fSBaptiste Daroussin }, 6797bd480fSBaptiste Daroussin { 6897bd480fSBaptiste Daroussin "description": "an invalid due to one is invalid", 6997bd480fSBaptiste Daroussin "data": {"a": "bar"}, 7097bd480fSBaptiste Daroussin "valid": false 7197bd480fSBaptiste Daroussin }, 7297bd480fSBaptiste Daroussin { 7397bd480fSBaptiste Daroussin "description": "an invalid due to the other is invalid", 7497bd480fSBaptiste Daroussin "data": {"aaaa": 31}, 7597bd480fSBaptiste Daroussin "valid": false 7697bd480fSBaptiste Daroussin }, 7797bd480fSBaptiste Daroussin { 7897bd480fSBaptiste Daroussin "description": "an invalid due to both is invalid", 7997bd480fSBaptiste Daroussin "data": {"aaa": "foo", "aaaa": 31}, 8097bd480fSBaptiste Daroussin "valid": false 8197bd480fSBaptiste Daroussin } 8297bd480fSBaptiste Daroussin ] 8397bd480fSBaptiste Daroussin }, 8497bd480fSBaptiste Daroussin { 8597bd480fSBaptiste Daroussin "description": "regexes are not anchored by default and are case sensitive", 8697bd480fSBaptiste Daroussin "schema": { 8797bd480fSBaptiste Daroussin "patternProperties": { 8897bd480fSBaptiste Daroussin "[0-9]{2,}": { "type": "boolean" }, 8997bd480fSBaptiste Daroussin "X_": { "type": "string" } 9097bd480fSBaptiste Daroussin } 9197bd480fSBaptiste Daroussin }, 9297bd480fSBaptiste Daroussin "tests": [ 9397bd480fSBaptiste Daroussin { 9497bd480fSBaptiste Daroussin "description": "non recognized members are ignored", 9597bd480fSBaptiste Daroussin "data": { "answer 1": "42" }, 9697bd480fSBaptiste Daroussin "valid": true 9797bd480fSBaptiste Daroussin }, 9897bd480fSBaptiste Daroussin { 9997bd480fSBaptiste Daroussin "description": "recognized members are accounted for", 10097bd480fSBaptiste Daroussin "data": { "a31b": null }, 10197bd480fSBaptiste Daroussin "valid": false 10297bd480fSBaptiste Daroussin }, 10397bd480fSBaptiste Daroussin { 10497bd480fSBaptiste Daroussin "description": "regexes are case sensitive", 10597bd480fSBaptiste Daroussin "data": { "a_x_3": 3 }, 10697bd480fSBaptiste Daroussin "valid": true 10797bd480fSBaptiste Daroussin }, 10897bd480fSBaptiste Daroussin { 10997bd480fSBaptiste Daroussin "description": "regexes are case sensitive, 2", 11097bd480fSBaptiste Daroussin "data": { "a_X_3": 3 }, 11197bd480fSBaptiste Daroussin "valid": false 11297bd480fSBaptiste Daroussin } 11397bd480fSBaptiste Daroussin ] 11497bd480fSBaptiste Daroussin } 11597bd480fSBaptiste Daroussin] 116