version 1.1.1.1, 2012/02/21 23:05:52
|
version 1.1.1.2, 2012/02/21 23:50:25
|
Line 1
|
Line 1
|
/-- This test is run only when JIT support is available. It checks for a | /-- This set of tests is run only with the 8-bit library. It starts with all |
successful and an unsuccessful JIT compile and save and restore behaviour, | the tests of the POSIX interface, because that is supported only with the |
and a couple of things that are different with JIT. --/ | 8-bit library. --/ |
|
|
/abc/S+I | /abc/P |
| abc |
| 0: abc |
| *** Failers |
| No match: POSIX code 17: match failed |
| |
| /^abc|def/P |
| abcdef |
| 0: abc |
| abcdef\B |
| 0: def |
| |
| /.*((abc)$|(def))/P |
| defabc |
| 0: defabc |
| 1: abc |
| 2: abc |
| \Zdefabc |
| 0: def |
| 1: def |
| 3: def |
| |
| /the quick brown fox/P |
| the quick brown fox |
| 0: the quick brown fox |
| *** Failers |
| No match: POSIX code 17: match failed |
| The Quick Brown Fox |
| No match: POSIX code 17: match failed |
| |
| /the quick brown fox/Pi |
| the quick brown fox |
| 0: the quick brown fox |
| The Quick Brown Fox |
| 0: The Quick Brown Fox |
| |
| /abc.def/P |
| *** Failers |
| No match: POSIX code 17: match failed |
| abc\ndef |
| No match: POSIX code 17: match failed |
| |
| /abc$/P |
| abc |
| 0: abc |
| abc\n |
| 0: abc |
| |
| /(abc)\2/P |
| Failed: POSIX code 15: bad back reference at offset 7 |
| |
| /(abc\1)/P |
| abc |
| No match: POSIX code 17: match failed |
| |
| /a*(b+)(z)(z)/P |
| aaaabbbbzzzz |
| 0: aaaabbbbzz |
| 1: bbbb |
| 2: z |
| 3: z |
| aaaabbbbzzzz\O0 |
| aaaabbbbzzzz\O1 |
| 0: aaaabbbbzz |
| aaaabbbbzzzz\O2 |
| 0: aaaabbbbzz |
| 1: bbbb |
| aaaabbbbzzzz\O3 |
| 0: aaaabbbbzz |
| 1: bbbb |
| 2: z |
| aaaabbbbzzzz\O4 |
| 0: aaaabbbbzz |
| 1: bbbb |
| 2: z |
| 3: z |
| aaaabbbbzzzz\O5 |
| 0: aaaabbbbzz |
| 1: bbbb |
| 2: z |
| 3: z |
| |
| /ab.cd/P |
| ab-cd |
| 0: ab-cd |
| ab=cd |
| 0: ab=cd |
| ** Failers |
| No match: POSIX code 17: match failed |
| ab\ncd |
| No match: POSIX code 17: match failed |
| |
| /ab.cd/Ps |
| ab-cd |
| 0: ab-cd |
| ab=cd |
| 0: ab=cd |
| ab\ncd |
| 0: ab\x0acd |
| |
| /a(b)c/PN |
| abc |
| Matched with REG_NOSUB |
| |
| /a(?P<name>b)c/PN |
| abc |
| Matched with REG_NOSUB |
| |
| /a?|b?/P |
| abc |
| 0: a |
| ** Failers |
| 0: |
| ddd\N |
| No match: POSIX code 17: match failed |
| |
| /\w+A/P |
| CDAAAAB |
| 0: CDAAAA |
| |
| /\w+A/PU |
| CDAAAAB |
| 0: CDA |
| |
| /\Biss\B/I+P |
| Mississippi |
| 0: iss |
| 0+ issippi |
| |
| /abc/\P |
| Failed: POSIX code 9: bad escape sequence at offset 4 |
| |
| /-- End of POSIX tests --/ |
| |
| /a\Cb/ |
| aXb |
| 0: aXb |
| a\nb |
| 0: a\x0ab |
| ** Failers (too big char) |
| No match |
| A\x{123}B |
| ** Character \x{123} is greater than 255 and UTF-8 mode is not enabled. |
| ** Truncation will probably give the wrong result. |
| No match |
| |
| /\x{100}/I |
| Failed: character value in \x{...} sequence is too large at offset 6 |
| |
| / (?: [\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 |
| /xSI |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options | Contains explicit CR or LF match |
First char = 'a' | Options: extended |
Need char = 'c' | No first char |
| No need char |
Subject length lower bound = 3 |
Subject length lower bound = 3 |
No set of starting bytes | Starting byte set: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8 |
JIT study was successful | 9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e |
| f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f |
|
|
/ab(*COMMIT)/S+I | /-- Although this saved pattern was compiled with link-size=2, it does no harm |
| to run this test with other link sizes because it is going to generated a |
| "compiled in wrong mode" error as soon as it is loaded, so the link size does |
| not matter. --/ |
| |
| <!testsaved16 |
| Compiled pattern loaded from testsaved16 |
| No study data |
| Error -28 from pcre_fullinfo(0) |
| Running in 8-bit mode but pattern was compiled in 16-bit mode |
| |
| /\h/SI |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
First char = 'a' | No first char |
Need char = 'b' | No need char |
Subject length lower bound = 2 | Subject length lower bound = 1 |
No set of starting bytes | Starting byte set: \x09 \x20 \xa0 |
JIT study was not successful | |
|
|
/abc/S+I>testsavedregex | /\v/SI |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
First char = 'a' | No first char |
Need char = 'c' | No need char |
Subject length lower bound = 3 | Subject length lower bound = 1 |
No set of starting bytes | Starting byte set: \x0a \x0b \x0c \x0d \x85 |
JIT study was successful | |
Compiled pattern written to testsavedregex | |
Study data written to testsavedregex | |
|
|
<testsavedregex | /\R/SI |
Compiled pattern loaded from testsavedregex | |
Study data loaded from testsavedregex | |
abc | |
0: abc | |
| |
/a*/SI | |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
No first char |
No first char |
No need char |
No need char |
Study returned NULL | Subject length lower bound = 1 |
| Starting byte set: \x0a \x0b \x0c \x0d \x85 |
|
|
/(?(R)a*(?1)|((?R))b)/S+ | /[\h]/BZ |
aaaabcde | ------------------------------------------------------------------ |
Error -27 (JIT stack limit reached) | Bra |
| [\x09 \xa0] |
| Ket |
| End |
| ------------------------------------------------------------------ |
| >\x09< |
| 0: \x09 |
| |
| /[\h]+/BZ |
| ------------------------------------------------------------------ |
| Bra |
| [\x09 \xa0]+ |
| Ket |
| End |
| ------------------------------------------------------------------ |
| >\x09\x20\xa0< |
| 0: \x09 \xa0 |
| |
| /[\v]/BZ |
| ------------------------------------------------------------------ |
| Bra |
| [\x0a-\x0d\x85] |
| Ket |
| End |
| ------------------------------------------------------------------ |
| |
| /[\H]/BZ |
| ------------------------------------------------------------------ |
| Bra |
| [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] |
| Ket |
| End |
| ------------------------------------------------------------------ |
| |
| /[^\h]/BZ |
| ------------------------------------------------------------------ |
| Bra |
| [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg) |
| Ket |
| End |
| ------------------------------------------------------------------ |
| |
| /[\V]/BZ |
| ------------------------------------------------------------------ |
| Bra |
| [\x00-\x09\x0e-\x84\x86-\xff] |
| Ket |
| End |
| ------------------------------------------------------------------ |
| |
| /[\x0a\V]/BZ |
| ------------------------------------------------------------------ |
| Bra |
| [\x00-\x0a\x0e-\x84\x86-\xff] |
| Ket |
| End |
| ------------------------------------------------------------------ |
| |
| /\777/I |
| Failed: octal value is greater than \377 in 8-bit non-UTF-8 mode at offset 3 |
|
|
/-- End of testinput14 --/ |
/-- End of testinput14 --/ |