162 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| # 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
 |