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 = 2 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 EbrahimiFailed: error 136 at offset 0: \C is not allowed in a lookbehind assertion in UTF-8 mode 21*22dc650dSSadaf Ebrahimi ab!deXYZ 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 Anybyte+ 40*22dc650dSSadaf Ebrahimi extuni 41*22dc650dSSadaf Ebrahimi extuni+ 42*22dc650dSSadaf Ebrahimi Anybyte 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 Ebrahimi 0: X\x{1234} 63*22dc650dSSadaf Ebrahimi 1: \x{1234} 64*22dc650dSSadaf Ebrahimi X\x{11234}Y 65*22dc650dSSadaf Ebrahimi 0: X\x{f0}\x{91}\x{88} 66*22dc650dSSadaf Ebrahimi 1: \x{f0}\x{91}\x{88} 67*22dc650dSSadaf Ebrahimi X\x{11234}YZ 68*22dc650dSSadaf Ebrahimi 0: X\x{f0}\x{91}\x{88} 69*22dc650dSSadaf Ebrahimi 1: \x{f0}\x{91}\x{88} 70*22dc650dSSadaf Ebrahimi 71*22dc650dSSadaf Ebrahimi/X(\C{4})/utf 72*22dc650dSSadaf Ebrahimi X\x{1234}YZ 73*22dc650dSSadaf Ebrahimi 0: X\x{1234}Y 74*22dc650dSSadaf Ebrahimi 1: \x{1234}Y 75*22dc650dSSadaf Ebrahimi X\x{11234}YZ 76*22dc650dSSadaf Ebrahimi 0: X\x{11234} 77*22dc650dSSadaf Ebrahimi 1: \x{11234} 78*22dc650dSSadaf Ebrahimi X\x{11234}YZW 79*22dc650dSSadaf Ebrahimi 0: X\x{11234} 80*22dc650dSSadaf Ebrahimi 1: \x{11234} 81*22dc650dSSadaf Ebrahimi 82*22dc650dSSadaf Ebrahimi/X\C*/utf 83*22dc650dSSadaf Ebrahimi XYZabcdce 84*22dc650dSSadaf Ebrahimi 0: XYZabcdce 85*22dc650dSSadaf Ebrahimi 86*22dc650dSSadaf Ebrahimi/X\C*?/utf 87*22dc650dSSadaf Ebrahimi XYZabcde 88*22dc650dSSadaf Ebrahimi 0: X 89*22dc650dSSadaf Ebrahimi 90*22dc650dSSadaf Ebrahimi/X\C{3,5}/utf 91*22dc650dSSadaf Ebrahimi Xabcdefg 92*22dc650dSSadaf Ebrahimi 0: Xabcde 93*22dc650dSSadaf Ebrahimi X\x{1234} 94*22dc650dSSadaf Ebrahimi 0: X\x{1234} 95*22dc650dSSadaf Ebrahimi X\x{1234}YZ 96*22dc650dSSadaf Ebrahimi 0: X\x{1234}YZ 97*22dc650dSSadaf Ebrahimi X\x{1234}\x{512} 98*22dc650dSSadaf Ebrahimi 0: X\x{1234}\x{512} 99*22dc650dSSadaf Ebrahimi X\x{1234}\x{512}YZ 100*22dc650dSSadaf Ebrahimi 0: X\x{1234}\x{512} 101*22dc650dSSadaf Ebrahimi X\x{11234}Y 102*22dc650dSSadaf Ebrahimi 0: X\x{11234}Y 103*22dc650dSSadaf Ebrahimi X\x{11234}YZ 104*22dc650dSSadaf Ebrahimi 0: X\x{11234}Y 105*22dc650dSSadaf Ebrahimi X\x{11234}\x{512} 106*22dc650dSSadaf Ebrahimi 0: X\x{11234}\x{d4} 107*22dc650dSSadaf Ebrahimi X\x{11234}\x{512}YZ 108*22dc650dSSadaf Ebrahimi 0: X\x{11234}\x{d4} 109*22dc650dSSadaf Ebrahimi X\x{11234}\x{512}\x{11234}Z 110*22dc650dSSadaf Ebrahimi 0: X\x{11234}\x{d4} 111*22dc650dSSadaf Ebrahimi 112*22dc650dSSadaf Ebrahimi/X\C{3,5}?/utf 113*22dc650dSSadaf Ebrahimi Xabcdefg 114*22dc650dSSadaf Ebrahimi 0: Xabc 115*22dc650dSSadaf Ebrahimi X\x{1234} 116*22dc650dSSadaf Ebrahimi 0: X\x{1234} 117*22dc650dSSadaf Ebrahimi X\x{1234}YZ 118*22dc650dSSadaf Ebrahimi 0: X\x{1234} 119*22dc650dSSadaf Ebrahimi X\x{1234}\x{512} 120*22dc650dSSadaf Ebrahimi 0: X\x{1234} 121*22dc650dSSadaf Ebrahimi X\x{11234}Y 122*22dc650dSSadaf Ebrahimi 0: X\x{f0}\x{91}\x{88} 123*22dc650dSSadaf Ebrahimi X\x{11234}YZ 124*22dc650dSSadaf Ebrahimi 0: X\x{f0}\x{91}\x{88} 125*22dc650dSSadaf Ebrahimi X\x{11234}\x{512}YZ 126*22dc650dSSadaf Ebrahimi 0: X\x{f0}\x{91}\x{88} 127*22dc650dSSadaf Ebrahimi X\x{11234} 128*22dc650dSSadaf Ebrahimi 0: X\x{f0}\x{91}\x{88} 129*22dc650dSSadaf Ebrahimi 130*22dc650dSSadaf Ebrahimi/a\Cb/utf 131*22dc650dSSadaf Ebrahimi aXb 132*22dc650dSSadaf Ebrahimi 0: aXb 133*22dc650dSSadaf Ebrahimi a\nb 134*22dc650dSSadaf Ebrahimi 0: a\x{0a}b 135*22dc650dSSadaf Ebrahimi a\x{100}b 136*22dc650dSSadaf EbrahimiNo match 137*22dc650dSSadaf Ebrahimi 138*22dc650dSSadaf Ebrahimi/a\C\Cb/utf 139*22dc650dSSadaf Ebrahimi a\x{100}b 140*22dc650dSSadaf Ebrahimi 0: a\x{100}b 141*22dc650dSSadaf Ebrahimi a\x{12257}b 142*22dc650dSSadaf EbrahimiNo match 143*22dc650dSSadaf Ebrahimi a\x{12257}\x{11234}b 144*22dc650dSSadaf EbrahimiNo match 145*22dc650dSSadaf Ebrahimi 146*22dc650dSSadaf Ebrahimi/ab\Cde/utf 147*22dc650dSSadaf Ebrahimi abXde 148*22dc650dSSadaf Ebrahimi 0: abXde 149*22dc650dSSadaf Ebrahimi 150*22dc650dSSadaf Ebrahimi# This one is here not because it's different to Perl, but because the way 151*22dc650dSSadaf Ebrahimi# the captured single code unit is displayed. (In Perl it becomes a character, 152*22dc650dSSadaf Ebrahimi# and you can't tell the difference.) 153*22dc650dSSadaf Ebrahimi 154*22dc650dSSadaf Ebrahimi/X(\C)(.*)/utf 155*22dc650dSSadaf Ebrahimi X\x{1234} 156*22dc650dSSadaf Ebrahimi 0: X\x{1234} 157*22dc650dSSadaf Ebrahimi 1: \x{e1} 158*22dc650dSSadaf Ebrahimi 2: \x{88}\x{b4} 159*22dc650dSSadaf Ebrahimi X\nabc 160*22dc650dSSadaf Ebrahimi 0: X\x{0a}abc 161*22dc650dSSadaf Ebrahimi 1: \x{0a} 162*22dc650dSSadaf Ebrahimi 2: abc 163*22dc650dSSadaf Ebrahimi 164*22dc650dSSadaf Ebrahimi# This one is here because Perl gives out a grumbly error message (quite 165*22dc650dSSadaf Ebrahimi# correctly, but that messes up comparisons). 166*22dc650dSSadaf Ebrahimi 167*22dc650dSSadaf Ebrahimi/a\Cb/utf 168*22dc650dSSadaf Ebrahimi\= Expect no match in 8-bit mode 169*22dc650dSSadaf Ebrahimi a\x{100}b 170*22dc650dSSadaf EbrahimiNo match 171*22dc650dSSadaf Ebrahimi 172*22dc650dSSadaf Ebrahimi/^ab\C/utf,no_start_optimize 173*22dc650dSSadaf Ebrahimi\= Expect no match - tests \C at end of subject 174*22dc650dSSadaf Ebrahimi ab 175*22dc650dSSadaf EbrahimiNo match 176*22dc650dSSadaf Ebrahimi 177*22dc650dSSadaf Ebrahimi/\C[^\v]+\x80/utf 178*22dc650dSSadaf Ebrahimi [AΏBŀC] 179*22dc650dSSadaf EbrahimiNo match 180*22dc650dSSadaf Ebrahimi 181*22dc650dSSadaf Ebrahimi/\C[^\d]+\x80/utf 182*22dc650dSSadaf Ebrahimi [AΏBŀC] 183*22dc650dSSadaf EbrahimiNo match 184*22dc650dSSadaf Ebrahimi 185# End of testinput22 186