Commit | Line | Data |
f96ec2a2 |
1 | #!./perl |
2 | |
3 | BEGIN { |
4 | chdir 't' if -d 't'; |
5 | unshift @INC, '../lib'; |
6 | $ENV{PERL5LIB} = '../lib'; |
f70c35af |
7 | if ( ord("\t") != 9 ) { # skip on ebcdic platforms |
8 | print "1..0 # Skip utf8 tests on ebcdic platform.\n"; |
9 | exit; |
10 | } |
f96ec2a2 |
11 | } |
12 | |
a7867d0a |
13 | print "1..66\n"; |
f96ec2a2 |
14 | |
15 | my $test = 1; |
16 | |
17 | sub ok { |
18 | my ($got,$expect) = @_; |
19 | print "# expected [$expect], got [$got]\nnot " if $got ne $expect; |
20 | print "ok $test\n"; |
21 | } |
22 | |
be341bce |
23 | sub ok_bytes { |
24 | use bytes; |
25 | my ($got,$expect) = @_; |
26 | print "# expected [$expect], got [$got]\nnot " if $got ne $expect; |
27 | print "ok $test\n"; |
28 | } |
29 | |
30 | |
f96ec2a2 |
31 | { |
32 | use utf8; |
33 | $_ = ">\x{263A}<"; |
34 | s/([\x{80}-\x{10ffff}])/"&#".ord($1).";"/eg; |
35 | ok $_, '>☺<'; |
c5cc3500 |
36 | $test++; # 1 |
f96ec2a2 |
37 | |
38 | $_ = ">\x{263A}<"; |
39 | my $rx = "\x{80}-\x{10ffff}"; |
40 | s/([$rx])/"&#".ord($1).";"/eg; |
41 | ok $_, '>☺<'; |
c5cc3500 |
42 | $test++; # 2 |
f96ec2a2 |
43 | |
44 | $_ = ">\x{263A}<"; |
45 | my $rx = "\\x{80}-\\x{10ffff}"; |
46 | s/([$rx])/"&#".ord($1).";"/eg; |
47 | ok $_, '>☺<'; |
c5cc3500 |
48 | $test++; # 3 |
b8c5462f |
49 | |
50 | $_ = "alpha,numeric"; |
51 | m/([[:alpha:]]+)/; |
52 | ok $1, 'alpha'; |
c5cc3500 |
53 | $test++; # 4 |
b8c5462f |
54 | |
55 | $_ = "alphaNUMERICstring"; |
56 | m/([[:^lower:]]+)/; |
57 | ok $1, 'NUMERIC'; |
c5cc3500 |
58 | $test++; # 5 |
b8c5462f |
59 | |
60 | $_ = "alphaNUMERICstring"; |
61 | m/(\p{Ll}+)/; |
62 | ok $1, 'alpha'; |
c5cc3500 |
63 | $test++; # 6 |
b8c5462f |
64 | |
65 | $_ = "alphaNUMERICstring"; |
66 | m/(\p{Lu}+)/; |
67 | ok $1, 'NUMERIC'; |
c5cc3500 |
68 | $test++; # 7 |
b8c5462f |
69 | |
70 | $_ = "alpha,numeric"; |
71 | m/([\p{IsAlpha}]+)/; |
72 | ok $1, 'alpha'; |
c5cc3500 |
73 | $test++; # 8 |
b8c5462f |
74 | |
75 | $_ = "alphaNUMERICstring"; |
76 | m/([^\p{IsLower}]+)/; |
77 | ok $1, 'NUMERIC'; |
c5cc3500 |
78 | $test++; # 9 |
b8c5462f |
79 | |
0f4b6630 |
80 | $_ = "alpha123numeric456"; |
81 | m/([\p{IsDigit}]+)/; |
82 | ok $1, '123'; |
c5cc3500 |
83 | $test++; # 10 |
b8c5462f |
84 | |
0f4b6630 |
85 | $_ = "alpha123numeric456"; |
86 | m/([^\p{IsDigit}]+)/; |
87 | ok $1, 'alpha'; |
c5cc3500 |
88 | $test++; # 11 |
b8c5462f |
89 | |
0f4b6630 |
90 | $_ = ",123alpha,456numeric"; |
91 | m/([\p{IsAlnum}]+)/; |
92 | ok $1, '123alpha'; |
c5cc3500 |
93 | $test++; # 12 |
0f4b6630 |
94 | } |
a197cbdd |
95 | { |
96 | use utf8; |
97 | |
98 | $_ = "\x{263A}>\x{263A}\x{263A}"; |
99 | |
100 | ok length, 4; |
c5cc3500 |
101 | $test++; # 13 |
a197cbdd |
102 | |
103 | ok length((m/>(.)/)[0]), 1; |
c5cc3500 |
104 | $test++; # 14 |
a197cbdd |
105 | |
106 | ok length($&), 2; |
c5cc3500 |
107 | $test++; # 15 |
a197cbdd |
108 | |
109 | ok length($'), 1; |
c5cc3500 |
110 | $test++; # 16 |
a197cbdd |
111 | |
112 | ok length($`), 1; |
c5cc3500 |
113 | $test++; # 17 |
a197cbdd |
114 | |
115 | ok length($1), 1; |
c5cc3500 |
116 | $test++; # 18 |
a197cbdd |
117 | |
118 | ok length($tmp=$&), 2; |
c5cc3500 |
119 | $test++; # 19 |
a197cbdd |
120 | |
121 | ok length($tmp=$'), 1; |
c5cc3500 |
122 | $test++; # 20 |
a197cbdd |
123 | |
124 | ok length($tmp=$`), 1; |
c5cc3500 |
125 | $test++; # 21 |
a197cbdd |
126 | |
127 | ok length($tmp=$1), 1; |
c5cc3500 |
128 | $test++; # 22 |
a197cbdd |
129 | |
c5cc3500 |
130 | { |
be341bce |
131 | use bytes; |
c5cc3500 |
132 | |
be341bce |
133 | my $tmp = $&; |
c5cc3500 |
134 | ok $tmp, pack("C*", ord(">"), 0342, 0230, 0272); |
135 | $test++; # 23 |
a197cbdd |
136 | |
c5cc3500 |
137 | $tmp = $'; |
138 | ok $tmp, pack("C*", 0342, 0230, 0272); |
139 | $test++; # 24 |
a197cbdd |
140 | |
c5cc3500 |
141 | $tmp = $`; |
142 | ok $tmp, pack("C*", 0342, 0230, 0272); |
143 | $test++; # 25 |
a197cbdd |
144 | |
c5cc3500 |
145 | $tmp = $1; |
146 | ok $tmp, pack("C*", 0342, 0230, 0272); |
147 | $test++; # 26 |
148 | } |
a197cbdd |
149 | |
be341bce |
150 | ok_bytes $&, pack("C*", ord(">"), 0342, 0230, 0272); |
151 | $test++; # 27 |
152 | |
153 | ok_bytes $', pack("C*", 0342, 0230, 0272); |
154 | $test++; # 28 |
155 | |
156 | ok_bytes $`, pack("C*", 0342, 0230, 0272); |
157 | $test++; # 29 |
158 | |
159 | ok_bytes $1, pack("C*", 0342, 0230, 0272); |
160 | $test++; # 30 |
161 | |
a197cbdd |
162 | { |
163 | use bytes; |
164 | no utf8; |
165 | |
166 | ok length, 10; |
be341bce |
167 | $test++; # 31 |
a197cbdd |
168 | |
169 | ok length((m/>(.)/)[0]), 1; |
be341bce |
170 | $test++; # 32 |
a197cbdd |
171 | |
172 | ok length($&), 2; |
be341bce |
173 | $test++; # 33 |
a197cbdd |
174 | |
175 | ok length($'), 5; |
be341bce |
176 | $test++; # 34 |
a197cbdd |
177 | |
178 | ok length($`), 3; |
be341bce |
179 | $test++; # 35 |
a197cbdd |
180 | |
181 | ok length($1), 1; |
be341bce |
182 | $test++; # 36 |
a197cbdd |
183 | |
184 | ok $&, pack("C*", ord(">"), 0342); |
be341bce |
185 | $test++; # 37 |
a197cbdd |
186 | |
187 | ok $', pack("C*", 0230, 0272, 0342, 0230, 0272); |
be341bce |
188 | $test++; # 38 |
a197cbdd |
189 | |
190 | ok $`, pack("C*", 0342, 0230, 0272); |
be341bce |
191 | $test++; # 39 |
a197cbdd |
192 | |
193 | ok $1, pack("C*", 0342); |
be341bce |
194 | $test++; # 40 |
a197cbdd |
195 | |
196 | } |
197 | |
198 | |
199 | { |
200 | no utf8; |
201 | $_="\342\230\272>\342\230\272\342\230\272"; |
202 | } |
203 | |
204 | ok length, 10; |
be341bce |
205 | $test++; # 41 |
a197cbdd |
206 | |
207 | ok length((m/>(.)/)[0]), 1; |
be341bce |
208 | $test++; # 42 |
a197cbdd |
209 | |
210 | ok length($&), 2; |
be341bce |
211 | $test++; # 43 |
a197cbdd |
212 | |
213 | ok length($'), 1; |
be341bce |
214 | $test++; # 44 |
a197cbdd |
215 | |
216 | ok length($`), 1; |
be341bce |
217 | $test++; # 45 |
a197cbdd |
218 | |
219 | ok length($1), 1; |
be341bce |
220 | $test++; # 46 |
a197cbdd |
221 | |
222 | ok length($tmp=$&), 2; |
be341bce |
223 | $test++; # 47 |
a197cbdd |
224 | |
225 | ok length($tmp=$'), 1; |
be341bce |
226 | $test++; # 48 |
a197cbdd |
227 | |
228 | ok length($tmp=$`), 1; |
be341bce |
229 | $test++; # 49 |
a197cbdd |
230 | |
231 | ok length($tmp=$1), 1; |
be341bce |
232 | $test++; # 50 |
a197cbdd |
233 | |
c5cc3500 |
234 | { |
235 | use bytes; |
a197cbdd |
236 | |
c5cc3500 |
237 | my $tmp = $&; |
238 | ok $tmp, pack("C*", ord(">"), 0342, 0230, 0272); |
be341bce |
239 | $test++; # 51 |
a197cbdd |
240 | |
c5cc3500 |
241 | $tmp = $'; |
242 | ok $tmp, pack("C*", 0342, 0230, 0272); |
be341bce |
243 | $test++; # 52 |
a197cbdd |
244 | |
c5cc3500 |
245 | $tmp = $`; |
246 | ok $tmp, pack("C*", 0342, 0230, 0272); |
be341bce |
247 | $test++; # 53 |
a197cbdd |
248 | |
c5cc3500 |
249 | $tmp = $1; |
250 | ok $tmp, pack("C*", 0342, 0230, 0272); |
be341bce |
251 | $test++; # 54 |
c5cc3500 |
252 | } |
a197cbdd |
253 | { |
254 | use bytes; |
255 | no utf8; |
256 | |
257 | ok length, 10; |
be341bce |
258 | $test++; # 55 |
a197cbdd |
259 | |
260 | ok length((m/>(.)/)[0]), 1; |
be341bce |
261 | $test++; # 56 |
a197cbdd |
262 | |
263 | ok length($&), 2; |
be341bce |
264 | $test++; # 57 |
a197cbdd |
265 | |
266 | ok length($'), 5; |
be341bce |
267 | $test++; # 58 |
a197cbdd |
268 | |
269 | ok length($`), 3; |
be341bce |
270 | $test++; # 59 |
a197cbdd |
271 | |
272 | ok length($1), 1; |
be341bce |
273 | $test++; # 60 |
a197cbdd |
274 | |
275 | ok $&, pack("C*", ord(">"), 0342); |
be341bce |
276 | $test++; # 61 |
a197cbdd |
277 | |
278 | ok $', pack("C*", 0230, 0272, 0342, 0230, 0272); |
be341bce |
279 | $test++; # 62 |
a197cbdd |
280 | |
281 | ok $`, pack("C*", 0342, 0230, 0272); |
be341bce |
282 | $test++; # 63 |
a197cbdd |
283 | |
284 | ok $1, pack("C*", 0342); |
be341bce |
285 | $test++; # 64 |
a197cbdd |
286 | |
287 | } |
de35ba6f |
288 | |
289 | ok "\x{ab}" =~ /^\x{ab}$/, 1; |
be341bce |
290 | $test++; # 65 |
a197cbdd |
291 | } |
aaa68c4a |
292 | |
293 | { |
294 | use utf8; |
295 | ok_bytes chr(0xe2), pack("C*", 0xc3, 0xa2); |
296 | $test++; # 66 |
297 | } |