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