• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This is a specialized test for checking, when PCRE2 is compiled with the
2# EBCDIC option but in an ASCII environment, that newline, white space, and \c
3# functionality is working. It catches cases where explicit values such as 0x0a
4# have been used instead of names like CHAR_LF. Needless to say, it is not a
5# genuine EBCDIC test! In patterns, alphabetic characters that follow a
6# backslash must be in EBCDIC code. In data, NL, NEL, LF, ESC, and DEL must be
7# in EBCDIC, but can of course be specified as escapes.
8
9# Test default newline and variations
10
11/^A/m
12    ABC
13 0: A
14    12\x15ABC
15 0: A
16
17/^A/m,newline=any
18    12\x15ABC
19 0: A
20    12\x0dABC
21 0: A
22    12\x0d\x15ABC
23 0: A
24    12\x25ABC
25 0: A
26
27/^A/m,newline=anycrlf
28    12\x15ABC
29 0: A
30    12\x0dABC
31 0: A
32    12\x0d\x15ABC
33 0: A
34    ** Fail
35No match
36    12\x25ABC
37No match
38
39# Test \h
40
41/^A\�/
42    A B
43 0: A\x20
44    A\x41B
45 0: AA
46
47# Test \H
48
49/^A\�/
50    AB
51 0: AB
52    A\x42B
53 0: AB
54    ** Fail
55No match
56    A B
57No match
58    A\x41B
59No match
60
61# Test \R
62
63/^A\�/
64    A\x15B
65 0: A\x15
66    A\x0dB
67 0: A\x0d
68    A\x25B
69 0: A\x25
70    A\x0bB
71 0: A\x0b
72    A\x0cB
73 0: A\x0c
74    ** Fail
75No match
76    A B
77No match
78
79# Test \v
80
81/^A\�/
82    A\x15B
83 0: A\x15
84    A\x0dB
85 0: A\x0d
86    A\x25B
87 0: A\x25
88    A\x0bB
89 0: A\x0b
90    A\x0cB
91 0: A\x0c
92    ** Fail
93No match
94    A B
95No match
96
97# Test \V
98
99/^A\�/
100    A B
101 0: A\x20
102    ** Fail
103No match
104    A\x15B
105No match
106    A\x0dB
107No match
108    A\x25B
109No match
110    A\x0bB
111No match
112    A\x0cB
113No match
114
115# For repeated items, use an atomic group so that the output is the same
116# for DFA matching (otherwise it may show multiple matches).
117
118# Test \h+
119
120/^A(?>\�+)/
121    A B
122 0: A\x20
123
124# Test \H+
125
126/^A(?>\�+)/
127    AB
128 0: AB
129    ** Fail
130No match
131    A B
132No match
133
134# Test \R+
135
136/^A(?>\�+)/
137    A\x15B
138 0: A\x15
139    A\x0dB
140 0: A\x0d
141    A\x25B
142 0: A\x25
143    A\x0bB
144 0: A\x0b
145    A\x0cB
146 0: A\x0c
147    ** Fail
148No match
149    A B
150No match
151
152# Test \v+
153
154/^A(?>\�+)/
155    A\x15B
156 0: A\x15
157    A\x0dB
158 0: A\x0d
159    A\x25B
160 0: A\x25
161    A\x0bB
162 0: A\x0b
163    A\x0cB
164 0: A\x0c
165    ** Fail
166No match
167    A B
168No match
169
170# Test \V+
171
172/^A(?>\�+)/
173    A B
174 0: A\x20B
175    ** Fail
176No match
177    A\x15B
178No match
179    A\x0dB
180No match
181    A\x25B
182No match
183    A\x0bB
184No match
185    A\x0cB
186No match
187
188# Test \c functionality
189
190/\�@\�A\�b\�C\�d\�E\�f\�G\�h\�I\�J\�K\�l\�m\�N\�O\�p\�q\�r\�S\�T\�u\�V\�W\�X\�y\�Z/
191    \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f
192 0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a
193
194/\�[\�\\�]\�^\�_/
195    \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f
196 0: \x1b\x1c\x1d\x1e\x1f
197
198/\�?/
199    A\xffB
200 0: \xff
201
202/\�&/
203Failed: error 168 at offset 2: \c\x20must\x20be\x20followed\x20by\x20a\x20letter\x20or\x20one\x20of\x20[\]^_\x3f
204
205# End
206