blob: ca7eb54f3f3d5e0533bc0dd4fbfb61fa3de0e2c6 [file] [log] [blame]
Tristan Matthews04616462013-11-14 16:09:34 -05001/-- This set of tests checks the API, internals, and non-Perl stuff for UTF-8
2 support, excluding Unicode properties. --/
3
4/\x{100}/8DZ
5
6/\x{1000}/8DZ
7
8/\x{10000}/8DZ
9
10/\x{100000}/8DZ
11
12/\x{1000000}/8DZ
13
14/\x{4000000}/8DZ
15
16/\x{7fffFFFF}/8DZ
17
18/[\x{ff}]/8DZ
19
20/[\x{100}]/8DZ
21
22/\x{ffffffff}/8
23
24/\x{100000000}/8
25
26/^\x{100}a\x{1234}/8
27 \x{100}a\x{1234}bcd
28
29/\x80/8DZ
30
31/\xff/8DZ
32
33/\x{0041}\x{2262}\x{0391}\x{002e}/DZ8
34 \x{0041}\x{2262}\x{0391}\x{002e}
35
36/\x{D55c}\x{ad6d}\x{C5B4}/DZ8
37 \x{D55c}\x{ad6d}\x{C5B4}
38
39/\x{65e5}\x{672c}\x{8a9e}/DZ8
40 \x{65e5}\x{672c}\x{8a9e}
41
42/\x{80}/DZ8
43
44/\x{084}/DZ8
45
46/\x{104}/DZ8
47
48/\x{861}/DZ8
49
50/\x{212ab}/DZ8
51
52/.{3,5}X/DZ8
53 \x{212ab}\x{212ab}\x{212ab}\x{861}X
54
55
56/.{3,5}?/DZ8
57 \x{212ab}\x{212ab}\x{212ab}\x{861}
58
59/(?<=\C)X/8
60 Should produce an error diagnostic
61
62/-- This one is here not because it's different to Perl, but because the way
63the captured single-byte is displayed. (In Perl it becomes a character, and you
64can't tell the difference.) --/
65
66/X(\C)(.*)/8
67 X\x{1234}
68 X\nabc
69
70/-- This one is here because Perl gives out a grumbly error message (quite
71correctly, but that messes up comparisons). --/
72
73/a\Cb/8
74 *** Failers
75 a\x{100}b
76
77/^[ab]/8DZ
78 bar
79 *** Failers
80 c
81 \x{ff}
82 \x{100}
83
84/^[^ab]/8DZ
85 c
86 \x{ff}
87 \x{100}
88 *** Failers
89 aaa
90
91/[^ab\xC0-\xF0]/8SDZ
92 \x{f1}
93 \x{bf}
94 \x{100}
95 \x{1000}
96 *** Failers
97 \x{c0}
98 \x{f0}
99
100/Ā{3,4}/8SDZ
101 \x{100}\x{100}\x{100}\x{100\x{100}
102
103/(\x{100}+|x)/8SDZ
104
105/(\x{100}*a|x)/8SDZ
106
107/(\x{100}{0,2}a|x)/8SDZ
108
109/(\x{100}{1,2}a|x)/8SDZ
110
111/\x{100}*(\d+|"(?1)")/8
112 1234
113 "1234"
114 \x{100}1234
115 "\x{100}1234"
116 \x{100}\x{100}12ab
117 \x{100}\x{100}"12"
118 *** Failers
119 \x{100}\x{100}abcd
120
121/\x{100}/8DZ
122
123/\x{100}*/8DZ
124
125/a\x{100}*/8DZ
126
127/ab\x{100}*/8DZ
128
129/a\x{100}\x{101}*/8DZ
130
131/a\x{100}\x{101}+/8DZ
132
133/\x{100}*A/8DZ
134 A
135
136/\x{100}*\d(?R)/8DZ
137
138/[^\x{c4}]/DZ
139
140/[^\x{c4}]/8DZ
141
142/[\x{100}]/8DZ
143 \x{100}
144 Z\x{100}
145 \x{100}Z
146 *** Failers
147
148/[Z\x{100}]/8DZ
149 Z\x{100}
150 \x{100}
151 \x{100}Z
152 *** Failers
153
154/[\x{200}-\x{100}]/8
155
156/[Ā-Ą]/8
157 \x{100}
158 \x{104}
159 *** Failers
160 \x{105}
161 \x{ff}
162
163/[z-\x{100}]/8DZ
164
165/[z\Qa-d]Ā\E]/8DZ
166 \x{100}
167 Ā
168
169/[\xFF]/DZ
170 >\xff<
171
172/[\xff]/DZ8
173 >\x{ff}<
174
175/[^\xFF]/DZ
176
177/[^\xff]/8DZ
178
179/[Ä-Ü]/8
180 Ö # Matches without Study
181 \x{d6}
182
183/[Ä-Ü]/8S
184 Ö <-- Same with Study
185 \x{d6}
186
187/[\x{c4}-\x{dc}]/8
188 Ö # Matches without Study
189 \x{d6}
190
191/[\x{c4}-\x{dc}]/8S
192 Ö <-- Same with Study
193 \x{d6}
194
195/[Ã]/8
196
197/Ã/8
198
199/ÃÃÃxxx/8
200
201/ÃÃÃxxx/8?DZSS
202
203/abc/8
204 Ã]
205 Ã
206 ÃÃÃ
207 ÃÃÃ\?
208 \xe1\x88
209 \P\xe1\x88
210 \P\P\xe1\x88
211 XX\xea
212 \O0XX\xea
213 \O1XX\xea
214 \O2XX\xea
215 XX\xf1
216 XX\xf8
217 XX\xfc
218 ZZ\xea\xaf\x20YY
219 ZZ\xfd\xbf\xbf\x2f\xbf\xbfYY
220 ZZ\xfd\xbf\xbf\xbf\x2f\xbfYY
221 ZZ\xfd\xbf\xbf\xbf\xbf\x2fYY
222 ZZ\xffYY
223 ZZ\xfeYY
224
225/anything/8
226 \xc0\x80
227 \xc1\x8f
228 \xe0\x9f\x80
229 \xf0\x8f\x80\x80
230 \xf8\x87\x80\x80\x80
231 \xfc\x83\x80\x80\x80\x80
232 \xfe\x80\x80\x80\x80\x80
233 \xff\x80\x80\x80\x80\x80
234 \xc3\x8f
235 \xe0\xaf\x80
236 \xe1\x80\x80
237 \xf0\x9f\x80\x80
238 \xf1\x8f\x80\x80
239 \xf8\x88\x80\x80\x80
240 \xf9\x87\x80\x80\x80
241 \xfc\x84\x80\x80\x80\x80
242 \xfd\x83\x80\x80\x80\x80
243 \?\xf8\x88\x80\x80\x80
244 \?\xf9\x87\x80\x80\x80
245 \?\xfc\x84\x80\x80\x80\x80
246 \?\xfd\x83\x80\x80\x80\x80
247
248/\x{100}abc(xyz(?1))/8DZ
249
250/[^\x{100}]abc(xyz(?1))/8DZ
251
252/[ab\x{100}]abc(xyz(?1))/8DZ
253
254/(\x{100}(b(?2)c))?/DZ8
255
256/(\x{100}(b(?2)c)){0,2}/DZ8
257
258/(\x{100}(b(?1)c))?/DZ8
259
260/(\x{100}(b(?1)c)){0,2}/DZ8
261
262/\W/8
263 A.B
264 A\x{100}B
265
266/\w/8
267 \x{100}X
268
269/a\x{1234}b/P8
270 a\x{1234}b
271
272/^ˆ´/8DZ
273
274/\777/I
275
276/\777/8I
277 \x{1ff}
278 \777
279
280/\x{100}*\d/8DZ
281
282/\x{100}*\s/8DZ
283
284/\x{100}*\w/8DZ
285
286/\x{100}*\D/8DZ
287
288/\x{100}*\S/8DZ
289
290/\x{100}*\W/8DZ
291
292/\x{100}+\x{200}/8DZ
293
294/\x{100}+X/8DZ
295
296/X+\x{200}/8DZ
297
298/()()()()()()()()()()
299 ()()()()()()()()()()
300 ()()()()()()()()()()
301 ()()()()()()()()()()
302 A (x) (?41) B/8x
303 AxxB
304
305/^[\x{100}\E-\Q\E\x{150}]/BZ8
306
307/^[\QĀ\E-\QŐ\E]/BZ8
308
309/^[\QĀ\E-\QŐ\E/BZ8
310
311/^abc./mgx8<any>
312 abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
313
314/abc.$/mgx8<any>
315 abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
316
317/^a\Rb/8<bsr_unicode>
318 a\nb
319 a\rb
320 a\r\nb
321 a\x0bb
322 a\x0cb
323 a\x{85}b
324 a\x{2028}b
325 a\x{2029}b
326 ** Failers
327 a\n\rb
328
329/^a\R*b/8<bsr_unicode>
330 ab
331 a\nb
332 a\rb
333 a\r\nb
334 a\x0bb
335 a\x0c\x{2028}\x{2029}b
336 a\x{85}b
337 a\n\rb
338 a\n\r\x{85}\x0cb
339
340/^a\R+b/8<bsr_unicode>
341 a\nb
342 a\rb
343 a\r\nb
344 a\x0bb
345 a\x0c\x{2028}\x{2029}b
346 a\x{85}b
347 a\n\rb
348 a\n\r\x{85}\x0cb
349 ** Failers
350 ab
351
352/^a\R{1,3}b/8<bsr_unicode>
353 a\nb
354 a\n\rb
355 a\n\r\x{85}b
356 a\r\n\r\nb
357 a\r\n\r\n\r\nb
358 a\n\r\n\rb
359 a\n\n\r\nb
360 ** Failers
361 a\n\n\n\rb
362 a\r
363
364/\H\h\V\v/8
365 X X\x0a
366 X\x09X\x0b
367 ** Failers
368 \x{a0} X\x0a
369
370/\H*\h+\V?\v{3,4}/8
371 \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
372 \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
373 \x09\x20\x{a0}\x0a\x0b\x0c
374 ** Failers
375 \x09\x20\x{a0}\x0a\x0b
376
377/\H\h\V\v/8
378 \x{3001}\x{3000}\x{2030}\x{2028}
379 X\x{180e}X\x{85}
380 ** Failers
381 \x{2009} X\x0a
382
383/\H*\h+\V?\v{3,4}/8
384 \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
385 \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
386 \x09\x20\x{202f}\x0a\x0b\x0c
387 ** Failers
388 \x09\x{200a}\x{a0}\x{2028}\x0b
389
390/[\h]/8BZ
391 >\x{1680}
392
393/[\h]{3,}/8BZ
394 >\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}<
395
396/[\v]/8BZ
397
398/[\H]/8BZ
399
400/[\V]/8BZ
401
402/.*$/8<any>
403 \x{1ec5}
404
405/-- This tests the stricter UTF-8 check according to RFC 3629. --/
406
407/X/8
408 \x{0}\x{d7ff}\x{e000}\x{10ffff}
409 \x{d800}
410 \x{d800}\?
411 \x{da00}
412 \x{da00}\?
413 \x{dfff}
414 \x{dfff}\?
415 \x{110000}
416 \x{110000}\?
417 \x{2000000}
418 \x{2000000}\?
419 \x{7fffffff}
420 \x{7fffffff}\?
421
422/a\Rb/I8<bsr_anycrlf>
423 a\rb
424 a\nb
425 a\r\nb
426 ** Failers
427 a\x{85}b
428 a\x0bb
429
430/a\Rb/I8<bsr_unicode>
431 a\rb
432 a\nb
433 a\r\nb
434 a\x{85}b
435 a\x0bb
436 ** Failers
437 a\x{85}b\<bsr_anycrlf>
438 a\x0bb\<bsr_anycrlf>
439
440/a\R?b/I8<bsr_anycrlf>
441 a\rb
442 a\nb
443 a\r\nb
444 ** Failers
445 a\x{85}b
446 a\x0bb
447
448/a\R?b/I8<bsr_unicode>
449 a\rb
450 a\nb
451 a\r\nb
452 a\x{85}b
453 a\x0bb
454 ** Failers
455 a\x{85}b\<bsr_anycrlf>
456 a\x0bb\<bsr_anycrlf>
457
458/.*a.*=.b.*/8<ANY>
459 QQQ\x{2029}ABCaXYZ=!bPQR
460 ** Failers
461 a\x{2029}b
462 \x61\xe2\x80\xa9\x62
463
464/[[:a\x{100}b:]]/8
465
466/a[^]b/<JS>8
467 a\x{1234}b
468 a\nb
469 ** Failers
470 ab
471
472/a[^]+b/<JS>8
473 aXb
474 a\nX\nX\x{1234}b
475 ** Failers
476 ab
477
478/(\x{de})\1/
479 \x{de}\x{de}
480 \x{123}
481
482/X/8f<any>
483 A\x{1ec5}ABCXYZ
484
485/(*UTF8)\x{1234}/
486 abcd\x{1234}pqr
487
488/(*CRLF)(*UTF8)(*BSR_UNICODE)a\Rb/I
489
490/Xa{2,4}b/8
491 X\P
492 Xa\P
493 Xaa\P
494 Xaaa\P
495 Xaaaa\P
496
497/Xa{2,4}?b/8
498 X\P
499 Xa\P
500 Xaa\P
501 Xaaa\P
502 Xaaaa\P
503
504/Xa{2,4}+b/8
505 X\P
506 Xa\P
507 Xaa\P
508 Xaaa\P
509 Xaaaa\P
510
511/X\x{123}{2,4}b/8
512 X\P
513 X\x{123}\P
514 X\x{123}\x{123}\P
515 X\x{123}\x{123}\x{123}\P
516 X\x{123}\x{123}\x{123}\x{123}\P
517
518/X\x{123}{2,4}?b/8
519 X\P
520 X\x{123}\P
521 X\x{123}\x{123}\P
522 X\x{123}\x{123}\x{123}\P
523 X\x{123}\x{123}\x{123}\x{123}\P
524
525/X\x{123}{2,4}+b/8
526 X\P
527 X\x{123}\P
528 X\x{123}\x{123}\P
529 X\x{123}\x{123}\x{123}\P
530 X\x{123}\x{123}\x{123}\x{123}\P
531
532/X\x{123}{2,4}b/8
533 Xx\P
534 X\x{123}x\P
535 X\x{123}\x{123}x\P
536 X\x{123}\x{123}\x{123}x\P
537 X\x{123}\x{123}\x{123}\x{123}x\P
538
539/X\x{123}{2,4}?b/8
540 Xx\P
541 X\x{123}x\P
542 X\x{123}\x{123}x\P
543 X\x{123}\x{123}\x{123}x\P
544 X\x{123}\x{123}\x{123}\x{123}x\P
545
546/X\x{123}{2,4}+b/8
547 Xx\P
548 X\x{123}x\P
549 X\x{123}\x{123}x\P
550 X\x{123}\x{123}\x{123}x\P
551 X\x{123}\x{123}\x{123}\x{123}x\P
552
553/X\d{2,4}b/8
554 X\P
555 X3\P
556 X33\P
557 X333\P
558 X3333\P
559
560/X\d{2,4}?b/8
561 X\P
562 X3\P
563 X33\P
564 X333\P
565 X3333\P
566
567/X\d{2,4}+b/8
568 X\P
569 X3\P
570 X33\P
571 X333\P
572 X3333\P
573
574/X\D{2,4}b/8
575 X\P
576 Xa\P
577 Xaa\P
578 Xaaa\P
579 Xaaaa\P
580
581/X\D{2,4}?b/8
582 X\P
583 Xa\P
584 Xaa\P
585 Xaaa\P
586 Xaaaa\P
587
588/X\D{2,4}+b/8
589 X\P
590 Xa\P
591 Xaa\P
592 Xaaa\P
593 Xaaaa\P
594
595/X\D{2,4}b/8
596 X\P
597 X\x{123}\P
598 X\x{123}\x{123}\P
599 X\x{123}\x{123}\x{123}\P
600 X\x{123}\x{123}\x{123}\x{123}\P
601
602/X\D{2,4}?b/8
603 X\P
604 X\x{123}\P
605 X\x{123}\x{123}\P
606 X\x{123}\x{123}\x{123}\P
607 X\x{123}\x{123}\x{123}\x{123}\P
608
609/X\D{2,4}+b/8
610 X\P
611 X\x{123}\P
612 X\x{123}\x{123}\P
613 X\x{123}\x{123}\x{123}\P
614 X\x{123}\x{123}\x{123}\x{123}\P
615
616/X[abc]{2,4}b/8
617 X\P
618 Xa\P
619 Xaa\P
620 Xaaa\P
621 Xaaaa\P
622
623/X[abc]{2,4}?b/8
624 X\P
625 Xa\P
626 Xaa\P
627 Xaaa\P
628 Xaaaa\P
629
630/X[abc]{2,4}+b/8
631 X\P
632 Xa\P
633 Xaa\P
634 Xaaa\P
635 Xaaaa\P
636
637/X[abc\x{123}]{2,4}b/8
638 X\P
639 X\x{123}\P
640 X\x{123}\x{123}\P
641 X\x{123}\x{123}\x{123}\P
642 X\x{123}\x{123}\x{123}\x{123}\P
643
644/X[abc\x{123}]{2,4}?b/8
645 X\P
646 X\x{123}\P
647 X\x{123}\x{123}\P
648 X\x{123}\x{123}\x{123}\P
649 X\x{123}\x{123}\x{123}\x{123}\P
650
651/X[abc\x{123}]{2,4}+b/8
652 X\P
653 X\x{123}\P
654 X\x{123}\x{123}\P
655 X\x{123}\x{123}\x{123}\P
656 X\x{123}\x{123}\x{123}\x{123}\P
657
658/X[^a]{2,4}b/8
659 X\P
660 Xz\P
661 Xzz\P
662 Xzzz\P
663 Xzzzz\P
664
665/X[^a]{2,4}?b/8
666 X\P
667 Xz\P
668 Xzz\P
669 Xzzz\P
670 Xzzzz\P
671
672/X[^a]{2,4}+b/8
673 X\P
674 Xz\P
675 Xzz\P
676 Xzzz\P
677 Xzzzz\P
678
679/X[^a]{2,4}b/8
680 X\P
681 X\x{123}\P
682 X\x{123}\x{123}\P
683 X\x{123}\x{123}\x{123}\P
684 X\x{123}\x{123}\x{123}\x{123}\P
685
686/X[^a]{2,4}?b/8
687 X\P
688 X\x{123}\P
689 X\x{123}\x{123}\P
690 X\x{123}\x{123}\x{123}\P
691 X\x{123}\x{123}\x{123}\x{123}\P
692
693/X[^a]{2,4}+b/8
694 X\P
695 X\x{123}\P
696 X\x{123}\x{123}\P
697 X\x{123}\x{123}\x{123}\P
698 X\x{123}\x{123}\x{123}\x{123}\P
699
700/(Y)X\1{2,4}b/8
701 YX\P
702 YXY\P
703 YXYY\P
704 YXYYY\P
705 YXYYYY\P
706
707/(Y)X\1{2,4}?b/8
708 YX\P
709 YXY\P
710 YXYY\P
711 YXYYY\P
712 YXYYYY\P
713
714/(Y)X\1{2,4}+b/8
715 YX\P
716 YXY\P
717 YXYY\P
718 YXYYY\P
719 YXYYYY\P
720
721/(\x{123})X\1{2,4}b/8
722 \x{123}X\P
723 \x{123}X\x{123}\P
724 \x{123}X\x{123}\x{123}\P
725 \x{123}X\x{123}\x{123}\x{123}\P
726 \x{123}X\x{123}\x{123}\x{123}\x{123}\P
727
728/(\x{123})X\1{2,4}?b/8
729 \x{123}X\P
730 \x{123}X\x{123}\P
731 \x{123}X\x{123}\x{123}\P
732 \x{123}X\x{123}\x{123}\x{123}\P
733 \x{123}X\x{123}\x{123}\x{123}\x{123}\P
734
735/(\x{123})X\1{2,4}+b/8
736 \x{123}X\P
737 \x{123}X\x{123}\P
738 \x{123}X\x{123}\x{123}\P
739 \x{123}X\x{123}\x{123}\x{123}\P
740 \x{123}X\x{123}\x{123}\x{123}\x{123}\P
741
742/\bthe cat\b/8
743 the cat\P
744 the cat\P\P
745
746/abcd*/8
747 xxxxabcd\P
748 xxxxabcd\P\P
749
750/abcd*/i8
751 xxxxabcd\P
752 xxxxabcd\P\P
753 XXXXABCD\P
754 XXXXABCD\P\P
755
756/abc\d*/8
757 xxxxabc1\P
758 xxxxabc1\P\P
759
760/(a)bc\1*/8
761 xxxxabca\P
762 xxxxabca\P\P
763
764/abc[de]*/8
765 xxxxabcde\P
766 xxxxabcde\P\P
767
768/X\W{3}X/8
769 \PX
770
771/\h/SI
772
773/\h/SI8
774 ABC\x{09}
775 ABC\x{20}
776 ABC\x{a0}
777 ABC\x{1680}
778 ABC\x{180e}
779 ABC\x{2000}
780 ABC\x{202f}
781 ABC\x{205f}
782 ABC\x{3000}
783
784/\v/SI
785
786/\v/SI8
787 ABC\x{0a}
788 ABC\x{0b}
789 ABC\x{0c}
790 ABC\x{0d}
791 ABC\x{85}
792 ABC\x{2028}
793
794/\R/SI
795
796/\R/SI8
797
798/\h*A/SI8
799 CDBABC
800
801/\v+A/SI8
802
803/\s?xxx\s/8SI
804
805/\sxxx\s/8T1
806 AB\x{85}xxx\x{a0}XYZ
807 AB\x{a0}xxx\x{85}XYZ
808
809/\sxxx\s/I8ST1
810 AB\x{85}xxx\x{a0}XYZ
811 AB\x{a0}xxx\x{85}XYZ
812
813/\S \S/8T1
814 \x{a2} \x{84}
815
816/\S \S/I8ST1
817 \x{a2} \x{84}
818 A Z
819
820'A#хц'8x<any>BZ
821
822'A#хц
823 PQ'8x<any>BZ
824
825/a+#хaa
826 z#XX?/8x<any>BZ
827
828/a+#хaa
829 z#х?/8x<any>BZ
830
831/\g{A}xxx#bXX(?'A'123) (?'A'456)/8x<any>BZ
832
833/\g{A}xxx#bх(?'A'123) (?'A'456)/8x<any>BZ
834
835/a+/8
836 a\x{123}aa\>1
837 a\x{123}aa\>2
838 a\x{123}aa\>3
839 a\x{123}aa\>4
840 a\x{123}aa\>5
841 a\x{123}aa\>6
842
843/^\cģ/8
844
845/(\R*)(.)/s8
846 \r\n
847 \r\r\n\n\r
848 \r\r\n\n\r\n
849
850/(\R)*(.)/s8
851 \r\n
852 \r\r\n\n\r
853 \r\r\n\n\r\n
854
855/\x{1234}+/iS8I
856
857/\x{1234}+?/iS8I
858
859/\x{1234}++/iS8I
860
861/\x{1234}{2}/iS8I
862
863/[^\x{1234}]+/iS8I
864
865/[^\x{1234}]+?/iS8I
866
867/[^\x{1234}]++/iS8I
868
869/[^\x{1234}]{2}/iS8I
870
871//<bsr_anycrlf><bsr_unicode>
872
873/f.*/
874 \P\Pfor
875
876/f.*/s
877 \P\Pfor
878
879/f.*/8
880 \P\Pfor
881
882/f.*/8s
883 \P\Pfor
884
885/-- End of testinput5 --/