| # This set of tests exercises the serialization/deserialization and code copy |
| # functions in the library. It does not use UTF or JIT. |
| |
| #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 |