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