1*22dc650dSSadaf Ebrahimi# Tests of \C when Unicode support is available. Note that \C is not supported 2*22dc650dSSadaf Ebrahimi# for DFA matching in UTF mode, so this test is not run with -dfa. The output 3*22dc650dSSadaf Ebrahimi# of this test is different in 8-, 16-, and 32-bit modes. Some tests may match 4*22dc650dSSadaf Ebrahimi# in some widths and not in others. 5*22dc650dSSadaf Ebrahimi 6*22dc650dSSadaf Ebrahimi/ab\Cde/utf,info 7*22dc650dSSadaf EbrahimiCapture group count = 0 8*22dc650dSSadaf EbrahimiContains \C 9*22dc650dSSadaf EbrahimiOptions: utf 10*22dc650dSSadaf EbrahimiFirst code unit = 'a' 11*22dc650dSSadaf EbrahimiLast code unit = 'e' 12*22dc650dSSadaf EbrahimiSubject length lower bound = 5 13*22dc650dSSadaf Ebrahimi abXde 14*22dc650dSSadaf Ebrahimi 0: abXde 15*22dc650dSSadaf Ebrahimi 16*22dc650dSSadaf Ebrahimi# This should produce an error diagnostic (\C in UTF lookbehind) in 8-bit and 17*22dc650dSSadaf Ebrahimi# 16-bit modes, but not in 32-bit mode. 18*22dc650dSSadaf Ebrahimi 19*22dc650dSSadaf Ebrahimi/(?<=ab\Cde)X/utf 20*22dc650dSSadaf Ebrahimi ab!deXYZ 21*22dc650dSSadaf Ebrahimi 0: X 22*22dc650dSSadaf Ebrahimi 23*22dc650dSSadaf Ebrahimi# Autopossessification tests 24*22dc650dSSadaf Ebrahimi 25*22dc650dSSadaf Ebrahimi/\C+\X \X+\C/Bx 26*22dc650dSSadaf Ebrahimi------------------------------------------------------------------ 27*22dc650dSSadaf Ebrahimi Bra 28*22dc650dSSadaf Ebrahimi AllAny+ 29*22dc650dSSadaf Ebrahimi extuni 30*22dc650dSSadaf Ebrahimi extuni+ 31*22dc650dSSadaf Ebrahimi AllAny 32*22dc650dSSadaf Ebrahimi Ket 33*22dc650dSSadaf Ebrahimi End 34*22dc650dSSadaf Ebrahimi------------------------------------------------------------------ 35*22dc650dSSadaf Ebrahimi 36*22dc650dSSadaf Ebrahimi/\C+\X \X+\C/Bx,utf 37*22dc650dSSadaf Ebrahimi------------------------------------------------------------------ 38*22dc650dSSadaf Ebrahimi Bra 39*22dc650dSSadaf Ebrahimi AllAny+ 40*22dc650dSSadaf Ebrahimi extuni 41*22dc650dSSadaf Ebrahimi extuni+ 42*22dc650dSSadaf Ebrahimi AllAny 43*22dc650dSSadaf Ebrahimi Ket 44*22dc650dSSadaf Ebrahimi End 45*22dc650dSSadaf Ebrahimi------------------------------------------------------------------ 46*22dc650dSSadaf Ebrahimi 47*22dc650dSSadaf Ebrahimi/\C\X*TӅ; 48*22dc650dSSadaf Ebrahimi{0,6}\v+ 49*22dc650dSSadaf EbrahimiF 50*22dc650dSSadaf Ebrahimi/utf 51*22dc650dSSadaf Ebrahimi\= Expect no match 52*22dc650dSSadaf Ebrahimi Ӆ\x0a 53*22dc650dSSadaf EbrahimiNo match 54*22dc650dSSadaf Ebrahimi 55*22dc650dSSadaf Ebrahimi/\C(\W?ſ)'?{{/utf 56*22dc650dSSadaf Ebrahimi\= Expect no match 57*22dc650dSSadaf Ebrahimi \\C(\\W?ſ)'?{{ 58*22dc650dSSadaf EbrahimiNo match 59*22dc650dSSadaf Ebrahimi 60*22dc650dSSadaf Ebrahimi/X(\C{3})/utf 61*22dc650dSSadaf Ebrahimi X\x{1234} 62*22dc650dSSadaf EbrahimiNo match 63*22dc650dSSadaf Ebrahimi X\x{11234}Y 64*22dc650dSSadaf EbrahimiNo match 65*22dc650dSSadaf Ebrahimi X\x{11234}YZ 66*22dc650dSSadaf Ebrahimi 0: X\x{11234}YZ 67*22dc650dSSadaf Ebrahimi 1: \x{11234}YZ 68*22dc650dSSadaf Ebrahimi 69*22dc650dSSadaf Ebrahimi/X(\C{4})/utf 70*22dc650dSSadaf Ebrahimi X\x{1234}YZ 71*22dc650dSSadaf EbrahimiNo match 72*22dc650dSSadaf Ebrahimi X\x{11234}YZ 73*22dc650dSSadaf EbrahimiNo match 74*22dc650dSSadaf Ebrahimi X\x{11234}YZW 75*22dc650dSSadaf Ebrahimi 0: X\x{11234}YZW 76*22dc650dSSadaf Ebrahimi 1: \x{11234}YZW 77*22dc650dSSadaf Ebrahimi 78*22dc650dSSadaf Ebrahimi/X\C*/utf 79*22dc650dSSadaf Ebrahimi XYZabcdce 80*22dc650dSSadaf Ebrahimi 0: XYZabcdce 81*22dc650dSSadaf Ebrahimi 82*22dc650dSSadaf Ebrahimi/X\C*?/utf 83*22dc650dSSadaf Ebrahimi XYZabcde 84*22dc650dSSadaf Ebrahimi 0: X 85*22dc650dSSadaf Ebrahimi 86*22dc650dSSadaf Ebrahimi/X\C{3,5}/utf 87*22dc650dSSadaf Ebrahimi Xabcdefg 88*22dc650dSSadaf Ebrahimi 0: Xabcde 89*22dc650dSSadaf Ebrahimi X\x{1234} 90*22dc650dSSadaf EbrahimiNo match 91*22dc650dSSadaf Ebrahimi X\x{1234}YZ 92*22dc650dSSadaf Ebrahimi 0: X\x{1234}YZ 93*22dc650dSSadaf Ebrahimi X\x{1234}\x{512} 94*22dc650dSSadaf EbrahimiNo match 95*22dc650dSSadaf Ebrahimi X\x{1234}\x{512}YZ 96*22dc650dSSadaf Ebrahimi 0: X\x{1234}\x{512}YZ 97*22dc650dSSadaf Ebrahimi X\x{11234}Y 98*22dc650dSSadaf EbrahimiNo match 99*22dc650dSSadaf Ebrahimi X\x{11234}YZ 100*22dc650dSSadaf Ebrahimi 0: X\x{11234}YZ 101*22dc650dSSadaf Ebrahimi X\x{11234}\x{512} 102*22dc650dSSadaf EbrahimiNo match 103*22dc650dSSadaf Ebrahimi X\x{11234}\x{512}YZ 104*22dc650dSSadaf Ebrahimi 0: X\x{11234}\x{512}YZ 105*22dc650dSSadaf Ebrahimi X\x{11234}\x{512}\x{11234}Z 106*22dc650dSSadaf Ebrahimi 0: X\x{11234}\x{512}\x{11234}Z 107*22dc650dSSadaf Ebrahimi 108*22dc650dSSadaf Ebrahimi/X\C{3,5}?/utf 109*22dc650dSSadaf Ebrahimi Xabcdefg 110*22dc650dSSadaf Ebrahimi 0: Xabc 111*22dc650dSSadaf Ebrahimi X\x{1234} 112*22dc650dSSadaf EbrahimiNo match 113*22dc650dSSadaf Ebrahimi X\x{1234}YZ 114*22dc650dSSadaf Ebrahimi 0: X\x{1234}YZ 115*22dc650dSSadaf Ebrahimi X\x{1234}\x{512} 116*22dc650dSSadaf EbrahimiNo match 117*22dc650dSSadaf Ebrahimi X\x{11234}Y 118*22dc650dSSadaf EbrahimiNo match 119*22dc650dSSadaf Ebrahimi X\x{11234}YZ 120*22dc650dSSadaf Ebrahimi 0: X\x{11234}YZ 121*22dc650dSSadaf Ebrahimi X\x{11234}\x{512}YZ 122*22dc650dSSadaf Ebrahimi 0: X\x{11234}\x{512}Y 123*22dc650dSSadaf Ebrahimi X\x{11234} 124*22dc650dSSadaf EbrahimiNo match 125*22dc650dSSadaf Ebrahimi 126*22dc650dSSadaf Ebrahimi/a\Cb/utf 127*22dc650dSSadaf Ebrahimi aXb 128*22dc650dSSadaf Ebrahimi 0: aXb 129*22dc650dSSadaf Ebrahimi a\nb 130*22dc650dSSadaf Ebrahimi 0: a\x{0a}b 131*22dc650dSSadaf Ebrahimi a\x{100}b 132*22dc650dSSadaf Ebrahimi 0: a\x{100}b 133*22dc650dSSadaf Ebrahimi 134*22dc650dSSadaf Ebrahimi/a\C\Cb/utf 135*22dc650dSSadaf Ebrahimi a\x{100}b 136*22dc650dSSadaf EbrahimiNo match 137*22dc650dSSadaf Ebrahimi a\x{12257}b 138*22dc650dSSadaf EbrahimiNo match 139*22dc650dSSadaf Ebrahimi a\x{12257}\x{11234}b 140*22dc650dSSadaf Ebrahimi 0: a\x{12257}\x{11234}b 141*22dc650dSSadaf Ebrahimi 142*22dc650dSSadaf Ebrahimi/ab\Cde/utf 143*22dc650dSSadaf Ebrahimi abXde 144*22dc650dSSadaf Ebrahimi 0: abXde 145*22dc650dSSadaf Ebrahimi 146*22dc650dSSadaf Ebrahimi# This one is here not because it's different to Perl, but because the way 147*22dc650dSSadaf Ebrahimi# the captured single code unit is displayed. (In Perl it becomes a character, 148*22dc650dSSadaf Ebrahimi# and you can't tell the difference.) 149*22dc650dSSadaf Ebrahimi 150*22dc650dSSadaf Ebrahimi/X(\C)(.*)/utf 151*22dc650dSSadaf Ebrahimi X\x{1234} 152*22dc650dSSadaf Ebrahimi 0: X\x{1234} 153*22dc650dSSadaf Ebrahimi 1: \x{1234} 154*22dc650dSSadaf Ebrahimi 2: 155*22dc650dSSadaf Ebrahimi X\nabc 156*22dc650dSSadaf Ebrahimi 0: X\x{0a}abc 157*22dc650dSSadaf Ebrahimi 1: \x{0a} 158*22dc650dSSadaf Ebrahimi 2: abc 159*22dc650dSSadaf Ebrahimi 160*22dc650dSSadaf Ebrahimi# This one is here because Perl gives out a grumbly error message (quite 161*22dc650dSSadaf Ebrahimi# correctly, but that messes up comparisons). 162*22dc650dSSadaf Ebrahimi 163*22dc650dSSadaf Ebrahimi/a\Cb/utf 164*22dc650dSSadaf Ebrahimi\= Expect no match in 8-bit mode 165*22dc650dSSadaf Ebrahimi a\x{100}b 166*22dc650dSSadaf Ebrahimi 0: a\x{100}b 167*22dc650dSSadaf Ebrahimi 168*22dc650dSSadaf Ebrahimi/^ab\C/utf,no_start_optimize 169*22dc650dSSadaf Ebrahimi\= Expect no match - tests \C at end of subject 170*22dc650dSSadaf Ebrahimi ab 171*22dc650dSSadaf EbrahimiNo match 172*22dc650dSSadaf Ebrahimi 173*22dc650dSSadaf Ebrahimi/\C[^\v]+\x80/utf 174*22dc650dSSadaf Ebrahimi [AΏBŀC] 175*22dc650dSSadaf EbrahimiNo match 176*22dc650dSSadaf Ebrahimi 177*22dc650dSSadaf Ebrahimi/\C[^\d]+\x80/utf 178*22dc650dSSadaf Ebrahimi [AΏBŀC] 179*22dc650dSSadaf EbrahimiNo match 180*22dc650dSSadaf Ebrahimi 181# End of testinput22 182