summaryrefslogtreecommitdiff
path: root/json
diff options
context:
space:
mode:
authorJulian Berman <Julian@GrayVines.com>2021-07-13 14:29:47 +0200
committerJulian Berman <Julian@GrayVines.com>2021-07-13 14:29:47 +0200
commitaab1a17e621ab64cf274791e4d95bc451e0b69b2 (patch)
treef87e5abc829127c237cbb06783ae139aeb12c8cd /json
parentc08bafd5971794384bbf57960728d8c64fd50d81 (diff)
parent401a857bd7a71931e66e04eb086c4026f4c19846 (diff)
downloadjsonschema-aab1a17e621ab64cf274791e4d95bc451e0b69b2.tar.gz
Merge commit '401a857bd7a71931e66e04eb086c4026f4c19846'
* commit '401a857bd7a71931e66e04eb086c4026f4c19846': Squashed 'json/' changes from 17fa9589..6327a3bc
Diffstat (limited to 'json')
-rw-r--r--json/tests/draft-future/dynamicRef.json3
-rw-r--r--json/tests/draft-future/format.json300
-rw-r--r--json/tests/draft-future/optional/unicode.json146
-rw-r--r--json/tests/draft2019-09/format.json300
-rw-r--r--json/tests/draft2019-09/optional/format/duration.json20
-rw-r--r--json/tests/draft2019-09/optional/format/uuid.json20
-rw-r--r--json/tests/draft2019-09/optional/unicode.json146
-rw-r--r--json/tests/draft2020-12/dynamicRef.json3
-rw-r--r--json/tests/draft2020-12/format.json300
-rw-r--r--json/tests/draft2020-12/optional/format/duration.json20
-rw-r--r--json/tests/draft2020-12/optional/format/uuid.json20
-rw-r--r--json/tests/draft2020-12/optional/unicode.json146
-rw-r--r--json/tests/draft3/format.json160
-rw-r--r--json/tests/draft4/format.json96
-rw-r--r--json/tests/draft4/optional/unicode.json146
-rw-r--r--json/tests/draft6/format.json144
-rw-r--r--json/tests/draft6/optional/unicode.json146
-rw-r--r--json/tests/draft7/format.json272
-rw-r--r--json/tests/draft7/optional/unicode.json146
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
+ }
+ ]
+ }
+]