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