diff options
author | Julian Berman <Julian@GrayVines.com> | 2019-03-24 10:15:04 -0400 |
---|---|---|
committer | Julian Berman <Julian@GrayVines.com> | 2019-03-24 10:15:04 -0400 |
commit | 4b2d27602a9fd0c13fd3f3b1fe89a8a297b144fd (patch) | |
tree | 0468713da8646a2cb84674fe28b5798d46a3bba0 | |
parent | 470888a403544adf081fd00a3a83e7c9e2e6b3ec (diff) | |
parent | a1ade0ac5e44e4314cf5dd35f6d9af3d44f34acd (diff) | |
download | jsonschema-4b2d27602a9fd0c13fd3f3b1fe89a8a297b144fd.tar.gz |
Merge commit 'a1ade0ac5e44e4314cf5dd35f6d9af3d44f34acd'
* commit 'a1ade0ac5e44e4314cf5dd35f6d9af3d44f34acd':
Squashed 'json/' changes from 8982b0b..3c3881a
-rw-r--r-- | json/tests/draft4/allOf.json | 73 | ||||
-rw-r--r-- | json/tests/draft4/anyOf.json | 21 | ||||
-rw-r--r-- | json/tests/draft4/items.json | 117 | ||||
-rw-r--r-- | json/tests/draft4/oneOf.json | 53 | ||||
-rw-r--r-- | json/tests/draft4/type.json | 123 | ||||
-rw-r--r-- | json/tests/draft6/allOf.json | 73 | ||||
-rw-r--r-- | json/tests/draft6/anyOf.json | 21 | ||||
-rw-r--r-- | json/tests/draft6/dependencies.json | 25 | ||||
-rw-r--r-- | json/tests/draft6/items.json | 117 | ||||
-rw-r--r-- | json/tests/draft6/oneOf.json | 53 | ||||
-rw-r--r-- | json/tests/draft6/type.json | 123 | ||||
-rw-r--r-- | json/tests/draft7/allOf.json | 73 | ||||
-rw-r--r-- | json/tests/draft7/anyOf.json | 21 | ||||
-rw-r--r-- | json/tests/draft7/dependencies.json | 25 | ||||
-rw-r--r-- | json/tests/draft7/items.json | 117 | ||||
-rw-r--r-- | json/tests/draft7/oneOf.json | 53 | ||||
-rw-r--r-- | json/tests/draft7/type.json | 123 |
17 files changed, 1205 insertions, 6 deletions
diff --git a/json/tests/draft4/allOf.json b/json/tests/draft4/allOf.json index bbb5f89..ce9fdd4 100644 --- a/json/tests/draft4/allOf.json +++ b/json/tests/draft4/allOf.json @@ -108,5 +108,78 @@ "valid": false } ] + }, + { + "description": "allOf with one empty schema", + "schema": { + "allOf": [ + {} + ] + }, + "tests": [ + { + "description": "any data is valid", + "data": 1, + "valid": true + } + ] + }, + { + "description": "allOf with two empty schemas", + "schema": { + "allOf": [ + {}, + {} + ] + }, + "tests": [ + { + "description": "any data is valid", + "data": 1, + "valid": true + } + ] + }, + { + "description": "allOf with the first empty schema", + "schema": { + "allOf": [ + {}, + { "type": "number" } + ] + }, + "tests": [ + { + "description": "number is valid", + "data": 1, + "valid": true + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + } + ] + }, + { + "description": "allOf with the last empty schema", + "schema": { + "allOf": [ + { "type": "number" }, + {} + ] + }, + "tests": [ + { + "description": "number is valid", + "data": 1, + "valid": true + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + } + ] } ] diff --git a/json/tests/draft4/anyOf.json b/json/tests/draft4/anyOf.json index 6c8b251..769adcf 100644 --- a/json/tests/draft4/anyOf.json +++ b/json/tests/draft4/anyOf.json @@ -105,5 +105,26 @@ "valid": false } ] + }, + { + "description": "anyOf with one empty schema", + "schema": { + "anyOf": [ + { "type": "number" }, + {} + ] + }, + "tests": [ + { + "description": "string is valid", + "data": "foo", + "valid": true + }, + { + "description": "number is valid", + "data": 123, + "valid": true + } + ] } ] diff --git a/json/tests/draft4/items.json b/json/tests/draft4/items.json index 6a4e648..7bf9f02 100644 --- a/json/tests/draft4/items.json +++ b/json/tests/draft4/items.json @@ -74,5 +74,122 @@ "valid": true } ] + }, + { + "description": "items and subitems", + "schema": { + "definitions": { + "item": { + "type": "array", + "additionalItems": false, + "items": [ + { "$ref": "#/definitions/sub-item" }, + { "$ref": "#/definitions/sub-item" } + ] + }, + "sub-item": { + "type": "object", + "required": ["foo"] + } + }, + "type": "array", + "additionalItems": false, + "items": [ + { "$ref": "#/definitions/item" }, + { "$ref": "#/definitions/item" }, + { "$ref": "#/definitions/item" } + ] + }, + "tests": [ + { + "description": "valid items", + "data": [ + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": true + }, + { + "description": "too many items", + "data": [ + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "too many sub-items", + "data": [ + [ {"foo": null}, {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "wrong item", + "data": [ + {"foo": null}, + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "wrong sub-item", + "data": [ + [ {}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "fewer items is valid", + "data": [ + [ {"foo": null} ], + [ {"foo": null} ] + ], + "valid": true + } + ] + }, + { + "description": "nested items", + "schema": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number" + } + } + } + } + }, + "tests": [ + { + "description": "valid nested array", + "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], + "valid": true + }, + { + "description": "nested array with invalid type", + "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], + "valid": false + }, + { + "description": "not deep enough", + "data": [[[1], [2],[3]], [[4], [5], [6]]], + "valid": false + } + ] } ] diff --git a/json/tests/draft4/oneOf.json b/json/tests/draft4/oneOf.json index 3a03ded..9dfffe1 100644 --- a/json/tests/draft4/oneOf.json +++ b/json/tests/draft4/oneOf.json @@ -105,5 +105,58 @@ "valid": false } ] + }, + { + "description": "oneOf with empty schema", + "schema": { + "oneOf": [ + { "type": "number" }, + {} + ] + }, + "tests": [ + { + "description": "one valid - valid", + "data": "foo", + "valid": true + }, + { + "description": "both valid - invalid", + "data": 123, + "valid": false + } + ] + }, + { + "description": "oneOf with required", + "schema": { + "type": "object", + "oneOf": [ + { "required": ["foo", "bar"] }, + { "required": ["foo", "baz"] } + ] + }, + "tests": [ + { + "description": "both invalid - invalid", + "data": {"bar": 2}, + "valid": false + }, + { + "description": "first valid - valid", + "data": {"foo": 1, "bar": 2}, + "valid": true + }, + { + "description": "second valid - valid", + "data": {"foo": 1, "baz": 3}, + "valid": true + }, + { + "description": "both valid - invalid", + "data": {"foo": 1, "bar": 2, "baz" : 3}, + "valid": false + } + ] } ] diff --git a/json/tests/draft4/type.json b/json/tests/draft4/type.json index 6129374..ea33b18 100644 --- a/json/tests/draft4/type.json +++ b/json/tests/draft4/type.json @@ -116,6 +116,11 @@ "valid": true }, { + "description": "an empty string is still a string", + "data": "", + "valid": true + }, + { "description": "an object is not a string", "data": {}, "valid": false @@ -229,6 +234,11 @@ "valid": false }, { + "description": "zero is not a boolean", + "data": 0, + "valid": false + }, + { "description": "a float is not a boolean", "data": 1.1, "valid": false @@ -239,6 +249,11 @@ "valid": false }, { + "description": "an empty string is not a boolean", + "data": "", + "valid": false + }, + { "description": "an object is not a boolean", "data": {}, "valid": false @@ -249,11 +264,16 @@ "valid": false }, { - "description": "a boolean is a boolean", + "description": "true is a boolean", "data": true, "valid": true }, { + "description": "false is a boolean", + "data": false, + "valid": true + }, + { "description": "null is not a boolean", "data": null, "valid": false @@ -275,11 +295,21 @@ "valid": false }, { + "description": "zero is not null", + "data": 0, + "valid": false + }, + { "description": "a string is not null", "data": "foo", "valid": false }, { + "description": "an empty string is not null", + "data": "", + "valid": false + }, + { "description": "an object is not null", "data": {}, "valid": false @@ -290,11 +320,16 @@ "valid": false }, { - "description": "a boolean is not null", + "description": "true is not null", "data": true, "valid": false }, { + "description": "false is not null", + "data": false, + "valid": false + }, + { "description": "null is null", "data": null, "valid": true @@ -341,5 +376,89 @@ "valid": false } ] + }, + { + "description": "type as array with one item", + "schema": { + "type": ["string"] + }, + "tests": [ + { + "description": "string is valid", + "data": "foo", + "valid": true + }, + { + "description": "number is invalid", + "data": 123, + "valid": false + } + ] + }, + { + "description": "type: array or object", + "schema": { + "type": ["array", "object"] + }, + "tests": [ + { + "description": "array is valid", + "data": [1,2,3], + "valid": true + }, + { + "description": "object is valid", + "data": {"foo": 123}, + "valid": true + }, + { + "description": "number is invalid", + "data": 123, + "valid": false + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + }, + { + "description": "null is invalid", + "data": null, + "valid": false + } + ] + }, + { + "description": "type: array, object or null", + "schema": { + "type": ["array", "object", "null"] + }, + "tests": [ + { + "description": "array is valid", + "data": [1,2,3], + "valid": true + }, + { + "description": "object is valid", + "data": {"foo": 123}, + "valid": true + }, + { + "description": "null is valid", + "data": null, + "valid": true + }, + { + "description": "number is invalid", + "data": 123, + "valid": false + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + } + ] } ] diff --git a/json/tests/draft6/allOf.json b/json/tests/draft6/allOf.json index 00c016c..eb61209 100644 --- a/json/tests/draft6/allOf.json +++ b/json/tests/draft6/allOf.json @@ -141,5 +141,78 @@ "valid": false } ] + }, + { + "description": "allOf with one empty schema", + "schema": { + "allOf": [ + {} + ] + }, + "tests": [ + { + "description": "any data is valid", + "data": 1, + "valid": true + } + ] + }, + { + "description": "allOf with two empty schemas", + "schema": { + "allOf": [ + {}, + {} + ] + }, + "tests": [ + { + "description": "any data is valid", + "data": 1, + "valid": true + } + ] + }, + { + "description": "allOf with the first empty schema", + "schema": { + "allOf": [ + {}, + { "type": "number" } + ] + }, + "tests": [ + { + "description": "number is valid", + "data": 1, + "valid": true + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + } + ] + }, + { + "description": "allOf with the last empty schema", + "schema": { + "allOf": [ + { "type": "number" }, + {} + ] + }, + "tests": [ + { + "description": "number is valid", + "data": 1, + "valid": true + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + } + ] } ] diff --git a/json/tests/draft6/anyOf.json b/json/tests/draft6/anyOf.json index 4d05a9e..bad3e77 100644 --- a/json/tests/draft6/anyOf.json +++ b/json/tests/draft6/anyOf.json @@ -138,5 +138,26 @@ "valid": false } ] + }, + { + "description": "anyOf with one empty schema", + "schema": { + "anyOf": [ + { "type": "number" }, + {} + ] + }, + "tests": [ + { + "description": "string is valid", + "data": "foo", + "valid": true + }, + { + "description": "number is valid", + "data": 123, + "valid": true + } + ] } ] diff --git a/json/tests/draft6/dependencies.json b/json/tests/draft6/dependencies.json index 80e552f..5af1894 100644 --- a/json/tests/draft6/dependencies.json +++ b/json/tests/draft6/dependencies.json @@ -168,5 +168,30 @@ "valid": true } ] + }, + { + "description": "empty array of dependencies", + "schema": { + "dependencies": { + "foo": [] + } + }, + "tests": [ + { + "description": "object with property is valid", + "data": { "foo": 1 }, + "valid": true + }, + { + "description": "empty object is valid", + "data": {}, + "valid": true + }, + { + "description": "non-object is valid", + "data": 1, + "valid": true + } + ] } ] diff --git a/json/tests/draft6/items.json b/json/tests/draft6/items.json index 13a6a11..67f1184 100644 --- a/json/tests/draft6/items.json +++ b/json/tests/draft6/items.json @@ -129,5 +129,122 @@ "valid": true } ] + }, + { + "description": "items and subitems", + "schema": { + "definitions": { + "item": { + "type": "array", + "additionalItems": false, + "items": [ + { "$ref": "#/definitions/sub-item" }, + { "$ref": "#/definitions/sub-item" } + ] + }, + "sub-item": { + "type": "object", + "required": ["foo"] + } + }, + "type": "array", + "additionalItems": false, + "items": [ + { "$ref": "#/definitions/item" }, + { "$ref": "#/definitions/item" }, + { "$ref": "#/definitions/item" } + ] + }, + "tests": [ + { + "description": "valid items", + "data": [ + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": true + }, + { + "description": "too many items", + "data": [ + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "too many sub-items", + "data": [ + [ {"foo": null}, {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "wrong item", + "data": [ + {"foo": null}, + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "wrong sub-item", + "data": [ + [ {}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "fewer items is valid", + "data": [ + [ {"foo": null} ], + [ {"foo": null} ] + ], + "valid": true + } + ] + }, + { + "description": "nested items", + "schema": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number" + } + } + } + } + }, + "tests": [ + { + "description": "valid nested array", + "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], + "valid": true + }, + { + "description": "nested array with invalid type", + "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], + "valid": false + }, + { + "description": "not deep enough", + "data": [[[1], [2],[3]], [[4], [5], [6]]], + "valid": false + } + ] } ] diff --git a/json/tests/draft6/oneOf.json b/json/tests/draft6/oneOf.json index bc4295c..57640b7 100644 --- a/json/tests/draft6/oneOf.json +++ b/json/tests/draft6/oneOf.json @@ -149,5 +149,58 @@ "valid": false } ] + }, + { + "description": "oneOf with empty schema", + "schema": { + "oneOf": [ + { "type": "number" }, + {} + ] + }, + "tests": [ + { + "description": "one valid - valid", + "data": "foo", + "valid": true + }, + { + "description": "both valid - invalid", + "data": 123, + "valid": false + } + ] + }, + { + "description": "oneOf with required", + "schema": { + "type": "object", + "oneOf": [ + { "required": ["foo", "bar"] }, + { "required": ["foo", "baz"] } + ] + }, + "tests": [ + { + "description": "both invalid - invalid", + "data": {"bar": 2}, + "valid": false + }, + { + "description": "first valid - valid", + "data": {"foo": 1, "bar": 2}, + "valid": true + }, + { + "description": "second valid - valid", + "data": {"foo": 1, "baz": 3}, + "valid": true + }, + { + "description": "both valid - invalid", + "data": {"foo": 1, "bar": 2, "baz" : 3}, + "valid": false + } + ] } ] diff --git a/json/tests/draft6/type.json b/json/tests/draft6/type.json index 6129374..ea33b18 100644 --- a/json/tests/draft6/type.json +++ b/json/tests/draft6/type.json @@ -116,6 +116,11 @@ "valid": true }, { + "description": "an empty string is still a string", + "data": "", + "valid": true + }, + { "description": "an object is not a string", "data": {}, "valid": false @@ -229,6 +234,11 @@ "valid": false }, { + "description": "zero is not a boolean", + "data": 0, + "valid": false + }, + { "description": "a float is not a boolean", "data": 1.1, "valid": false @@ -239,6 +249,11 @@ "valid": false }, { + "description": "an empty string is not a boolean", + "data": "", + "valid": false + }, + { "description": "an object is not a boolean", "data": {}, "valid": false @@ -249,11 +264,16 @@ "valid": false }, { - "description": "a boolean is a boolean", + "description": "true is a boolean", "data": true, "valid": true }, { + "description": "false is a boolean", + "data": false, + "valid": true + }, + { "description": "null is not a boolean", "data": null, "valid": false @@ -275,11 +295,21 @@ "valid": false }, { + "description": "zero is not null", + "data": 0, + "valid": false + }, + { "description": "a string is not null", "data": "foo", "valid": false }, { + "description": "an empty string is not null", + "data": "", + "valid": false + }, + { "description": "an object is not null", "data": {}, "valid": false @@ -290,11 +320,16 @@ "valid": false }, { - "description": "a boolean is not null", + "description": "true is not null", "data": true, "valid": false }, { + "description": "false is not null", + "data": false, + "valid": false + }, + { "description": "null is null", "data": null, "valid": true @@ -341,5 +376,89 @@ "valid": false } ] + }, + { + "description": "type as array with one item", + "schema": { + "type": ["string"] + }, + "tests": [ + { + "description": "string is valid", + "data": "foo", + "valid": true + }, + { + "description": "number is invalid", + "data": 123, + "valid": false + } + ] + }, + { + "description": "type: array or object", + "schema": { + "type": ["array", "object"] + }, + "tests": [ + { + "description": "array is valid", + "data": [1,2,3], + "valid": true + }, + { + "description": "object is valid", + "data": {"foo": 123}, + "valid": true + }, + { + "description": "number is invalid", + "data": 123, + "valid": false + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + }, + { + "description": "null is invalid", + "data": null, + "valid": false + } + ] + }, + { + "description": "type: array, object or null", + "schema": { + "type": ["array", "object", "null"] + }, + "tests": [ + { + "description": "array is valid", + "data": [1,2,3], + "valid": true + }, + { + "description": "object is valid", + "data": {"foo": 123}, + "valid": true + }, + { + "description": "null is valid", + "data": null, + "valid": true + }, + { + "description": "number is invalid", + "data": 123, + "valid": false + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + } + ] } ] diff --git a/json/tests/draft7/allOf.json b/json/tests/draft7/allOf.json index 00c016c..eb61209 100644 --- a/json/tests/draft7/allOf.json +++ b/json/tests/draft7/allOf.json @@ -141,5 +141,78 @@ "valid": false } ] + }, + { + "description": "allOf with one empty schema", + "schema": { + "allOf": [ + {} + ] + }, + "tests": [ + { + "description": "any data is valid", + "data": 1, + "valid": true + } + ] + }, + { + "description": "allOf with two empty schemas", + "schema": { + "allOf": [ + {}, + {} + ] + }, + "tests": [ + { + "description": "any data is valid", + "data": 1, + "valid": true + } + ] + }, + { + "description": "allOf with the first empty schema", + "schema": { + "allOf": [ + {}, + { "type": "number" } + ] + }, + "tests": [ + { + "description": "number is valid", + "data": 1, + "valid": true + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + } + ] + }, + { + "description": "allOf with the last empty schema", + "schema": { + "allOf": [ + { "type": "number" }, + {} + ] + }, + "tests": [ + { + "description": "number is valid", + "data": 1, + "valid": true + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + } + ] } ] diff --git a/json/tests/draft7/anyOf.json b/json/tests/draft7/anyOf.json index 4d05a9e..bad3e77 100644 --- a/json/tests/draft7/anyOf.json +++ b/json/tests/draft7/anyOf.json @@ -138,5 +138,26 @@ "valid": false } ] + }, + { + "description": "anyOf with one empty schema", + "schema": { + "anyOf": [ + { "type": "number" }, + {} + ] + }, + "tests": [ + { + "description": "string is valid", + "data": "foo", + "valid": true + }, + { + "description": "number is valid", + "data": 123, + "valid": true + } + ] } ] diff --git a/json/tests/draft7/dependencies.json b/json/tests/draft7/dependencies.json index 80e552f..5af1894 100644 --- a/json/tests/draft7/dependencies.json +++ b/json/tests/draft7/dependencies.json @@ -168,5 +168,30 @@ "valid": true } ] + }, + { + "description": "empty array of dependencies", + "schema": { + "dependencies": { + "foo": [] + } + }, + "tests": [ + { + "description": "object with property is valid", + "data": { "foo": 1 }, + "valid": true + }, + { + "description": "empty object is valid", + "data": {}, + "valid": true + }, + { + "description": "non-object is valid", + "data": 1, + "valid": true + } + ] } ] diff --git a/json/tests/draft7/items.json b/json/tests/draft7/items.json index 13a6a11..67f1184 100644 --- a/json/tests/draft7/items.json +++ b/json/tests/draft7/items.json @@ -129,5 +129,122 @@ "valid": true } ] + }, + { + "description": "items and subitems", + "schema": { + "definitions": { + "item": { + "type": "array", + "additionalItems": false, + "items": [ + { "$ref": "#/definitions/sub-item" }, + { "$ref": "#/definitions/sub-item" } + ] + }, + "sub-item": { + "type": "object", + "required": ["foo"] + } + }, + "type": "array", + "additionalItems": false, + "items": [ + { "$ref": "#/definitions/item" }, + { "$ref": "#/definitions/item" }, + { "$ref": "#/definitions/item" } + ] + }, + "tests": [ + { + "description": "valid items", + "data": [ + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": true + }, + { + "description": "too many items", + "data": [ + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "too many sub-items", + "data": [ + [ {"foo": null}, {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "wrong item", + "data": [ + {"foo": null}, + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "wrong sub-item", + "data": [ + [ {}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ], + [ {"foo": null}, {"foo": null} ] + ], + "valid": false + }, + { + "description": "fewer items is valid", + "data": [ + [ {"foo": null} ], + [ {"foo": null} ] + ], + "valid": true + } + ] + }, + { + "description": "nested items", + "schema": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number" + } + } + } + } + }, + "tests": [ + { + "description": "valid nested array", + "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], + "valid": true + }, + { + "description": "nested array with invalid type", + "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], + "valid": false + }, + { + "description": "not deep enough", + "data": [[[1], [2],[3]], [[4], [5], [6]]], + "valid": false + } + ] } ] diff --git a/json/tests/draft7/oneOf.json b/json/tests/draft7/oneOf.json index bc4295c..57640b7 100644 --- a/json/tests/draft7/oneOf.json +++ b/json/tests/draft7/oneOf.json @@ -149,5 +149,58 @@ "valid": false } ] + }, + { + "description": "oneOf with empty schema", + "schema": { + "oneOf": [ + { "type": "number" }, + {} + ] + }, + "tests": [ + { + "description": "one valid - valid", + "data": "foo", + "valid": true + }, + { + "description": "both valid - invalid", + "data": 123, + "valid": false + } + ] + }, + { + "description": "oneOf with required", + "schema": { + "type": "object", + "oneOf": [ + { "required": ["foo", "bar"] }, + { "required": ["foo", "baz"] } + ] + }, + "tests": [ + { + "description": "both invalid - invalid", + "data": {"bar": 2}, + "valid": false + }, + { + "description": "first valid - valid", + "data": {"foo": 1, "bar": 2}, + "valid": true + }, + { + "description": "second valid - valid", + "data": {"foo": 1, "baz": 3}, + "valid": true + }, + { + "description": "both valid - invalid", + "data": {"foo": 1, "bar": 2, "baz" : 3}, + "valid": false + } + ] } ] diff --git a/json/tests/draft7/type.json b/json/tests/draft7/type.json index 6129374..ea33b18 100644 --- a/json/tests/draft7/type.json +++ b/json/tests/draft7/type.json @@ -116,6 +116,11 @@ "valid": true }, { + "description": "an empty string is still a string", + "data": "", + "valid": true + }, + { "description": "an object is not a string", "data": {}, "valid": false @@ -229,6 +234,11 @@ "valid": false }, { + "description": "zero is not a boolean", + "data": 0, + "valid": false + }, + { "description": "a float is not a boolean", "data": 1.1, "valid": false @@ -239,6 +249,11 @@ "valid": false }, { + "description": "an empty string is not a boolean", + "data": "", + "valid": false + }, + { "description": "an object is not a boolean", "data": {}, "valid": false @@ -249,11 +264,16 @@ "valid": false }, { - "description": "a boolean is a boolean", + "description": "true is a boolean", "data": true, "valid": true }, { + "description": "false is a boolean", + "data": false, + "valid": true + }, + { "description": "null is not a boolean", "data": null, "valid": false @@ -275,11 +295,21 @@ "valid": false }, { + "description": "zero is not null", + "data": 0, + "valid": false + }, + { "description": "a string is not null", "data": "foo", "valid": false }, { + "description": "an empty string is not null", + "data": "", + "valid": false + }, + { "description": "an object is not null", "data": {}, "valid": false @@ -290,11 +320,16 @@ "valid": false }, { - "description": "a boolean is not null", + "description": "true is not null", "data": true, "valid": false }, { + "description": "false is not null", + "data": false, + "valid": false + }, + { "description": "null is null", "data": null, "valid": true @@ -341,5 +376,89 @@ "valid": false } ] + }, + { + "description": "type as array with one item", + "schema": { + "type": ["string"] + }, + "tests": [ + { + "description": "string is valid", + "data": "foo", + "valid": true + }, + { + "description": "number is invalid", + "data": 123, + "valid": false + } + ] + }, + { + "description": "type: array or object", + "schema": { + "type": ["array", "object"] + }, + "tests": [ + { + "description": "array is valid", + "data": [1,2,3], + "valid": true + }, + { + "description": "object is valid", + "data": {"foo": 123}, + "valid": true + }, + { + "description": "number is invalid", + "data": 123, + "valid": false + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + }, + { + "description": "null is invalid", + "data": null, + "valid": false + } + ] + }, + { + "description": "type: array, object or null", + "schema": { + "type": ["array", "object", "null"] + }, + "tests": [ + { + "description": "array is valid", + "data": [1,2,3], + "valid": true + }, + { + "description": "object is valid", + "data": {"foo": 123}, + "valid": true + }, + { + "description": "null is valid", + "data": null, + "valid": true + }, + { + "description": "number is invalid", + "data": 123, + "valid": false + }, + { + "description": "string is invalid", + "data": "foo", + "valid": false + } + ] } ] |