Make chr() for values >127 to create utf8 when under utf8.
[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';
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
aaa68c4a 13print "1..67\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
be341bce 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;<';
c5cc3500 36 $test++; # 1
f96ec2a2 37
38 $_ = ">\x{263A}<";
39 my $rx = "\x{80}-\x{10ffff}";
40 s/([$rx])/"&#".ord($1).";"/eg;
41 ok $_, '>&#9786;<';
c5cc3500 42 $test++; # 2
f96ec2a2 43
44 $_ = ">\x{263A}<";
45 my $rx = "\\x{80}-\\x{10ffff}";
46 s/([$rx])/"&#".ord($1).";"/eg;
47 ok $_, '>&#9786;<';
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}