| # This set of tests exercises the serialization/deserialization and code copy | |
| # functions in the library. The first section requires Unicode support; the | |
| # remaining tests do not use UTF. None of the tests use JIT. | |
| #if unicode | |
| # Six disjoint characters above 255 require character lists. Vary the name | |
| # length to exercise padding between the name table and the aligned lists. | |
| /(?<A>[\x{100}\x{200}\x{300}\x{400}\x{500}\x{600}])/utf,push | |
| /(?<AB>[\x{100}\x{200}\x{300}\x{400}\x{500}\x{600}])/utf,push | |
| /(?<ABC>[\x{100}\x{200}\x{300}\x{400}\x{500}\x{600}])/utf,push | |
| /(?<ABCD>[\x{100}\x{200}\x{300}\x{400}\x{500}\x{600}])/utf,push | |
| #save testsaved1 | |
| #load testsaved1 | |
| #pop | |
| \x{100} | |
| 0: \x{100} | |
| 1: \x{100} | |
| \x{600} | |
| 0: \x{600} | |
| 1: \x{600} | |
| \x{150} | |
| No match | |
| #pop | |
| \x{100} | |
| 0: \x{100} | |
| 1: \x{100} | |
| \x{600} | |
| 0: \x{600} | |
| 1: \x{600} | |
| \x{150} | |
| No match | |
| #pop | |
| \x{100} | |
| 0: \x{100} | |
| 1: \x{100} | |
| \x{600} | |
| 0: \x{600} | |
| 1: \x{600} | |
| \x{150} | |
| No match | |
| #pop | |
| \x{100} | |
| 0: \x{100} | |
| 1: \x{100} | |
| \x{600} | |
| 0: \x{600} | |
| 1: \x{600} | |
| \x{150} | |
| No match | |
| #endif | |
| #forbid_utf | |
| # Compile several patterns, push them onto the stack, and then write them | |
| # all to a file. | |
| #pattern push | |
| /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT)) | |
| (?(DEFINE) | |
| (?<NAME_PAT>[a-z]+) | |
| (?<ADDRESS_PAT>\d+) | |
| )/x | |
| /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i | |
| #save testsaved1 | |
| # Do it again for some more patterns. | |
| /(*MARK:A)(*SKIP:B)(C|X)/mark | |
| ** Ignored when compiled pattern is stacked with 'push': mark | |
| /(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames | |
| #save testsaved2 | |
| #pattern -push | |
| # Reload the patterns, then pop them one by one and check them. | |
| #load testsaved1 | |
| #load testsaved2 | |
| #pop info | |
| Capture group count = 2 | |
| Max back reference = 2 | |
| Named capture groups: | |
| n 1 | |
| n 2 | |
| Options: dupnames | |
| Starting code units: b f | |
| Subject length lower bound = 6 | |
| foofoo | |
| 0: foofoo | |
| 1: foo | |
| barbar | |
| 0: barbar | |
| 1: <unset> | |
| 2: bar | |
| #pop mark | |
| C | |
| 0: C | |
| 1: C | |
| MK: A | |
| \= Expect no match | |
| D | |
| No match, mark = A | |
| #pop | |
| AmanaplanacanalPanama | |
| 0: AmanaplanacanalPanama | |
| 1: <unset> | |
| 2: <unset> | |
| 3: AmanaplanacanalPanama | |
| 4: A | |
| #pop info | |
| Capture group count = 4 | |
| Named capture groups: | |
| ADDR 2 | |
| ADDRESS_PAT 4 | |
| NAME 1 | |
| NAME_PAT 3 | |
| Options: extended | |
| Subject length lower bound = 3 | |
| metcalfe 33 | |
| 0: metcalfe 33 | |
| 1: metcalfe | |
| 2: 33 | |
| # Check for an error when different tables are used. | |
| /abc/push,tables=1 | |
| /xyz/push,tables=2 | |
| #save testsaved1 | |
| Serialization failed: error -30: patterns do not all use the same character tables | |
| #pop | |
| xyz | |
| 0: xyz | |
| #pop | |
| abc | |
| 0: abc | |
| #pop should give an error | |
| ** Can't pop off an empty stack | |
| pqr | |
| /abcd/pushcopy | |
| abcd | |
| 0: abcd | |
| #pop | |
| abcd | |
| 0: abcd | |
| #pop should give an error | |
| ** Can't pop off an empty stack | |
| /abcd/push | |
| #popcopy | |
| abcd | |
| 0: abcd | |
| #pop | |
| abcd | |
| 0: abcd | |
| /abcd/push | |
| #save testsaved1 | |
| #pop should give an error | |
| ** Can't pop off an empty stack | |
| #load testsaved1 | |
| #popcopy | |
| abcd | |
| 0: abcd | |
| #pop | |
| abcd | |
| 0: abcd | |
| #pop should give an error | |
| ** Can't pop off an empty stack | |
| /abcd/pushtablescopy | |
| abcd | |
| 0: abcd | |
| #popcopy | |
| abcd | |
| 0: abcd | |
| #pop | |
| abcd | |
| 0: abcd | |
| # Must only specify one of these | |
| //push,pushcopy | |
| ** Not allowed together: push pushcopy | |
| //push,pushtablescopy | |
| ** Not allowed together: push pushtablescopy | |
| //pushcopy,pushtablescopy | |
| ** Not allowed together: pushcopy pushtablescopy | |
| # End of testinput20 |