375 lines
14 KiB
Plaintext
375 lines
14 KiB
Plaintext
# This set of tests is for the 16-bit and 32-bit libraries' basic (non-UTF)
|
||
# features that are not compatible with the 8-bit library, or which give
|
||
# different output in 16-bit or 32-bit mode. The output for the two widths is
|
||
# different, so they have separate output files.
|
||
|
||
#forbid_utf
|
||
#newline_default LF ANY ANYCRLF
|
||
|
||
/[^\x{c4}]/IB
|
||
|
||
/\x{100}/I
|
||
|
||
/ (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* # optional leading comment
|
||
(?: (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
|
|
||
" (?: # opening quote...
|
||
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
|
||
| # or
|
||
\\ [^\x80-\xff] # Escaped something (something != CR)
|
||
)* " # closing quote
|
||
) # initial word
|
||
(?: (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* \. (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
|
|
||
" (?: # opening quote...
|
||
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
|
||
| # or
|
||
\\ [^\x80-\xff] # Escaped something (something != CR)
|
||
)* " # closing quote
|
||
) )* # further okay, if led by a period
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* @ (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
| \[ # [
|
||
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
|
||
\] # ]
|
||
) # initial subdomain
|
||
(?: #
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* \. # if led by a period...
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
| \[ # [
|
||
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
|
||
\] # ]
|
||
) # ...further okay
|
||
)*
|
||
# address
|
||
| # or
|
||
(?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
|
|
||
" (?: # opening quote...
|
||
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
|
||
| # or
|
||
\\ [^\x80-\xff] # Escaped something (something != CR)
|
||
)* " # closing quote
|
||
) # one word, optionally followed by....
|
||
(?:
|
||
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
|
||
\(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) | # comments, or...
|
||
|
||
" (?: # opening quote...
|
||
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
|
||
| # or
|
||
\\ [^\x80-\xff] # Escaped something (something != CR)
|
||
)* " # closing quote
|
||
# quoted strings
|
||
)*
|
||
< (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* # leading <
|
||
(?: @ (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
| \[ # [
|
||
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
|
||
\] # ]
|
||
) # initial subdomain
|
||
(?: #
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* \. # if led by a period...
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
| \[ # [
|
||
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
|
||
\] # ]
|
||
) # ...further okay
|
||
)*
|
||
|
||
(?: (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* , (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* @ (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
| \[ # [
|
||
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
|
||
\] # ]
|
||
) # initial subdomain
|
||
(?: #
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* \. # if led by a period...
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
| \[ # [
|
||
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
|
||
\] # ]
|
||
) # ...further okay
|
||
)*
|
||
)* # further okay, if led by comma
|
||
: # closing colon
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* )? # optional route
|
||
(?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
|
|
||
" (?: # opening quote...
|
||
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
|
||
| # or
|
||
\\ [^\x80-\xff] # Escaped something (something != CR)
|
||
)* " # closing quote
|
||
) # initial word
|
||
(?: (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* \. (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
|
|
||
" (?: # opening quote...
|
||
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
|
||
| # or
|
||
\\ [^\x80-\xff] # Escaped something (something != CR)
|
||
)* " # closing quote
|
||
) )* # further okay, if led by a period
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* @ (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
| \[ # [
|
||
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
|
||
\] # ]
|
||
) # initial subdomain
|
||
(?: #
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* \. # if led by a period...
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* (?:
|
||
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
|
||
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
||
| \[ # [
|
||
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
|
||
\] # ]
|
||
) # ...further okay
|
||
)*
|
||
# address spec
|
||
(?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* > # trailing >
|
||
# name and address
|
||
) (?: [\040\t] | \(
|
||
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
|
||
\) )* # optional trailing comment
|
||
/Ix
|
||
|
||
/[\h]/B
|
||
>\x09<
|
||
|
||
/[\h]+/B
|
||
>\x09\x20\xa0<
|
||
|
||
/[\v]/B
|
||
|
||
/[^\h]/B
|
||
|
||
/\h+/I
|
||
\x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
|
||
\x{3001}\x{2fff}\x{200a}\xa0\x{2000}
|
||
|
||
/[\h\x{dc00}]+/IB
|
||
\x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
|
||
\x{3001}\x{2fff}\x{200a}\xa0\x{2000}
|
||
|
||
/\H+/I
|
||
\x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
|
||
\x{2000}\x{200a}\x{1fff}\x{200b}
|
||
\x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
|
||
\xa0\x{3000}\x9f\xa1\x{2fff}\x{3001}
|
||
|
||
/[\H\x{d800}]+/
|
||
\x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
|
||
\x{2000}\x{200a}\x{1fff}\x{200b}
|
||
\x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
|
||
\xa0\x{3000}\x9f\xa1\x{2fff}\x{3001}
|
||
|
||
/\v+/I
|
||
\x{2027}\x{2030}\x{2028}\x{2029}
|
||
\x09\x0e\x84\x86\x85\x0a\x0b\x0c\x0d
|
||
|
||
/[\v\x{dc00}]+/IB
|
||
\x{2027}\x{2030}\x{2028}\x{2029}
|
||
\x09\x0e\x84\x86\x85\x0a\x0b\x0c\x0d
|
||
|
||
/\V+/I
|
||
\x{2028}\x{2029}\x{2027}\x{2030}
|
||
\x85\x0a\x0b\x0c\x0d\x09\x0e\x84\x86
|
||
|
||
/[\V\x{d800}]+/
|
||
\x{2028}\x{2029}\x{2027}\x{2030}
|
||
\x85\x0a\x0b\x0c\x0d\x09\x0e\x84\x86
|
||
|
||
/\R+/I,bsr=unicode
|
||
\x{2027}\x{2030}\x{2028}\x{2029}
|
||
\x09\x0e\x84\x86\x85\x0a\x0b\x0c\x0d
|
||
|
||
/\x{d800}\x{d7ff}\x{dc00}\x{dc00}\x{dcff}\x{dd00}/I
|
||
\x{d800}\x{d7ff}\x{dc00}\x{dc00}\x{dcff}\x{dd00}
|
||
|
||
/[^\x{80}][^\x{ff}][^\x{100}][^\x{1000}][^\x{ffff}]/B
|
||
|
||
/[^\x{80}][^\x{ff}][^\x{100}][^\x{1000}][^\x{ffff}]/Bi
|
||
|
||
/[^\x{100}]*[^\x{1000}]+[^\x{ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{100}]{5,6}+/B
|
||
|
||
/[^\x{100}]*[^\x{1000}]+[^\x{ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{100}]{5,6}+/Bi
|
||
|
||
/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF)XX/mark
|
||
XX
|
||
|
||
/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE)XX/mark
|
||
XX
|
||
|
||
/\u0100/B,alt_bsux,allow_empty_class,match_unset_backref
|
||
|
||
/[\u0100-\u0200]/B,alt_bsux,allow_empty_class,match_unset_backref
|
||
|
||
/\ud800/B,alt_bsux,allow_empty_class,match_unset_backref
|
||
|
||
/^\x{ffff}+/i
|
||
\x{ffff}
|
||
|
||
/^\x{ffff}?/i
|
||
\x{ffff}
|
||
|
||
/^\x{ffff}*/i
|
||
\x{ffff}
|
||
|
||
/^\x{ffff}{3}/i
|
||
\x{ffff}\x{ffff}\x{ffff}
|
||
|
||
/^\x{ffff}{0,3}/i
|
||
\x{ffff}
|
||
|
||
/[^\x00-a]{12,}[^b-\xff]*/B
|
||
|
||
/[^\s]*\s* [^\W]+\W+ [^\d]*?\d0 [^\d\w]{4,6}?\w*A/B
|
||
|
||
/a*[b-\x{200}]?a#a*[b-\x{200}]?b#[a-f]*[g-\x{200}]*#[g-\x{200}]*[a-c]*#[g-\x{200}]*[a-h]*/B
|
||
|
||
/^[\x{1234}\x{4321}]{2,4}?/
|
||
\x{1234}\x{1234}\x{1234}
|
||
|
||
# Check maximum non-UTF character size for the 16-bit library.
|
||
|
||
/\x{ffff}/
|
||
A\x{ffff}B
|
||
|
||
/\x{10000}/
|
||
|
||
/\o{20000}/
|
||
|
||
# Check maximum character size for the 32-bit library. These will all give
|
||
# errors in the 16-bit library.
|
||
|
||
/\x{110000}/
|
||
|
||
/\x{7fffffff}/
|
||
|
||
/\x{80000000}/
|
||
|
||
/\x{ffffffff}/
|
||
|
||
/\x{100000000}/
|
||
|
||
/\o{17777777777}/
|
||
|
||
/\o{20000000000}/
|
||
|
||
/\o{37777777777}/
|
||
|
||
/\o{40000000000}/
|
||
|
||
/\x{7fffffff}\x{7fffffff}/I
|
||
|
||
/\x{80000000}\x{80000000}/I
|
||
|
||
/\x{ffffffff}\x{ffffffff}/I
|
||
|
||
# Non-UTF characters
|
||
|
||
/.{2,3}/
|
||
\x{400000}\x{400001}\x{400002}\x{400003}
|
||
|
||
/\x{400000}\x{800000}/IBi
|
||
|
||
# Check character ranges
|
||
|
||
/[\H]/IB
|
||
|
||
/[\V]/IB
|
||
|
||
/(*THEN:\[A]{65501})/expand
|
||
|
||
# We can use pcre2test's utf8_input modifier to create wide pattern characters,
|
||
# even though this test is run when UTF is not supported.
|
||
|
||
/ab<61><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z/utf8_input
|
||
ab<61><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z
|
||
ab\x{7fffffff}z
|
||
|
||
/ab<61><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z/utf8_input
|
||
ab<61><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z
|
||
ab\x{ffffffff}z
|
||
|
||
/ab<61>Az/utf8_input
|
||
ab<61>Az
|
||
ab\x{80000041}z
|
||
|
||
/(?i:A{1,}\6666666666)/
|
||
A\x{1b6}6666666
|
||
|
||
# End of testinput11
|