Skip to content

Commit c5f08e2

Browse files
add tests for pattern matching with unicode semantics
As of draft2020-12 supporting this is still just a "SHOULD".
1 parent e7f8b3e commit c5f08e2

File tree

6 files changed

+876
-0
lines changed

6 files changed

+876
-0
lines changed
+146
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
[
2+
{
3+
"description": "unicode semantics should be used for all pattern matching",
4+
"schema": { "pattern": "\\wcole" },
5+
"tests": [
6+
{
7+
"description": "literal unicode character in json string",
8+
"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.",
9+
"valid": true
10+
},
11+
{
12+
"description": "unicode character in hex format in string",
13+
"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.",
14+
"valid": true
15+
},
16+
{
17+
"description": "unicode matching is case-sensitive",
18+
"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.",
19+
"valid": false
20+
}
21+
]
22+
},
23+
{
24+
"description": "unicode characters do not match ascii ranges",
25+
"schema": { "pattern": "[a-z]cole" },
26+
"tests": [
27+
{
28+
"description": "literal unicode character in json string",
29+
"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.",
30+
"valid": false
31+
},
32+
{
33+
"description": "unicode character in hex format in string",
34+
"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.",
35+
"valid": false
36+
},
37+
{
38+
"description": "ascii characters match",
39+
"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.",
40+
"valid": true
41+
}
42+
]
43+
},
44+
{
45+
"description": "unicode digits are more than 0 through 9",
46+
"schema": { "pattern": "^\\d+$" },
47+
"tests": [
48+
{
49+
"description": "ascii digits",
50+
"data": "42",
51+
"valid": true
52+
},
53+
{
54+
"description": "ascii non-digits",
55+
"data": "-%#",
56+
"valid": false
57+
},
58+
{
59+
"description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)",
60+
"data": "৪২",
61+
"valid": true
62+
}
63+
]
64+
},
65+
{
66+
"description": "unicode semantics should be used for all patternProperties matching",
67+
"schema": {
68+
"type": "object",
69+
"patternProperties": {
70+
"\\wcole": true
71+
},
72+
"additionalProperties": false
73+
},
74+
"tests": [
75+
{
76+
"description": "literal unicode character in json string",
77+
"data": { "l'école": "pas de vraie vie" },
78+
"valid": true
79+
},
80+
{
81+
"description": "unicode character in hex format in string",
82+
"data": { "l'\u00e9cole": "pas de vraie vie" },
83+
"valid": true
84+
},
85+
{
86+
"description": "unicode matching is case-sensitive",
87+
"data": { "L'ÉCOLE": "PAS DE VRAIE VIE" },
88+
"valid": false
89+
}
90+
]
91+
},
92+
{
93+
"description": "unicode characters do not match ascii ranges",
94+
"schema": {
95+
"type": "object",
96+
"patternProperties": {
97+
"[a-z]cole": true
98+
},
99+
"additionalProperties": false
100+
},
101+
"tests": [
102+
{
103+
"description": "literal unicode character in json string",
104+
"data": { "l'école": "pas de vraie vie" },
105+
"valid": false
106+
},
107+
{
108+
"description": "unicode character in hex format in string",
109+
"data": { "l'\u00e9cole": "pas de vraie vie" },
110+
"valid": false
111+
},
112+
{
113+
"description": "ascii characters match",
114+
"data": { "l'ecole": "pas de vraie vie" },
115+
"valid": true
116+
}
117+
]
118+
},
119+
{
120+
"description": "unicode digits are more than 0 through 9",
121+
"schema": {
122+
"type": "object",
123+
"patternProperties": {
124+
"^\\d+$": true
125+
},
126+
"additionalProperties": false
127+
},
128+
"tests": [
129+
{
130+
"description": "ascii digits",
131+
"data": { "42": "life, the universe, and everything" },
132+
"valid": true
133+
},
134+
{
135+
"description": "ascii non-digits",
136+
"data": { "-%#": "spending the year dead for tax reasons" },
137+
"valid": false
138+
},
139+
{
140+
"description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)",
141+
"data": { "৪২": "khajit has wares if you have coin" },
142+
"valid": true
143+
}
144+
]
145+
}
146+
]
+146
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
[
2+
{
3+
"description": "unicode semantics should be used for all pattern matching",
4+
"schema": { "pattern": "\\wcole" },
5+
"tests": [
6+
{
7+
"description": "literal unicode character in json string",
8+
"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.",
9+
"valid": true
10+
},
11+
{
12+
"description": "unicode character in hex format in string",
13+
"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.",
14+
"valid": true
15+
},
16+
{
17+
"description": "unicode matching is case-sensitive",
18+
"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.",
19+
"valid": false
20+
}
21+
]
22+
},
23+
{
24+
"description": "unicode characters do not match ascii ranges",
25+
"schema": { "pattern": "[a-z]cole" },
26+
"tests": [
27+
{
28+
"description": "literal unicode character in json string",
29+
"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.",
30+
"valid": false
31+
},
32+
{
33+
"description": "unicode character in hex format in string",
34+
"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.",
35+
"valid": false
36+
},
37+
{
38+
"description": "ascii characters match",
39+
"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.",
40+
"valid": true
41+
}
42+
]
43+
},
44+
{
45+
"description": "unicode digits are more than 0 through 9",
46+
"schema": { "pattern": "^\\d+$" },
47+
"tests": [
48+
{
49+
"description": "ascii digits",
50+
"data": "42",
51+
"valid": true
52+
},
53+
{
54+
"description": "ascii non-digits",
55+
"data": "-%#",
56+
"valid": false
57+
},
58+
{
59+
"description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)",
60+
"data": "৪২",
61+
"valid": true
62+
}
63+
]
64+
},
65+
{
66+
"description": "unicode semantics should be used for all patternProperties matching",
67+
"schema": {
68+
"type": "object",
69+
"patternProperties": {
70+
"\\wcole": true
71+
},
72+
"additionalProperties": false
73+
},
74+
"tests": [
75+
{
76+
"description": "literal unicode character in json string",
77+
"data": { "l'école": "pas de vraie vie" },
78+
"valid": true
79+
},
80+
{
81+
"description": "unicode character in hex format in string",
82+
"data": { "l'\u00e9cole": "pas de vraie vie" },
83+
"valid": true
84+
},
85+
{
86+
"description": "unicode matching is case-sensitive",
87+
"data": { "L'ÉCOLE": "PAS DE VRAIE VIE" },
88+
"valid": false
89+
}
90+
]
91+
},
92+
{
93+
"description": "unicode characters do not match ascii ranges",
94+
"schema": {
95+
"type": "object",
96+
"patternProperties": {
97+
"[a-z]cole": true
98+
},
99+
"additionalProperties": false
100+
},
101+
"tests": [
102+
{
103+
"description": "literal unicode character in json string",
104+
"data": { "l'école": "pas de vraie vie" },
105+
"valid": false
106+
},
107+
{
108+
"description": "unicode character in hex format in string",
109+
"data": { "l'\u00e9cole": "pas de vraie vie" },
110+
"valid": false
111+
},
112+
{
113+
"description": "ascii characters match",
114+
"data": { "l'ecole": "pas de vraie vie" },
115+
"valid": true
116+
}
117+
]
118+
},
119+
{
120+
"description": "unicode digits are more than 0 through 9",
121+
"schema": {
122+
"type": "object",
123+
"patternProperties": {
124+
"^\\d+$": true
125+
},
126+
"additionalProperties": false
127+
},
128+
"tests": [
129+
{
130+
"description": "ascii digits",
131+
"data": { "42": "life, the universe, and everything" },
132+
"valid": true
133+
},
134+
{
135+
"description": "ascii non-digits",
136+
"data": { "-%#": "spending the year dead for tax reasons" },
137+
"valid": false
138+
},
139+
{
140+
"description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)",
141+
"data": { "৪২": "khajit has wares if you have coin" },
142+
"valid": true
143+
}
144+
]
145+
}
146+
]

0 commit comments

Comments
 (0)