123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- # 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
|