# This set of tests exercises the serialization/deserialization 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
/(?:(?<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
    foofoo             
    barbar
    
#pop mark
    C
    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

# End of testinput19 
