diff options
author | Julian Berman <Julian@GrayVines.com> | 2021-07-13 14:29:47 +0200 |
---|---|---|
committer | Julian Berman <Julian@GrayVines.com> | 2021-07-13 14:29:47 +0200 |
commit | aab1a17e621ab64cf274791e4d95bc451e0b69b2 (patch) | |
tree | f87e5abc829127c237cbb06783ae139aeb12c8cd | |
parent | c08bafd5971794384bbf57960728d8c64fd50d81 (diff) | |
parent | 401a857bd7a71931e66e04eb086c4026f4c19846 (diff) | |
download | jsonschema-aab1a17e621ab64cf274791e4d95bc451e0b69b2.tar.gz |
Merge commit '401a857bd7a71931e66e04eb086c4026f4c19846'
* commit '401a857bd7a71931e66e04eb086c4026f4c19846':
Squashed 'json/' changes from 17fa9589..6327a3bc
19 files changed, 1668 insertions, 866 deletions
diff --git a/json/tests/draft-future/dynamicRef.json b/json/tests/draft-future/dynamicRef.json index 2bb900a..09fdb4e 100644 --- a/json/tests/draft-future/dynamicRef.json +++ b/json/tests/draft-future/dynamicRef.json @@ -2,6 +2,7 @@ { "description": "A $dynamicRef to a $dynamicAnchor in the same schema resource should behave like a normal $ref to an $anchor", "schema": { + "$id": "https://test.json-schema.org/dynamicRef-dynamicAnchor-same-schema/root", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { @@ -27,6 +28,7 @@ { "description": "A $dynamicRef to an $anchor in the same schema resource should behave like a normal $ref to an $anchor", "schema": { + "$id": "https://test.json-schema.org/dynamicRef-anchor-same-schema/root", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { @@ -52,6 +54,7 @@ { "description": "A $ref to a $dynamicAnchor in the same schema resource should behave like a normal $ref to an $anchor", "schema": { + "$id": "https://test.json-schema.org/ref-dynamicAnchor-same-schema/root", "type": "array", "items": { "$ref": "#items" }, "$defs": { diff --git a/json/tests/draft-future/format.json b/json/tests/draft-future/format.json index 0eb5048..f10b211 100644 --- a/json/tests/draft-future/format.json +++ b/json/tests/draft-future/format.json @@ -1,35 +1,35 @@ [ { - "description": "validation of e-mail addresses", - "schema": {"format": "email"}, + "description": "email format", + "schema": { "format": "email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -41,36 +41,36 @@ ] }, { - "description": "validation of IDN e-mail addresses", - "schema": {"format": "idn-email"}, + "description": "idn-email format", + "schema": { "format": "idn-email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -82,36 +82,36 @@ ] }, { - "description": "validation of regexes", - "schema": {"format": "regex"}, + "description": "regex format", + "schema": { "format": "regex" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -123,36 +123,36 @@ ] }, { - "description": "validation of IP addresses", - "schema": {"format": "ipv4"}, + "description": "ipv4 format", + "schema": { "format": "ipv4" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -164,36 +164,36 @@ ] }, { - "description": "validation of IPv6 addresses", - "schema": {"format": "ipv6"}, + "description": "ipv6 format", + "schema": { "format": "ipv6" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -205,36 +205,36 @@ ] }, { - "description": "validation of IDN hostnames", - "schema": {"format": "idn-hostname"}, + "description": "idn-hostname format", + "schema": { "format": "idn-hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -246,36 +246,36 @@ ] }, { - "description": "validation of hostnames", - "schema": {"format": "hostname"}, + "description": "hostname format", + "schema": { "format": "hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -287,36 +287,36 @@ ] }, { - "description": "validation of date strings", - "schema": {"format": "date"}, + "description": "date format", + "schema": { "format": "date" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -328,36 +328,36 @@ ] }, { - "description": "validation of date-time strings", - "schema": {"format": "date-time"}, + "description": "date-time format", + "schema": { "format": "date-time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -369,36 +369,36 @@ ] }, { - "description": "validation of time strings", - "schema": {"format": "time"}, + "description": "time format", + "schema": { "format": "time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -410,36 +410,36 @@ ] }, { - "description": "validation of JSON pointers", - "schema": {"format": "json-pointer"}, + "description": "json-pointer format", + "schema": { "format": "json-pointer" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -451,36 +451,36 @@ ] }, { - "description": "validation of relative JSON pointers", - "schema": {"format": "relative-json-pointer"}, + "description": "relative-json-pointer format", + "schema": { "format": "relative-json-pointer" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -492,36 +492,36 @@ ] }, { - "description": "validation of IRIs", - "schema": {"format": "iri"}, + "description": "iri format", + "schema": { "format": "iri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -533,36 +533,36 @@ ] }, { - "description": "validation of IRI references", - "schema": {"format": "iri-reference"}, + "description": "iri-reference format", + "schema": { "format": "iri-reference" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -574,36 +574,36 @@ ] }, { - "description": "validation of URIs", - "schema": {"format": "uri"}, + "description": "uri format", + "schema": { "format": "uri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -615,36 +615,36 @@ ] }, { - "description": "validation of URI references", - "schema": {"format": "uri-reference"}, + "description": "uri-reference format", + "schema": { "format": "uri-reference" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -656,36 +656,36 @@ ] }, { - "description": "validation of URI templates", - "schema": {"format": "uri-template"}, + "description": "uri-template format", + "schema": { "format": "uri-template" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -697,36 +697,36 @@ ] }, { - "description": "validation of UUIDs", + "description": "uuid format", "schema": { "format": "uuid" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -738,36 +738,36 @@ ] }, { - "description": "validation of durations", + "description": "duration format", "schema": { "format": "duration" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, diff --git a/json/tests/draft-future/optional/unicode.json b/json/tests/draft-future/optional/unicode.json new file mode 100644 index 0000000..1dc5940 --- /dev/null +++ b/json/tests/draft-future/optional/unicode.json @@ -0,0 +1,146 @@ +[ + { + "description": "unicode semantics should be used for all pattern matching", + "schema": { "pattern": "\\wcole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { "pattern": "[a-z]cole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "ascii characters match", + "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { "pattern": "^\\d+$" }, + "tests": [ + { + "description": "ascii digits", + "data": "42", + "valid": true + }, + { + "description": "ascii non-digits", + "data": "-%#", + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": "৪২", + "valid": true + } + ] + }, + { + "description": "unicode semantics should be used for all patternProperties matching", + "schema": { + "type": "object", + "patternProperties": { + "\\wcole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { + "type": "object", + "patternProperties": { + "[a-z]cole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": false + }, + { + "description": "ascii characters match", + "data": { "l'ecole": "pas de vraie vie" }, + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { + "type": "object", + "patternProperties": { + "^\\d+$": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "ascii digits", + "data": { "42": "life, the universe, and everything" }, + "valid": true + }, + { + "description": "ascii non-digits", + "data": { "-%#": "spending the year dead for tax reasons" }, + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": { "৪২": "khajit has wares if you have coin" }, + "valid": true + } + ] + } +] diff --git a/json/tests/draft2019-09/format.json b/json/tests/draft2019-09/format.json index 0eb5048..f10b211 100644 --- a/json/tests/draft2019-09/format.json +++ b/json/tests/draft2019-09/format.json @@ -1,35 +1,35 @@ [ { - "description": "validation of e-mail addresses", - "schema": {"format": "email"}, + "description": "email format", + "schema": { "format": "email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -41,36 +41,36 @@ ] }, { - "description": "validation of IDN e-mail addresses", - "schema": {"format": "idn-email"}, + "description": "idn-email format", + "schema": { "format": "idn-email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -82,36 +82,36 @@ ] }, { - "description": "validation of regexes", - "schema": {"format": "regex"}, + "description": "regex format", + "schema": { "format": "regex" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -123,36 +123,36 @@ ] }, { - "description": "validation of IP addresses", - "schema": {"format": "ipv4"}, + "description": "ipv4 format", + "schema": { "format": "ipv4" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -164,36 +164,36 @@ ] }, { - "description": "validation of IPv6 addresses", - "schema": {"format": "ipv6"}, + "description": "ipv6 format", + "schema": { "format": "ipv6" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -205,36 +205,36 @@ ] }, { - "description": "validation of IDN hostnames", - "schema": {"format": "idn-hostname"}, + "description": "idn-hostname format", + "schema": { "format": "idn-hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -246,36 +246,36 @@ ] }, { - "description": "validation of hostnames", - "schema": {"format": "hostname"}, + "description": "hostname format", + "schema": { "format": "hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -287,36 +287,36 @@ ] }, { - "description": "validation of date strings", - "schema": {"format": "date"}, + "description": "date format", + "schema": { "format": "date" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -328,36 +328,36 @@ ] }, { - "description": "validation of date-time strings", - "schema": {"format": "date-time"}, + "description": "date-time format", + "schema": { "format": "date-time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -369,36 +369,36 @@ ] }, { - "description": "validation of time strings", - "schema": {"format": "time"}, + "description": "time format", + "schema": { "format": "time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -410,36 +410,36 @@ ] }, { - "description": "validation of JSON pointers", - "schema": {"format": "json-pointer"}, + "description": "json-pointer format", + "schema": { "format": "json-pointer" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -451,36 +451,36 @@ ] }, { - "description": "validation of relative JSON pointers", - "schema": {"format": "relative-json-pointer"}, + "description": "relative-json-pointer format", + "schema": { "format": "relative-json-pointer" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -492,36 +492,36 @@ ] }, { - "description": "validation of IRIs", - "schema": {"format": "iri"}, + "description": "iri format", + "schema": { "format": "iri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -533,36 +533,36 @@ ] }, { - "description": "validation of IRI references", - "schema": {"format": "iri-reference"}, + "description": "iri-reference format", + "schema": { "format": "iri-reference" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -574,36 +574,36 @@ ] }, { - "description": "validation of URIs", - "schema": {"format": "uri"}, + "description": "uri format", + "schema": { "format": "uri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -615,36 +615,36 @@ ] }, { - "description": "validation of URI references", - "schema": {"format": "uri-reference"}, + "description": "uri-reference format", + "schema": { "format": "uri-reference" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -656,36 +656,36 @@ ] }, { - "description": "validation of URI templates", - "schema": {"format": "uri-template"}, + "description": "uri-template format", + "schema": { "format": "uri-template" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -697,36 +697,36 @@ ] }, { - "description": "validation of UUIDs", + "description": "uuid format", "schema": { "format": "uuid" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -738,36 +738,36 @@ ] }, { - "description": "validation of durations", + "description": "duration format", "schema": { "format": "duration" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, diff --git a/json/tests/draft2019-09/optional/format/duration.json b/json/tests/draft2019-09/optional/format/duration.json index b8124d7..4514738 100644 --- a/json/tests/draft2019-09/optional/format/duration.json +++ b/json/tests/draft2019-09/optional/format/duration.json @@ -87,26 +87,6 @@ "description": "weeks cannot be combined with other units", "data": "P1Y2W", "valid": false - }, - { - "description": "null value should be ignored", - "data": null, - "valid": true - }, - { - "description": "number value should be ignored", - "data": 1, - "valid": true - }, - { - "description": "list value should be ignored", - "data": [], - "valid": true - }, - { - "description": "object value should be ignored", - "data": {}, - "valid": true } ] } diff --git a/json/tests/draft2019-09/optional/format/uuid.json b/json/tests/draft2019-09/optional/format/uuid.json index 3d0f0e7..45bf349 100644 --- a/json/tests/draft2019-09/optional/format/uuid.json +++ b/json/tests/draft2019-09/optional/format/uuid.json @@ -64,26 +64,6 @@ "description": "hypothetical version 15", "data": "99c17cbb-656f-f64a-940f-1a4568f03487", "valid": true - }, - { - "description": "null value should be ignored", - "data": null, - "valid": true - }, - { - "description": "number value should be ignored", - "data": 1, - "valid": true - }, - { - "description": "list value should be ignored", - "data": [], - "valid": true - }, - { - "description": "object value should be ignored", - "data": {}, - "valid": true } ] } diff --git a/json/tests/draft2019-09/optional/unicode.json b/json/tests/draft2019-09/optional/unicode.json new file mode 100644 index 0000000..1dc5940 --- /dev/null +++ b/json/tests/draft2019-09/optional/unicode.json @@ -0,0 +1,146 @@ +[ + { + "description": "unicode semantics should be used for all pattern matching", + "schema": { "pattern": "\\wcole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { "pattern": "[a-z]cole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "ascii characters match", + "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { "pattern": "^\\d+$" }, + "tests": [ + { + "description": "ascii digits", + "data": "42", + "valid": true + }, + { + "description": "ascii non-digits", + "data": "-%#", + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": "৪২", + "valid": true + } + ] + }, + { + "description": "unicode semantics should be used for all patternProperties matching", + "schema": { + "type": "object", + "patternProperties": { + "\\wcole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { + "type": "object", + "patternProperties": { + "[a-z]cole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": false + }, + { + "description": "ascii characters match", + "data": { "l'ecole": "pas de vraie vie" }, + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { + "type": "object", + "patternProperties": { + "^\\d+$": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "ascii digits", + "data": { "42": "life, the universe, and everything" }, + "valid": true + }, + { + "description": "ascii non-digits", + "data": { "-%#": "spending the year dead for tax reasons" }, + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": { "৪২": "khajit has wares if you have coin" }, + "valid": true + } + ] + } +] diff --git a/json/tests/draft2020-12/dynamicRef.json b/json/tests/draft2020-12/dynamicRef.json index 2bb900a..09fdb4e 100644 --- a/json/tests/draft2020-12/dynamicRef.json +++ b/json/tests/draft2020-12/dynamicRef.json @@ -2,6 +2,7 @@ { "description": "A $dynamicRef to a $dynamicAnchor in the same schema resource should behave like a normal $ref to an $anchor", "schema": { + "$id": "https://test.json-schema.org/dynamicRef-dynamicAnchor-same-schema/root", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { @@ -27,6 +28,7 @@ { "description": "A $dynamicRef to an $anchor in the same schema resource should behave like a normal $ref to an $anchor", "schema": { + "$id": "https://test.json-schema.org/dynamicRef-anchor-same-schema/root", "type": "array", "items": { "$dynamicRef": "#items" }, "$defs": { @@ -52,6 +54,7 @@ { "description": "A $ref to a $dynamicAnchor in the same schema resource should behave like a normal $ref to an $anchor", "schema": { + "$id": "https://test.json-schema.org/ref-dynamicAnchor-same-schema/root", "type": "array", "items": { "$ref": "#items" }, "$defs": { diff --git a/json/tests/draft2020-12/format.json b/json/tests/draft2020-12/format.json index 0eb5048..f10b211 100644 --- a/json/tests/draft2020-12/format.json +++ b/json/tests/draft2020-12/format.json @@ -1,35 +1,35 @@ [ { - "description": "validation of e-mail addresses", - "schema": {"format": "email"}, + "description": "email format", + "schema": { "format": "email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -41,36 +41,36 @@ ] }, { - "description": "validation of IDN e-mail addresses", - "schema": {"format": "idn-email"}, + "description": "idn-email format", + "schema": { "format": "idn-email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -82,36 +82,36 @@ ] }, { - "description": "validation of regexes", - "schema": {"format": "regex"}, + "description": "regex format", + "schema": { "format": "regex" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -123,36 +123,36 @@ ] }, { - "description": "validation of IP addresses", - "schema": {"format": "ipv4"}, + "description": "ipv4 format", + "schema": { "format": "ipv4" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -164,36 +164,36 @@ ] }, { - "description": "validation of IPv6 addresses", - "schema": {"format": "ipv6"}, + "description": "ipv6 format", + "schema": { "format": "ipv6" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -205,36 +205,36 @@ ] }, { - "description": "validation of IDN hostnames", - "schema": {"format": "idn-hostname"}, + "description": "idn-hostname format", + "schema": { "format": "idn-hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -246,36 +246,36 @@ ] }, { - "description": "validation of hostnames", - "schema": {"format": "hostname"}, + "description": "hostname format", + "schema": { "format": "hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -287,36 +287,36 @@ ] }, { - "description": "validation of date strings", - "schema": {"format": "date"}, + "description": "date format", + "schema": { "format": "date" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -328,36 +328,36 @@ ] }, { - "description": "validation of date-time strings", - "schema": {"format": "date-time"}, + "description": "date-time format", + "schema": { "format": "date-time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -369,36 +369,36 @@ ] }, { - "description": "validation of time strings", - "schema": {"format": "time"}, + "description": "time format", + "schema": { "format": "time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -410,36 +410,36 @@ ] }, { - "description": "validation of JSON pointers", - "schema": {"format": "json-pointer"}, + "description": "json-pointer format", + "schema": { "format": "json-pointer" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -451,36 +451,36 @@ ] }, { - "description": "validation of relative JSON pointers", - "schema": {"format": "relative-json-pointer"}, + "description": "relative-json-pointer format", + "schema": { "format": "relative-json-pointer" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -492,36 +492,36 @@ ] }, { - "description": "validation of IRIs", - "schema": {"format": "iri"}, + "description": "iri format", + "schema": { "format": "iri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -533,36 +533,36 @@ ] }, { - "description": "validation of IRI references", - "schema": {"format": "iri-reference"}, + "description": "iri-reference format", + "schema": { "format": "iri-reference" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -574,36 +574,36 @@ ] }, { - "description": "validation of URIs", - "schema": {"format": "uri"}, + "description": "uri format", + "schema": { "format": "uri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -615,36 +615,36 @@ ] }, { - "description": "validation of URI references", - "schema": {"format": "uri-reference"}, + "description": "uri-reference format", + "schema": { "format": "uri-reference" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -656,36 +656,36 @@ ] }, { - "description": "validation of URI templates", - "schema": {"format": "uri-template"}, + "description": "uri-template format", + "schema": { "format": "uri-template" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -697,36 +697,36 @@ ] }, { - "description": "validation of UUIDs", + "description": "uuid format", "schema": { "format": "uuid" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, @@ -738,36 +738,36 @@ ] }, { - "description": "validation of durations", + "description": "duration format", "schema": { "format": "duration" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true }, diff --git a/json/tests/draft2020-12/optional/format/duration.json b/json/tests/draft2020-12/optional/format/duration.json index b8124d7..4514738 100644 --- a/json/tests/draft2020-12/optional/format/duration.json +++ b/json/tests/draft2020-12/optional/format/duration.json @@ -87,26 +87,6 @@ "description": "weeks cannot be combined with other units", "data": "P1Y2W", "valid": false - }, - { - "description": "null value should be ignored", - "data": null, - "valid": true - }, - { - "description": "number value should be ignored", - "data": 1, - "valid": true - }, - { - "description": "list value should be ignored", - "data": [], - "valid": true - }, - { - "description": "object value should be ignored", - "data": {}, - "valid": true } ] } diff --git a/json/tests/draft2020-12/optional/format/uuid.json b/json/tests/draft2020-12/optional/format/uuid.json index 3d0f0e7..45bf349 100644 --- a/json/tests/draft2020-12/optional/format/uuid.json +++ b/json/tests/draft2020-12/optional/format/uuid.json @@ -64,26 +64,6 @@ "description": "hypothetical version 15", "data": "99c17cbb-656f-f64a-940f-1a4568f03487", "valid": true - }, - { - "description": "null value should be ignored", - "data": null, - "valid": true - }, - { - "description": "number value should be ignored", - "data": 1, - "valid": true - }, - { - "description": "list value should be ignored", - "data": [], - "valid": true - }, - { - "description": "object value should be ignored", - "data": {}, - "valid": true } ] } diff --git a/json/tests/draft2020-12/optional/unicode.json b/json/tests/draft2020-12/optional/unicode.json new file mode 100644 index 0000000..1dc5940 --- /dev/null +++ b/json/tests/draft2020-12/optional/unicode.json @@ -0,0 +1,146 @@ +[ + { + "description": "unicode semantics should be used for all pattern matching", + "schema": { "pattern": "\\wcole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { "pattern": "[a-z]cole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "ascii characters match", + "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { "pattern": "^\\d+$" }, + "tests": [ + { + "description": "ascii digits", + "data": "42", + "valid": true + }, + { + "description": "ascii non-digits", + "data": "-%#", + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": "৪২", + "valid": true + } + ] + }, + { + "description": "unicode semantics should be used for all patternProperties matching", + "schema": { + "type": "object", + "patternProperties": { + "\\wcole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { + "type": "object", + "patternProperties": { + "[a-z]cole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": false + }, + { + "description": "ascii characters match", + "data": { "l'ecole": "pas de vraie vie" }, + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { + "type": "object", + "patternProperties": { + "^\\d+$": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "ascii digits", + "data": { "42": "life, the universe, and everything" }, + "valid": true + }, + { + "description": "ascii non-digits", + "data": { "-%#": "spending the year dead for tax reasons" }, + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": { "৪২": "khajit has wares if you have coin" }, + "valid": true + } + ] + } +] diff --git a/json/tests/draft3/format.json b/json/tests/draft3/format.json index 8279336..a5447c9 100644 --- a/json/tests/draft3/format.json +++ b/json/tests/draft3/format.json @@ -1,359 +1,359 @@ [ { - "description": "validation of e-mail addresses", - "schema": {"format": "email"}, + "description": "email format", + "schema": { "format": "email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IP addresses", - "schema": {"format": "ip-address"}, + "description": "ip-address format", + "schema": { "format": "ip-address" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IPv6 addresses", - "schema": {"format": "ipv6"}, + "description": "ipv6 format", + "schema": { "format": "ipv6" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of hostnames", - "schema": {"format": "host-name"}, + "description": "host-name format", + "schema": { "format": "host-name" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of date-time strings", - "schema": {"format": "date-time"}, + "description": "date-time format", + "schema": { "format": "date-time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of regular expressions", - "schema": {"format": "regex"}, + "description": "regex format", + "schema": { "format": "regex" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of date strings", - "schema": {"format": "date"}, + "description": "date format", + "schema": { "format": "date" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of time strings", - "schema": {"format": "time"}, + "description": "time format", + "schema": { "format": "time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of CSS colors", - "schema": {"format": "color"}, + "description": "color format", + "schema": { "format": "color" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of URIs", - "schema": {"format": "uri"}, + "description": "uri format", + "schema": { "format": "uri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } diff --git a/json/tests/draft4/format.json b/json/tests/draft4/format.json index 61e4b62..5bd83cc 100644 --- a/json/tests/draft4/format.json +++ b/json/tests/draft4/format.json @@ -1,215 +1,215 @@ [ { - "description": "validation of e-mail addresses", - "schema": {"format": "email"}, + "description": "email format", + "schema": { "format": "email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IP addresses", - "schema": {"format": "ipv4"}, + "description": "ipv4 format", + "schema": { "format": "ipv4" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IPv6 addresses", - "schema": {"format": "ipv6"}, + "description": "ipv6 format", + "schema": { "format": "ipv6" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of hostnames", - "schema": {"format": "hostname"}, + "description": "hostname format", + "schema": { "format": "hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of date-time strings", - "schema": {"format": "date-time"}, + "description": "date-time format", + "schema": { "format": "date-time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of URIs", - "schema": {"format": "uri"}, + "description": "uri format", + "schema": { "format": "uri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } diff --git a/json/tests/draft4/optional/unicode.json b/json/tests/draft4/optional/unicode.json new file mode 100644 index 0000000..8e709b4 --- /dev/null +++ b/json/tests/draft4/optional/unicode.json @@ -0,0 +1,146 @@ +[ + { + "description": "unicode semantics should be used for all pattern matching", + "schema": { "pattern": "\\wcole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { "pattern": "[a-z]cole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "ascii characters match", + "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { "pattern": "^\\d+$" }, + "tests": [ + { + "description": "ascii digits", + "data": "42", + "valid": true + }, + { + "description": "ascii non-digits", + "data": "-%#", + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": "৪২", + "valid": true + } + ] + }, + { + "description": "unicode semantics should be used for all patternProperties matching", + "schema": { + "type": "object", + "patternProperties": { + "\\wcole": {} + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { + "type": "object", + "patternProperties": { + "[a-z]cole": {} + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": false + }, + { + "description": "ascii characters match", + "data": { "l'ecole": "pas de vraie vie" }, + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { + "type": "object", + "patternProperties": { + "^\\d+$": {} + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "ascii digits", + "data": { "42": "life, the universe, and everything" }, + "valid": true + }, + { + "description": "ascii non-digits", + "data": { "-%#": "spending the year dead for tax reasons" }, + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": { "৪২": "khajit has wares if you have coin" }, + "valid": true + } + ] + } +] diff --git a/json/tests/draft6/format.json b/json/tests/draft6/format.json index 32e8152..2df2a9f 100644 --- a/json/tests/draft6/format.json +++ b/json/tests/draft6/format.json @@ -1,323 +1,323 @@ [ { - "description": "validation of e-mail addresses", - "schema": {"format": "email"}, + "description": "email format", + "schema": { "format": "email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IP addresses", - "schema": {"format": "ipv4"}, + "description": "ipv4 format", + "schema": { "format": "ipv4" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IPv6 addresses", - "schema": {"format": "ipv6"}, + "description": "ipv6 format", + "schema": { "format": "ipv6" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of hostnames", - "schema": {"format": "hostname"}, + "description": "hostname format", + "schema": { "format": "hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of date-time strings", - "schema": {"format": "date-time"}, + "description": "date-time format", + "schema": { "format": "date-time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of JSON pointers", - "schema": {"format": "json-pointer"}, + "description": "json-pointer format", + "schema": { "format": "json-pointer" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of URIs", - "schema": {"format": "uri"}, + "description": "uri format", + "schema": { "format": "uri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of URI references", - "schema": {"format": "uri-reference"}, + "description": "uri-reference format", + "schema": { "format": "uri-reference" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of URI templates", - "schema": {"format": "uri-template"}, + "description": "uri-template format", + "schema": { "format": "uri-template" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } diff --git a/json/tests/draft6/optional/unicode.json b/json/tests/draft6/optional/unicode.json new file mode 100644 index 0000000..1dc5940 --- /dev/null +++ b/json/tests/draft6/optional/unicode.json @@ -0,0 +1,146 @@ +[ + { + "description": "unicode semantics should be used for all pattern matching", + "schema": { "pattern": "\\wcole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { "pattern": "[a-z]cole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "ascii characters match", + "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { "pattern": "^\\d+$" }, + "tests": [ + { + "description": "ascii digits", + "data": "42", + "valid": true + }, + { + "description": "ascii non-digits", + "data": "-%#", + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": "৪২", + "valid": true + } + ] + }, + { + "description": "unicode semantics should be used for all patternProperties matching", + "schema": { + "type": "object", + "patternProperties": { + "\\wcole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { + "type": "object", + "patternProperties": { + "[a-z]cole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": false + }, + { + "description": "ascii characters match", + "data": { "l'ecole": "pas de vraie vie" }, + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { + "type": "object", + "patternProperties": { + "^\\d+$": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "ascii digits", + "data": { "42": "life, the universe, and everything" }, + "valid": true + }, + { + "description": "ascii non-digits", + "data": { "-%#": "spending the year dead for tax reasons" }, + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": { "৪২": "khajit has wares if you have coin" }, + "valid": true + } + ] + } +] diff --git a/json/tests/draft7/format.json b/json/tests/draft7/format.json index 93305f5..e2447d6 100644 --- a/json/tests/draft7/format.json +++ b/json/tests/draft7/format.json @@ -1,611 +1,611 @@ [ { - "description": "validation of e-mail addresses", - "schema": {"format": "email"}, + "description": "email format", + "schema": { "format": "email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IDN e-mail addresses", - "schema": {"format": "idn-email"}, + "description": "idn-email format", + "schema": { "format": "idn-email" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of regexes", - "schema": {"format": "regex"}, + "description": "regex format", + "schema": { "format": "regex" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IP addresses", - "schema": {"format": "ipv4"}, + "description": "ipv4 format", + "schema": { "format": "ipv4" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IPv6 addresses", - "schema": {"format": "ipv6"}, + "description": "ipv6 format", + "schema": { "format": "ipv6" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IDN hostnames", - "schema": {"format": "idn-hostname"}, + "description": "idn-hostname format", + "schema": { "format": "idn-hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of hostnames", - "schema": {"format": "hostname"}, + "description": "hostname format", + "schema": { "format": "hostname" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of date strings", - "schema": {"format": "date"}, + "description": "date format", + "schema": { "format": "date" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of date-time strings", - "schema": {"format": "date-time"}, + "description": "date-time format", + "schema": { "format": "date-time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of time strings", - "schema": {"format": "time"}, + "description": "time format", + "schema": { "format": "time" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of JSON pointers", - "schema": {"format": "json-pointer"}, + "description": "json-pointer format", + "schema": { "format": "json-pointer" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of relative JSON pointers", - "schema": {"format": "relative-json-pointer"}, + "description": "relative-json-pointer format", + "schema": { "format": "relative-json-pointer" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IRIs", - "schema": {"format": "iri"}, + "description": "iri format", + "schema": { "format": "iri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of IRI references", - "schema": {"format": "iri-reference"}, + "description": "iri-reference format", + "schema": { "format": "iri-reference" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of URIs", - "schema": {"format": "uri"}, + "description": "uri format", + "schema": { "format": "uri" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of URI references", - "schema": {"format": "uri-reference"}, + "description": "uri-reference format", + "schema": { "format": "uri-reference" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } ] }, { - "description": "validation of URI templates", - "schema": {"format": "uri-template"}, + "description": "uri-template format", + "schema": { "format": "uri-template" }, "tests": [ { - "description": "ignores integers", + "description": "all string formats ignore integers", "data": 12, "valid": true }, { - "description": "ignores floats", + "description": "all string formats ignore floats", "data": 13.7, "valid": true }, { - "description": "ignores objects", + "description": "all string formats ignore objects", "data": {}, "valid": true }, { - "description": "ignores arrays", + "description": "all string formats ignore arrays", "data": [], "valid": true }, { - "description": "ignores booleans", + "description": "all string formats ignore booleans", "data": false, "valid": true }, { - "description": "ignores null", + "description": "all string formats ignore nulls", "data": null, "valid": true } diff --git a/json/tests/draft7/optional/unicode.json b/json/tests/draft7/optional/unicode.json new file mode 100644 index 0000000..1dc5940 --- /dev/null +++ b/json/tests/draft7/optional/unicode.json @@ -0,0 +1,146 @@ +[ + { + "description": "unicode semantics should be used for all pattern matching", + "schema": { "pattern": "\\wcole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": "LES HIVERS DE MON ENFANCE ÉTAIENT DES SAISONS LONGUES, LONGUES. NOUS VIVIONS EN TROIS LIEUX: L'ÉCOLE, L'ÉGLISE ET LA PATINOIRE; MAIS LA VRAIE VIE ÉTAIT SUR LA PATINOIRE.", + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { "pattern": "[a-z]cole" }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'école, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": "Les hivers de mon enfance étaient des saisons longues, longues. Nous vivions en trois lieux: l'\u00e9cole, l'église et la patinoire; mais la vraie vie était sur la patinoire.", + "valid": false + }, + { + "description": "ascii characters match", + "data": "Les hivers de mon enfance etaient des saisons longues, longues. Nous vivions en trois lieux: l'ecole, l'eglise et la patinoire; mais la vraie vie etait sur la patinoire.", + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { "pattern": "^\\d+$" }, + "tests": [ + { + "description": "ascii digits", + "data": "42", + "valid": true + }, + { + "description": "ascii non-digits", + "data": "-%#", + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": "৪২", + "valid": true + } + ] + }, + { + "description": "unicode semantics should be used for all patternProperties matching", + "schema": { + "type": "object", + "patternProperties": { + "\\wcole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": true + }, + { + "description": "unicode matching is case-sensitive", + "data": { "L'ÉCOLE": "PAS DE VRAIE VIE" }, + "valid": false + } + ] + }, + { + "description": "unicode characters do not match ascii ranges", + "schema": { + "type": "object", + "patternProperties": { + "[a-z]cole": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "literal unicode character in json string", + "data": { "l'école": "pas de vraie vie" }, + "valid": false + }, + { + "description": "unicode character in hex format in string", + "data": { "l'\u00e9cole": "pas de vraie vie" }, + "valid": false + }, + { + "description": "ascii characters match", + "data": { "l'ecole": "pas de vraie vie" }, + "valid": true + } + ] + }, + { + "description": "unicode digits are more than 0 through 9", + "schema": { + "type": "object", + "patternProperties": { + "^\\d+$": true + }, + "additionalProperties": false + }, + "tests": [ + { + "description": "ascii digits", + "data": { "42": "life, the universe, and everything" }, + "valid": true + }, + { + "description": "ascii non-digits", + "data": { "-%#": "spending the year dead for tax reasons" }, + "valid": false + }, + { + "description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)", + "data": { "৪২": "khajit has wares if you have coin" }, + "valid": true + } + ] + } +] |