# 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
/(?:(?<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
\= 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
