xref: /aosp_15_r20/external/pcre/testdata/testoutput20 (revision 22dc650d8ae982c6770746019a6f94af92b0f024)
1*22dc650dSSadaf Ebrahimi# This set of tests exercises the serialization/deserialization and code copy
2*22dc650dSSadaf Ebrahimi# functions in the library. It does not use UTF or JIT.
3*22dc650dSSadaf Ebrahimi
4*22dc650dSSadaf Ebrahimi#forbid_utf
5*22dc650dSSadaf Ebrahimi
6*22dc650dSSadaf Ebrahimi# Compile several patterns, push them onto the stack, and then write them
7*22dc650dSSadaf Ebrahimi# all to a file.
8*22dc650dSSadaf Ebrahimi
9*22dc650dSSadaf Ebrahimi#pattern push
10*22dc650dSSadaf Ebrahimi
11*22dc650dSSadaf Ebrahimi/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
12*22dc650dSSadaf Ebrahimi  (?(DEFINE)
13*22dc650dSSadaf Ebrahimi  (?<NAME_PAT>[a-z]+)
14*22dc650dSSadaf Ebrahimi  (?<ADDRESS_PAT>\d+)
15*22dc650dSSadaf Ebrahimi  )/x
16*22dc650dSSadaf Ebrahimi/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
17*22dc650dSSadaf Ebrahimi
18*22dc650dSSadaf Ebrahimi#save testsaved1
19*22dc650dSSadaf Ebrahimi
20*22dc650dSSadaf Ebrahimi# Do it again for some more patterns.
21*22dc650dSSadaf Ebrahimi
22*22dc650dSSadaf Ebrahimi/(*MARK:A)(*SKIP:B)(C|X)/mark
23*22dc650dSSadaf Ebrahimi** Ignored when compiled pattern is stacked with 'push': mark
24*22dc650dSSadaf Ebrahimi/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
25*22dc650dSSadaf Ebrahimi
26*22dc650dSSadaf Ebrahimi#save testsaved2
27*22dc650dSSadaf Ebrahimi#pattern -push
28*22dc650dSSadaf Ebrahimi
29*22dc650dSSadaf Ebrahimi# Reload the patterns, then pop them one by one and check them.
30*22dc650dSSadaf Ebrahimi
31*22dc650dSSadaf Ebrahimi#load testsaved1
32*22dc650dSSadaf Ebrahimi#load testsaved2
33*22dc650dSSadaf Ebrahimi
34*22dc650dSSadaf Ebrahimi#pop info
35*22dc650dSSadaf EbrahimiCapture group count = 2
36*22dc650dSSadaf EbrahimiMax back reference = 2
37*22dc650dSSadaf EbrahimiNamed capture groups:
38*22dc650dSSadaf Ebrahimi  n   1
39*22dc650dSSadaf Ebrahimi  n   2
40*22dc650dSSadaf EbrahimiOptions: dupnames
41*22dc650dSSadaf EbrahimiStarting code units: b f
42*22dc650dSSadaf EbrahimiSubject length lower bound = 6
43*22dc650dSSadaf Ebrahimi    foofoo
44*22dc650dSSadaf Ebrahimi 0: foofoo
45*22dc650dSSadaf Ebrahimi 1: foo
46*22dc650dSSadaf Ebrahimi    barbar
47*22dc650dSSadaf Ebrahimi 0: barbar
48*22dc650dSSadaf Ebrahimi 1: <unset>
49*22dc650dSSadaf Ebrahimi 2: bar
50*22dc650dSSadaf Ebrahimi
51*22dc650dSSadaf Ebrahimi#pop mark
52*22dc650dSSadaf Ebrahimi    C
53*22dc650dSSadaf Ebrahimi 0: C
54*22dc650dSSadaf Ebrahimi 1: C
55*22dc650dSSadaf EbrahimiMK: A
56*22dc650dSSadaf Ebrahimi\= Expect no match
57*22dc650dSSadaf Ebrahimi    D
58*22dc650dSSadaf EbrahimiNo match, mark = A
59*22dc650dSSadaf Ebrahimi
60*22dc650dSSadaf Ebrahimi#pop
61*22dc650dSSadaf Ebrahimi    AmanaplanacanalPanama
62*22dc650dSSadaf Ebrahimi 0: AmanaplanacanalPanama
63*22dc650dSSadaf Ebrahimi 1: <unset>
64*22dc650dSSadaf Ebrahimi 2: <unset>
65*22dc650dSSadaf Ebrahimi 3: AmanaplanacanalPanama
66*22dc650dSSadaf Ebrahimi 4: A
67*22dc650dSSadaf Ebrahimi
68*22dc650dSSadaf Ebrahimi#pop info
69*22dc650dSSadaf EbrahimiCapture group count = 4
70*22dc650dSSadaf EbrahimiNamed capture groups:
71*22dc650dSSadaf Ebrahimi  ADDR          2
72*22dc650dSSadaf Ebrahimi  ADDRESS_PAT   4
73*22dc650dSSadaf Ebrahimi  NAME          1
74*22dc650dSSadaf Ebrahimi  NAME_PAT      3
75*22dc650dSSadaf EbrahimiOptions: extended
76*22dc650dSSadaf EbrahimiSubject length lower bound = 3
77*22dc650dSSadaf Ebrahimi    metcalfe 33
78*22dc650dSSadaf Ebrahimi 0: metcalfe 33
79*22dc650dSSadaf Ebrahimi 1: metcalfe
80*22dc650dSSadaf Ebrahimi 2: 33
81*22dc650dSSadaf Ebrahimi
82*22dc650dSSadaf Ebrahimi# Check for an error when different tables are used.
83*22dc650dSSadaf Ebrahimi
84*22dc650dSSadaf Ebrahimi/abc/push,tables=1
85*22dc650dSSadaf Ebrahimi/xyz/push,tables=2
86*22dc650dSSadaf Ebrahimi#save testsaved1
87*22dc650dSSadaf EbrahimiSerialization failed: error -30: patterns do not all use the same character tables
88*22dc650dSSadaf Ebrahimi
89*22dc650dSSadaf Ebrahimi#pop
90*22dc650dSSadaf Ebrahimi    xyz
91*22dc650dSSadaf Ebrahimi 0: xyz
92*22dc650dSSadaf Ebrahimi
93*22dc650dSSadaf Ebrahimi#pop
94*22dc650dSSadaf Ebrahimi    abc
95*22dc650dSSadaf Ebrahimi 0: abc
96*22dc650dSSadaf Ebrahimi
97*22dc650dSSadaf Ebrahimi#pop should give an error
98*22dc650dSSadaf Ebrahimi** Can't pop off an empty stack
99*22dc650dSSadaf Ebrahimi    pqr
100*22dc650dSSadaf Ebrahimi
101*22dc650dSSadaf Ebrahimi/abcd/pushcopy
102*22dc650dSSadaf Ebrahimi    abcd
103*22dc650dSSadaf Ebrahimi 0: abcd
104*22dc650dSSadaf Ebrahimi
105*22dc650dSSadaf Ebrahimi#pop
106*22dc650dSSadaf Ebrahimi    abcd
107*22dc650dSSadaf Ebrahimi 0: abcd
108*22dc650dSSadaf Ebrahimi
109*22dc650dSSadaf Ebrahimi#pop should give an error
110*22dc650dSSadaf Ebrahimi** Can't pop off an empty stack
111*22dc650dSSadaf Ebrahimi
112*22dc650dSSadaf Ebrahimi/abcd/push
113*22dc650dSSadaf Ebrahimi#popcopy
114*22dc650dSSadaf Ebrahimi    abcd
115*22dc650dSSadaf Ebrahimi 0: abcd
116*22dc650dSSadaf Ebrahimi
117*22dc650dSSadaf Ebrahimi#pop
118*22dc650dSSadaf Ebrahimi    abcd
119*22dc650dSSadaf Ebrahimi 0: abcd
120*22dc650dSSadaf Ebrahimi
121*22dc650dSSadaf Ebrahimi/abcd/push
122*22dc650dSSadaf Ebrahimi#save testsaved1
123*22dc650dSSadaf Ebrahimi#pop should give an error
124*22dc650dSSadaf Ebrahimi** Can't pop off an empty stack
125*22dc650dSSadaf Ebrahimi
126*22dc650dSSadaf Ebrahimi#load testsaved1
127*22dc650dSSadaf Ebrahimi#popcopy
128*22dc650dSSadaf Ebrahimi    abcd
129*22dc650dSSadaf Ebrahimi 0: abcd
130*22dc650dSSadaf Ebrahimi
131*22dc650dSSadaf Ebrahimi#pop
132*22dc650dSSadaf Ebrahimi    abcd
133*22dc650dSSadaf Ebrahimi 0: abcd
134*22dc650dSSadaf Ebrahimi
135*22dc650dSSadaf Ebrahimi#pop should give an error
136*22dc650dSSadaf Ebrahimi** Can't pop off an empty stack
137*22dc650dSSadaf Ebrahimi
138*22dc650dSSadaf Ebrahimi/abcd/pushtablescopy
139*22dc650dSSadaf Ebrahimi    abcd
140*22dc650dSSadaf Ebrahimi 0: abcd
141*22dc650dSSadaf Ebrahimi
142*22dc650dSSadaf Ebrahimi#popcopy
143*22dc650dSSadaf Ebrahimi    abcd
144*22dc650dSSadaf Ebrahimi 0: abcd
145*22dc650dSSadaf Ebrahimi
146*22dc650dSSadaf Ebrahimi#pop
147*22dc650dSSadaf Ebrahimi    abcd
148*22dc650dSSadaf Ebrahimi 0: abcd
149*22dc650dSSadaf Ebrahimi
150*22dc650dSSadaf Ebrahimi# Must only specify one of these
151*22dc650dSSadaf Ebrahimi
152*22dc650dSSadaf Ebrahimi//push,pushcopy
153*22dc650dSSadaf Ebrahimi** Not allowed together: push pushcopy
154*22dc650dSSadaf Ebrahimi
155*22dc650dSSadaf Ebrahimi//push,pushtablescopy
156*22dc650dSSadaf Ebrahimi** Not allowed together: push pushtablescopy
157*22dc650dSSadaf Ebrahimi
158*22dc650dSSadaf Ebrahimi//pushcopy,pushtablescopy
159*22dc650dSSadaf Ebrahimi** Not allowed together: pushcopy pushtablescopy
160*22dc650dSSadaf Ebrahimi
161*22dc650dSSadaf Ebrahimi# End of testinput20
162