# 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_PAT))\s+(?(?&ADDRESS_PAT)) (?(DEFINE) (?[a-z]+) (?\d+) )/x /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i #save testsaved1 # Do it again for some more patterns. /(*MARK:A)(*SKIP:B)(C|X)/mark /(?:(?foo)|(?bar))\k/dupnames #save testsaved2 #pattern -push # Reload the patterns, then pop them one by one and check them. #load testsaved1 #load testsaved2 #pop info foofoo barbar #pop mark C \= Expect no match D #pop AmanaplanacanalPanama #pop info metcalfe 33 # Check for an error when different tables are used. /abc/push,tables=1 /xyz/push,tables=2 #save testsaved1 #pop xyz #pop abc #pop should give an error pqr /abcd/pushcopy abcd #pop abcd #pop should give an error /abcd/push #popcopy abcd #pop abcd /abcd/push #save testsaved1 #pop should give an error #load testsaved1 #popcopy abcd #pop abcd #pop should give an error /abcd/pushtablescopy abcd #popcopy abcd #pop abcd # Must only specify one of these //push,pushcopy //push,pushtablescopy //pushcopy,pushtablescopy # End of testinput20