• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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** Ignored when compiled pattern is stacked with 'push': mark
24/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
25
26#save testsaved2
27#pattern -push
28
29# Reload the patterns, then pop them one by one and check them.
30
31#load testsaved1
32#load testsaved2
33
34#pop info
35Capturing subpattern count = 2
36Max back reference = 2
37Named capturing subpatterns:
38  n   1
39  n   2
40Options: dupnames
41Starting code units: b f
42Subject length lower bound = 6
43    foofoo
44 0: foofoo
45 1: foo
46    barbar
47 0: barbar
48 1: <unset>
49 2: bar
50
51#pop mark
52    C
53 0: C
54 1: C
55MK: A
56\= Expect no match
57    D
58No match, mark = A
59
60#pop
61    AmanaplanacanalPanama
62 0: AmanaplanacanalPanama
63 1: <unset>
64 2: <unset>
65 3: AmanaplanacanalPanama
66 4: A
67
68#pop info
69Capturing subpattern count = 4
70Named capturing subpatterns:
71  ADDR          2
72  ADDRESS_PAT   4
73  NAME          1
74  NAME_PAT      3
75Options: extended
76Subject length lower bound = 3
77    metcalfe 33
78 0: metcalfe 33
79 1: metcalfe
80 2: 33
81
82# Check for an error when different tables are used.
83
84/abc/push,tables=1
85/xyz/push,tables=2
86#save testsaved1
87Serialization failed: error -30: patterns do not all use the same character tables
88
89#pop
90    xyz
91 0: xyz
92
93#pop
94    abc
95 0: abc
96
97#pop should give an error
98** Can't pop off an empty stack
99    pqr
100
101/abcd/pushcopy
102    abcd
103 0: abcd
104
105#pop
106    abcd
107 0: abcd
108
109#pop should give an error
110** Can't pop off an empty stack
111
112/abcd/push
113#popcopy
114    abcd
115 0: abcd
116
117#pop
118    abcd
119 0: abcd
120
121/abcd/push
122#save testsaved1
123#pop should give an error
124** Can't pop off an empty stack
125
126#load testsaved1
127#popcopy
128    abcd
129 0: abcd
130
131#pop
132    abcd
133 0: abcd
134
135#pop should give an error
136** Can't pop off an empty stack
137
138/abcd/pushtablescopy
139    abcd
140 0: abcd
141
142#popcopy
143    abcd
144 0: abcd
145
146#pop
147    abcd
148 0: abcd
149
150# Must only specify one of these
151
152//push,pushcopy
153** Not allowed together: push pushcopy
154
155//push,pushtablescopy
156** Not allowed together: push pushtablescopy
157
158//pushcopy,pushtablescopy
159** Not allowed together: pushcopy pushtablescopy
160
161# End of testinput20
162