1# This set of tests exercises the serialization/deserialization and code copy
2# functions in the library. It does not use UTF or JIT.
3
4#forbid_utf
5
6# Compile several patterns, push them onto the stack, and then write them
7# all to a file.
8
9#pattern push
10
11/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
12  (?(DEFINE)
13  (?<NAME_PAT>[a-z]+)
14  (?<ADDRESS_PAT>\d+)
15  )/x
16/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
17
18#save testsaved1
19
20# Do it again for some more patterns.
21
22/(*MARK:A)(*SKIP:B)(C|X)/mark
23/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
24
25#save testsaved2
26#pattern -push
27
28# Reload the patterns, then pop them one by one and check them.
29
30#load testsaved1
31#load testsaved2
32
33#pop info
34    foofoo
35    barbar
36
37#pop mark
38    C
39\= Expect no match
40    D
41
42#pop
43    AmanaplanacanalPanama
44
45#pop info
46    metcalfe 33
47
48# Check for an error when different tables are used.
49
50/abc/push,tables=1
51/xyz/push,tables=2
52#save testsaved1
53
54#pop
55    xyz
56
57#pop
58    abc
59
60#pop should give an error
61    pqr
62
63/abcd/pushcopy
64    abcd
65
66#pop
67    abcd
68
69#pop should give an error
70
71/abcd/push
72#popcopy
73    abcd
74
75#pop
76    abcd
77
78/abcd/push
79#save testsaved1
80#pop should give an error
81
82#load testsaved1
83#popcopy
84    abcd
85
86#pop
87    abcd
88
89#pop should give an error
90
91/abcd/pushtablescopy
92    abcd
93
94#popcopy
95    abcd
96
97#pop
98    abcd
99
100# Must only specify one of these
101
102//push,pushcopy
103
104//push,pushtablescopy
105
106//pushcopy,pushtablescopy
107
108# End of testinput20
109