| [ |
| { |
| "description": "minContains without contains is ignored", |
| "schema": { |
| "$schema": "https://json-schema.org/draft/2019-09/schema", |
| "minContains": 1 |
| }, |
| "tests": [ |
| { |
| "description": "one item valid against lone minContains", |
| "data": [ 1 ], |
| "valid": true |
| }, |
| { |
| "description": "zero items still valid against lone minContains", |
| "data": [], |
| "valid": true |
| } |
| ] |
| }, |
| { |
| "description": "minContains=1 with contains", |
| "schema": { |
| "$schema": "https://json-schema.org/draft/2019-09/schema", |
| "contains": {"const": 1}, |
| "minContains": 1 |
| }, |
| "tests": [ |
| { |
| "description": "empty data", |
| "data": [ ], |
| "valid": false |
| }, |
| { |
| "description": "no elements match", |
| "data": [ 2 ], |
| "valid": false |
| }, |
| { |
| "description": "single element matches, valid minContains", |
| "data": [ 1 ], |
| "valid": true |
| }, |
| { |
| "description": "some elements match, valid minContains", |
| "data": [ 1, 2 ], |
| "valid": true |
| }, |
| { |
| "description": "all elements match, valid minContains", |
| "data": [ 1, 1 ], |
| "valid": true |
| } |
| ] |
| }, |
| { |
| "description": "minContains=2 with contains", |
| "schema": { |
| "$schema": "https://json-schema.org/draft/2019-09/schema", |
| "contains": {"const": 1}, |
| "minContains": 2 |
| }, |
| "tests": [ |
| { |
| "description": "empty data", |
| "data": [ ], |
| "valid": false |
| }, |
| { |
| "description": "all elements match, invalid minContains", |
| "data": [ 1 ], |
| "valid": false |
| }, |
| { |
| "description": "some elements match, invalid minContains", |
| "data": [ 1, 2 ], |
| "valid": false |
| }, |
| { |
| "description": "all elements match, valid minContains (exactly as needed)", |
| "data": [ 1, 1 ], |
| "valid": true |
| }, |
| { |
| "description": "all elements match, valid minContains (more than needed)", |
| "data": [ 1, 1, 1 ], |
| "valid": true |
| }, |
| { |
| "description": "some elements match, valid minContains", |
| "data": [ 1, 2, 1 ], |
| "valid": true |
| } |
| ] |
| }, |
| { |
| "description": "minContains=2 with contains with a decimal value", |
| "schema": { |
| "$schema": "https://json-schema.org/draft/2019-09/schema", |
| "contains": {"const": 1}, |
| "minContains": 2.0 |
| }, |
| "tests": [ |
| { |
| "description": "one element matches, invalid minContains", |
| "data": [ 1 ], |
| "valid": false |
| }, |
| { |
| "description": "both elements match, valid minContains", |
| "data": [ 1, 1 ], |
| "valid": true |
| } |
| ] |
| }, |
| { |
| "description": "maxContains = minContains", |
| "schema": { |
| "$schema": "https://json-schema.org/draft/2019-09/schema", |
| "contains": {"const": 1}, |
| "maxContains": 2, |
| "minContains": 2 |
| }, |
| "tests": [ |
| { |
| "description": "empty data", |
| "data": [ ], |
| "valid": false |
| }, |
| { |
| "description": "all elements match, invalid minContains", |
| "data": [ 1 ], |
| "valid": false |
| }, |
| { |
| "description": "all elements match, invalid maxContains", |
| "data": [ 1, 1, 1 ], |
| "valid": false |
| }, |
| { |
| "description": "all elements match, valid maxContains and minContains", |
| "data": [ 1, 1 ], |
| "valid": true |
| } |
| ] |
| }, |
| { |
| "description": "maxContains < minContains", |
| "schema": { |
| "$schema": "https://json-schema.org/draft/2019-09/schema", |
| "contains": {"const": 1}, |
| "maxContains": 1, |
| "minContains": 3 |
| }, |
| "tests": [ |
| { |
| "description": "empty data", |
| "data": [ ], |
| "valid": false |
| }, |
| { |
| "description": "invalid minContains", |
| "data": [ 1 ], |
| "valid": false |
| }, |
| { |
| "description": "invalid maxContains", |
| "data": [ 1, 1, 1 ], |
| "valid": false |
| }, |
| { |
| "description": "invalid maxContains and minContains", |
| "data": [ 1, 1 ], |
| "valid": false |
| } |
| ] |
| }, |
| { |
| "description": "minContains = 0 with no maxContains", |
| "schema": { |
| "$schema": "https://json-schema.org/draft/2019-09/schema", |
| "contains": {"const": 1}, |
| "minContains": 0 |
| }, |
| "tests": [ |
| { |
| "description": "empty data", |
| "data": [ ], |
| "valid": true |
| }, |
| { |
| "description": "minContains = 0 makes contains always pass", |
| "data": [ 2 ], |
| "valid": true |
| } |
| ] |
| }, |
| { |
| "description": "minContains = 0 with maxContains", |
| "schema": { |
| "$schema": "https://json-schema.org/draft/2019-09/schema", |
| "contains": {"const": 1}, |
| "minContains": 0, |
| "maxContains": 1 |
| }, |
| "tests": [ |
| { |
| "description": "empty data", |
| "data": [ ], |
| "valid": true |
| }, |
| { |
| "description": "not more than maxContains", |
| "data": [ 1 ], |
| "valid": true |
| }, |
| { |
| "description": "too many", |
| "data": [ 1, 1 ], |
| "valid": false |
| } |
| ] |
| } |
| ] |