 36af74cb25
			
		
	
	36af74cb25
	
	
	
		
			
			Some manual changes done to the library were lost with this update. They will be added in the next commit.
		
			
				
	
	
		
			151 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			2.2 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
 | |
| Capturing subpattern count = 2
 | |
| Max back reference = 2
 | |
| Named capturing subpatterns:
 | |
|   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
 | |
| Capturing subpattern count = 4
 | |
| Named capturing subpatterns:
 | |
|   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
 | |
| 
 | |
| # End of testinput20
 |