Skip to content

Commit 0fb2d27

Browse files
committed
Consolidate optional/unicode into optional/ecmascript-regex
1 parent 9430972 commit 0fb2d27

File tree

12 files changed

+1560
-1572
lines changed

12 files changed

+1560
-1572
lines changed

tests/draft-future/optional/ecmascript-regex.json

Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,5 +288,265 @@
288288
"valid": true
289289
}
290290
]
291+
},
292+
{
293+
"description": "unicode semantics should be used for all pattern matching",
294+
"schema": { "pattern": "\\p{Letter}cole" },
295+
"tests": [
296+
{
297+
"description": "ascii character in json string",
298+
"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.",
299+
"valid": true
300+
},
301+
{
302+
"description": "literal unicode character in json string",
303+
"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.",
304+
"valid": true
305+
},
306+
{
307+
"description": "unicode character in hex format in string",
308+
"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.",
309+
"valid": true
310+
},
311+
{
312+
"description": "unicode matching is case-sensitive",
313+
"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.",
314+
"valid": false
315+
}
316+
]
317+
},
318+
{
319+
"description": "\\w in patterns matches [A-Za-z0-9_], not unicode letters",
320+
"schema": { "pattern": "\\wcole" },
321+
"tests": [
322+
{
323+
"description": "ascii character in json string",
324+
"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.",
325+
"valid": true
326+
},
327+
{
328+
"description": "literal unicode character in json string",
329+
"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.",
330+
"valid": false
331+
},
332+
{
333+
"description": "unicode character in hex format in string",
334+
"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.",
335+
"valid": false
336+
},
337+
{
338+
"description": "unicode matching is case-sensitive",
339+
"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.",
340+
"valid": false
341+
}
342+
]
343+
},
344+
{
345+
"description": "unicode characters do not match ascii ranges",
346+
"schema": { "pattern": "[a-z]cole" },
347+
"tests": [
348+
{
349+
"description": "literal unicode character in json string",
350+
"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.",
351+
"valid": false
352+
},
353+
{
354+
"description": "unicode character in hex format in string",
355+
"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.",
356+
"valid": false
357+
},
358+
{
359+
"description": "ascii characters match",
360+
"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.",
361+
"valid": true
362+
}
363+
]
364+
},
365+
{
366+
"description": "\\d in pattern matches [0-9], not unicode digits",
367+
"schema": { "pattern": "^\\d+$" },
368+
"tests": [
369+
{
370+
"description": "ascii digits",
371+
"data": "42",
372+
"valid": true
373+
},
374+
{
375+
"description": "ascii non-digits",
376+
"data": "-%#",
377+
"valid": false
378+
},
379+
{
380+
"description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)",
381+
"data": "৪২",
382+
"valid": false
383+
}
384+
]
385+
},
386+
{
387+
"description": "unicode digits are more than 0 through 9",
388+
"schema": { "pattern": "^\\p{digit}+$" },
389+
"tests": [
390+
{
391+
"description": "ascii digits",
392+
"data": "42",
393+
"valid": true
394+
},
395+
{
396+
"description": "ascii non-digits",
397+
"data": "-%#",
398+
"valid": false
399+
},
400+
{
401+
"description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)",
402+
"data": "৪২",
403+
"valid": true
404+
}
405+
]
406+
},
407+
{
408+
"description": "unicode semantics should be used for all patternProperties matching",
409+
"schema": {
410+
"type": "object",
411+
"patternProperties": {
412+
"\\p{Letter}cole": true
413+
},
414+
"additionalProperties": false
415+
},
416+
"tests": [
417+
{
418+
"description": "ascii character in json string",
419+
"data": { "l'ecole": "pas de vraie vie" },
420+
"valid": true
421+
},
422+
{
423+
"description": "literal unicode character in json string",
424+
"data": { "l'école": "pas de vraie vie" },
425+
"valid": true
426+
},
427+
{
428+
"description": "unicode character in hex format in string",
429+
"data": { "l'\u00e9cole": "pas de vraie vie" },
430+
"valid": true
431+
},
432+
{
433+
"description": "unicode matching is case-sensitive",
434+
"data": { "L'ÉCOLE": "PAS DE VRAIE VIE" },
435+
"valid": false
436+
}
437+
]
438+
},
439+
{
440+
"description": "\\w in patternProperties matches [A-Za-z0-9_], not unicode letters",
441+
"schema": {
442+
"type": "object",
443+
"patternProperties": {
444+
"\\wcole": true
445+
},
446+
"additionalProperties": false
447+
},
448+
"tests": [
449+
{
450+
"description": "ascii character in json string",
451+
"data": { "l'ecole": "pas de vraie vie" },
452+
"valid": true
453+
},
454+
{
455+
"description": "literal unicode character in json string",
456+
"data": { "l'école": "pas de vraie vie" },
457+
"valid": false
458+
},
459+
{
460+
"description": "unicode character in hex format in string",
461+
"data": { "l'\u00e9cole": "pas de vraie vie" },
462+
"valid": false
463+
},
464+
{
465+
"description": "unicode matching is case-sensitive",
466+
"data": { "L'ÉCOLE": "PAS DE VRAIE VIE" },
467+
"valid": false
468+
}
469+
]
470+
},
471+
{
472+
"description": "unicode characters do not match ascii ranges",
473+
"schema": {
474+
"type": "object",
475+
"patternProperties": {
476+
"[a-z]cole": true
477+
},
478+
"additionalProperties": false
479+
},
480+
"tests": [
481+
{
482+
"description": "literal unicode character in json string",
483+
"data": { "l'école": "pas de vraie vie" },
484+
"valid": false
485+
},
486+
{
487+
"description": "unicode character in hex format in string",
488+
"data": { "l'\u00e9cole": "pas de vraie vie" },
489+
"valid": false
490+
},
491+
{
492+
"description": "ascii characters match",
493+
"data": { "l'ecole": "pas de vraie vie" },
494+
"valid": true
495+
}
496+
]
497+
},
498+
{
499+
"description": "\\d in patternProperties matches [0-9], not unicode digits",
500+
"schema": {
501+
"type": "object",
502+
"patternProperties": {
503+
"^\\d+$": true
504+
},
505+
"additionalProperties": false
506+
},
507+
"tests": [
508+
{
509+
"description": "ascii digits",
510+
"data": { "42": "life, the universe, and everything" },
511+
"valid": true
512+
},
513+
{
514+
"description": "ascii non-digits",
515+
"data": { "-%#": "spending the year dead for tax reasons" },
516+
"valid": false
517+
},
518+
{
519+
"description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)",
520+
"data": { "৪২": "khajit has wares if you have coin" },
521+
"valid": false
522+
}
523+
]
524+
},
525+
{
526+
"description": "unicode digits are more than 0 through 9",
527+
"schema": {
528+
"type": "object",
529+
"patternProperties": {
530+
"^\\p{digit}+$": true
531+
},
532+
"additionalProperties": false
533+
},
534+
"tests": [
535+
{
536+
"description": "ascii digits",
537+
"data": { "42": "life, the universe, and everything" },
538+
"valid": true
539+
},
540+
{
541+
"description": "ascii non-digits",
542+
"data": { "-%#": "spending the year dead for tax reasons" },
543+
"valid": false
544+
},
545+
{
546+
"description": "non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)",
547+
"data": { "৪২": "khajit has wares if you have coin" },
548+
"valid": true
549+
}
550+
]
291551
}
292552
]

0 commit comments

Comments
 (0)