edc6a4e59c
of redundant code in pcre2_match().
177 lines
3.2 KiB
Plaintext
177 lines
3.2 KiB
Plaintext
# Tests of \C when Unicode support is available. Note that \C is not supported
|
||
# for DFA matching in UTF mode, so this test is not run with -dfa. The output
|
||
# of this test is different in 8-, 16-, and 32-bit modes. Some tests may match
|
||
# in some widths and not in others.
|
||
|
||
/ab\Cde/utf,info
|
||
Capturing subpattern count = 0
|
||
Contains \C
|
||
Options: utf
|
||
First code unit = 'a'
|
||
Last code unit = 'e'
|
||
Subject length lower bound = 0
|
||
abXde
|
||
0: abXde
|
||
|
||
# This should produce an error diagnostic (\C in UTF lookbehind) in 8-bit and
|
||
# 16-bit modes, but not in 32-bit mode.
|
||
|
||
/(?<=ab\Cde)X/utf
|
||
Failed: error 136 at offset 0: \C is not allowed in a lookbehind assertion in UTF-8 mode
|
||
ab!deXYZ
|
||
|
||
# Autopossessification tests
|
||
|
||
/\C+\X \X+\C/Bx
|
||
------------------------------------------------------------------
|
||
Bra
|
||
AllAny+
|
||
extuni
|
||
extuni+
|
||
AllAny
|
||
Ket
|
||
End
|
||
------------------------------------------------------------------
|
||
|
||
/\C+\X \X+\C/Bx,utf
|
||
------------------------------------------------------------------
|
||
Bra
|
||
Anybyte+
|
||
extuni
|
||
extuni+
|
||
Anybyte
|
||
Ket
|
||
End
|
||
------------------------------------------------------------------
|
||
|
||
/\C\X*TӅ;
|
||
{0,6}\v+
|
||
F
|
||
/utf
|
||
\= Expect no match
|
||
Ӆ\x0a
|
||
No match
|
||
|
||
/\C(\W?ſ)'?{{/utf
|
||
\= Expect no match
|
||
\\C(\\W?ſ)'?{{
|
||
No match
|
||
|
||
/X(\C{3})/utf
|
||
X\x{1234}
|
||
0: X\x{1234}
|
||
1: \x{1234}
|
||
X\x{11234}Y
|
||
0: X\x{f0}\x{91}\x{88}
|
||
1: \x{f0}\x{91}\x{88}
|
||
X\x{11234}YZ
|
||
0: X\x{f0}\x{91}\x{88}
|
||
1: \x{f0}\x{91}\x{88}
|
||
|
||
/X(\C{4})/utf
|
||
X\x{1234}YZ
|
||
0: X\x{1234}Y
|
||
1: \x{1234}Y
|
||
X\x{11234}YZ
|
||
0: X\x{11234}
|
||
1: \x{11234}
|
||
X\x{11234}YZW
|
||
0: X\x{11234}
|
||
1: \x{11234}
|
||
|
||
/X\C*/utf
|
||
XYZabcdce
|
||
0: XYZabcdce
|
||
|
||
/X\C*?/utf
|
||
XYZabcde
|
||
0: X
|
||
|
||
/X\C{3,5}/utf
|
||
Xabcdefg
|
||
0: Xabcde
|
||
X\x{1234}
|
||
0: X\x{1234}
|
||
X\x{1234}YZ
|
||
0: X\x{1234}YZ
|
||
X\x{1234}\x{512}
|
||
0: X\x{1234}\x{512}
|
||
X\x{1234}\x{512}YZ
|
||
0: X\x{1234}\x{512}
|
||
X\x{11234}Y
|
||
0: X\x{11234}Y
|
||
X\x{11234}YZ
|
||
0: X\x{11234}Y
|
||
X\x{11234}\x{512}
|
||
0: X\x{11234}\x{d4}
|
||
X\x{11234}\x{512}YZ
|
||
0: X\x{11234}\x{d4}
|
||
X\x{11234}\x{512}\x{11234}Z
|
||
0: X\x{11234}\x{d4}
|
||
|
||
/X\C{3,5}?/utf
|
||
Xabcdefg
|
||
0: Xabc
|
||
X\x{1234}
|
||
0: X\x{1234}
|
||
X\x{1234}YZ
|
||
0: X\x{1234}
|
||
X\x{1234}\x{512}
|
||
0: X\x{1234}
|
||
X\x{11234}Y
|
||
0: X\x{f0}\x{91}\x{88}
|
||
X\x{11234}YZ
|
||
0: X\x{f0}\x{91}\x{88}
|
||
X\x{11234}\x{512}YZ
|
||
0: X\x{f0}\x{91}\x{88}
|
||
X\x{11234}
|
||
0: X\x{f0}\x{91}\x{88}
|
||
|
||
/a\Cb/utf
|
||
aXb
|
||
0: aXb
|
||
a\nb
|
||
0: a\x{0a}b
|
||
a\x{100}b
|
||
No match
|
||
|
||
/a\C\Cb/utf
|
||
a\x{100}b
|
||
0: a\x{100}b
|
||
a\x{12257}b
|
||
No match
|
||
a\x{12257}\x{11234}b
|
||
No match
|
||
|
||
/ab\Cde/utf
|
||
abXde
|
||
0: abXde
|
||
|
||
# This one is here not because it's different to Perl, but because the way
|
||
# the captured single code unit is displayed. (In Perl it becomes a character,
|
||
# and you can't tell the difference.)
|
||
|
||
/X(\C)(.*)/utf
|
||
X\x{1234}
|
||
0: X\x{1234}
|
||
1: \x{e1}
|
||
2: \x{88}\x{b4}
|
||
X\nabc
|
||
0: X\x{0a}abc
|
||
1: \x{0a}
|
||
2: abc
|
||
|
||
# This one is here because Perl gives out a grumbly error message (quite
|
||
# correctly, but that messes up comparisons).
|
||
|
||
/a\Cb/utf
|
||
\= Expect no match in 8-bit mode
|
||
a\x{100}b
|
||
No match
|
||
|
||
/^ab\C/utf,no_start_optimize
|
||
\= Expect no match - tests \C at end of subject
|
||
ab
|
||
No match
|
||
|
||
# End of testinput22
|