1 | #!./perl
|
---|
2 |
|
---|
3 | my @WARN;
|
---|
4 |
|
---|
5 | BEGIN {
|
---|
6 | unless(grep /blib/, @INC) {
|
---|
7 | chdir 't' if -d 't';
|
---|
8 | @INC = '../lib';
|
---|
9 | require './test.pl';
|
---|
10 | }
|
---|
11 | $SIG{__WARN__} = sub { push @WARN, @_ };
|
---|
12 | }
|
---|
13 |
|
---|
14 | require File::Spec;
|
---|
15 |
|
---|
16 | $| = 1;
|
---|
17 |
|
---|
18 | print "1..74\n";
|
---|
19 |
|
---|
20 | use charnames ':full';
|
---|
21 |
|
---|
22 | print "not " unless "Here\N{EXCLAMATION MARK}?" eq "Here!?";
|
---|
23 | print "ok 1\n";
|
---|
24 |
|
---|
25 | {
|
---|
26 | use bytes; # TEST -utf8 can switch utf8 on
|
---|
27 |
|
---|
28 | print "# \$res=$res \$\@='$@'\nnot "
|
---|
29 | if $res = eval <<'EOE'
|
---|
30 | use charnames ":full";
|
---|
31 | "Here: \N{CYRILLIC SMALL LETTER BE}!";
|
---|
32 | 1
|
---|
33 | EOE
|
---|
34 | or $@ !~ /above 0xFF/;
|
---|
35 | print "ok 2\n";
|
---|
36 | # print "# \$res=$res \$\@='$@'\n";
|
---|
37 |
|
---|
38 | print "# \$res=$res \$\@='$@'\nnot "
|
---|
39 | if $res = eval <<'EOE'
|
---|
40 | use charnames 'cyrillic';
|
---|
41 | "Here: \N{Be}!";
|
---|
42 | 1
|
---|
43 | EOE
|
---|
44 | or $@ !~ /CYRILLIC CAPITAL LETTER BE.*above 0xFF/;
|
---|
45 | print "ok 3\n";
|
---|
46 | }
|
---|
47 |
|
---|
48 | # If octal representation of unicode char is \0xyzt, then the utf8 is \3xy\2zt
|
---|
49 | if (ord('A') == 65) { # as on ASCII or UTF-8 machines
|
---|
50 | $encoded_be = "\320\261";
|
---|
51 | $encoded_alpha = "\316\261";
|
---|
52 | $encoded_bet = "\327\221";
|
---|
53 | $encoded_deseng = "\360\220\221\215";
|
---|
54 | }
|
---|
55 | else { # EBCDIC where UTF-EBCDIC may be used (this may be 1047 specific since
|
---|
56 | # UTF-EBCDIC is codepage specific)
|
---|
57 | $encoded_be = "\270\102\130";
|
---|
58 | $encoded_alpha = "\264\130";
|
---|
59 | $encoded_bet = "\270\125\130";
|
---|
60 | $encoded_deseng = "\336\102\103\124";
|
---|
61 | }
|
---|
62 |
|
---|
63 | sub to_bytes {
|
---|
64 | pack"a*", shift;
|
---|
65 | }
|
---|
66 |
|
---|
67 | {
|
---|
68 | use charnames ':full';
|
---|
69 |
|
---|
70 | print "not " unless to_bytes("\N{CYRILLIC SMALL LETTER BE}") eq $encoded_be;
|
---|
71 | print "ok 4\n";
|
---|
72 |
|
---|
73 | use charnames qw(cyrillic greek :short);
|
---|
74 |
|
---|
75 | print "not " unless to_bytes("\N{be},\N{alpha},\N{hebrew:bet}")
|
---|
76 | eq "$encoded_be,$encoded_alpha,$encoded_bet";
|
---|
77 | print "ok 5\n";
|
---|
78 | }
|
---|
79 |
|
---|
80 | {
|
---|
81 | use charnames ':full';
|
---|
82 | print "not " unless "\x{263a}" eq "\N{WHITE SMILING FACE}";
|
---|
83 | print "ok 6\n";
|
---|
84 | print "not " unless length("\x{263a}") == 1;
|
---|
85 | print "ok 7\n";
|
---|
86 | print "not " unless length("\N{WHITE SMILING FACE}") == 1;
|
---|
87 | print "ok 8\n";
|
---|
88 | print "not " unless sprintf("%vx", "\x{263a}") eq "263a";
|
---|
89 | print "ok 9\n";
|
---|
90 | print "not " unless sprintf("%vx", "\N{WHITE SMILING FACE}") eq "263a";
|
---|
91 | print "ok 10\n";
|
---|
92 | print "not " unless sprintf("%vx", "\xFF\N{WHITE SMILING FACE}") eq "ff.263a";
|
---|
93 | print "ok 11\n";
|
---|
94 | print "not " unless sprintf("%vx", "\x{ff}\N{WHITE SMILING FACE}") eq "ff.263a";
|
---|
95 | print "ok 12\n";
|
---|
96 | }
|
---|
97 |
|
---|
98 | {
|
---|
99 | use charnames qw(:full);
|
---|
100 | use utf8;
|
---|
101 |
|
---|
102 | my $x = "\x{221b}";
|
---|
103 | my $named = "\N{CUBE ROOT}";
|
---|
104 |
|
---|
105 | print "not " unless ord($x) == ord($named);
|
---|
106 | print "ok 13\n";
|
---|
107 | }
|
---|
108 |
|
---|
109 | {
|
---|
110 | use charnames qw(:full);
|
---|
111 | use utf8;
|
---|
112 | print "not " unless "\x{100}\N{CENT SIGN}" eq "\x{100}"."\N{CENT SIGN}";
|
---|
113 | print "ok 14\n";
|
---|
114 | }
|
---|
115 |
|
---|
116 | {
|
---|
117 | use charnames ':full';
|
---|
118 |
|
---|
119 | print "not "
|
---|
120 | unless to_bytes("\N{DESERET SMALL LETTER ENG}") eq $encoded_deseng;
|
---|
121 | print "ok 15\n";
|
---|
122 | }
|
---|
123 |
|
---|
124 | {
|
---|
125 | # 20001114.001
|
---|
126 |
|
---|
127 | no utf8; # naked Latin-1
|
---|
128 |
|
---|
129 | if (ord("Ä") == 0xc4) { # Try to do this only on Latin-1.
|
---|
130 | use charnames ':full';
|
---|
131 | my $text = "\N{LATIN CAPITAL LETTER A WITH DIAERESIS}";
|
---|
132 | print "not " unless $text eq "\xc4" && ord($text) == 0xc4;
|
---|
133 | print "ok 16\n";
|
---|
134 | } else {
|
---|
135 | print "ok 16 # Skip: not Latin-1\n";
|
---|
136 | }
|
---|
137 | }
|
---|
138 |
|
---|
139 | {
|
---|
140 | print "not " unless charnames::viacode(0x1234) eq "ETHIOPIC SYLLABLE SEE";
|
---|
141 | print "ok 17\n";
|
---|
142 |
|
---|
143 | # Unused Hebrew.
|
---|
144 | print "not " if defined charnames::viacode(0x0590);
|
---|
145 | print "ok 18\n";
|
---|
146 | }
|
---|
147 |
|
---|
148 | {
|
---|
149 | print "not " unless
|
---|
150 | sprintf("%04X", charnames::vianame("GOTHIC LETTER AHSA")) eq "10330";
|
---|
151 | print "ok 19\n";
|
---|
152 |
|
---|
153 | print "not " if
|
---|
154 | defined charnames::vianame("NONE SUCH");
|
---|
155 | print "ok 20\n";
|
---|
156 | }
|
---|
157 |
|
---|
158 | {
|
---|
159 | # check that caching at least hasn't broken anything
|
---|
160 |
|
---|
161 | print "not " unless charnames::viacode(0x1234) eq "ETHIOPIC SYLLABLE SEE";
|
---|
162 | print "ok 21\n";
|
---|
163 |
|
---|
164 | print "not " unless
|
---|
165 | sprintf("%04X", charnames::vianame("GOTHIC LETTER AHSA")) eq "10330";
|
---|
166 | print "ok 22\n";
|
---|
167 |
|
---|
168 | }
|
---|
169 |
|
---|
170 | print "not " unless "\N{CHARACTER TABULATION}" eq "\t";
|
---|
171 | print "ok 23\n";
|
---|
172 |
|
---|
173 | print "not " unless "\N{ESCAPE}" eq "\e";
|
---|
174 | print "ok 24\n";
|
---|
175 |
|
---|
176 | print "not " unless "\N{NULL}" eq "\c@";
|
---|
177 | print "ok 25\n";
|
---|
178 |
|
---|
179 | if ($^O eq 'MacOS')
|
---|
180 | {
|
---|
181 | print "not " unless "\N{CARRIAGE RETURN (CR)}" eq "\n";
|
---|
182 | print "ok 26\n";
|
---|
183 |
|
---|
184 | print "not " unless "\N{CARRIAGE RETURN}" eq "\n";
|
---|
185 | print "ok 27\n";
|
---|
186 |
|
---|
187 | print "not " unless "\N{CR}" eq "\n";
|
---|
188 | print "ok 28\n";
|
---|
189 | }
|
---|
190 | else
|
---|
191 | {
|
---|
192 | print "not " unless "\N{LINE FEED (LF)}" eq "\n";
|
---|
193 | print "ok 26\n";
|
---|
194 |
|
---|
195 | print "not " unless "\N{LINE FEED}" eq "\n";
|
---|
196 | print "ok 27\n";
|
---|
197 |
|
---|
198 | print "not " unless "\N{LF}" eq "\n";
|
---|
199 | print "ok 28\n";
|
---|
200 | }
|
---|
201 |
|
---|
202 | my $nel = ord("A") == 193 ? qr/^(?:\x15|\x25)$/ : qr/^\x85$/;
|
---|
203 |
|
---|
204 | print "not " unless "\N{NEXT LINE (NEL)}" =~ $nel;
|
---|
205 | print "ok 29\n";
|
---|
206 |
|
---|
207 | print "not " unless "\N{NEXT LINE}" =~ $nel;
|
---|
208 | print "ok 30\n";
|
---|
209 |
|
---|
210 | print "not " unless "\N{NEL}" =~ $nel;
|
---|
211 | print "ok 31\n";
|
---|
212 |
|
---|
213 | print "not " unless "\N{BYTE ORDER MARK}" eq chr(0xFEFF);
|
---|
214 | print "ok 32\n";
|
---|
215 |
|
---|
216 | print "not " unless "\N{BOM}" eq chr(0xFEFF);
|
---|
217 | print "ok 33\n";
|
---|
218 |
|
---|
219 | {
|
---|
220 | use warnings 'deprecated';
|
---|
221 |
|
---|
222 | print "not " unless "\N{HORIZONTAL TABULATION}" eq "\t";
|
---|
223 | print "ok 34\n";
|
---|
224 |
|
---|
225 | print "not " unless grep { /"HORIZONTAL TABULATION" is deprecated/ } @WARN;
|
---|
226 | print "ok 35\n";
|
---|
227 |
|
---|
228 | no warnings 'deprecated';
|
---|
229 |
|
---|
230 | print "not " unless "\N{VERTICAL TABULATION}" eq "\013";
|
---|
231 | print "ok 36\n";
|
---|
232 |
|
---|
233 | print "not " if grep { /"VERTICAL TABULATION" is deprecated/ } @WARN;
|
---|
234 | print "ok 37\n";
|
---|
235 | }
|
---|
236 |
|
---|
237 | print "not " unless charnames::viacode(0xFEFF) eq "ZERO WIDTH NO-BREAK SPACE";
|
---|
238 | print "ok 38\n";
|
---|
239 |
|
---|
240 | {
|
---|
241 | use warnings;
|
---|
242 | print "not " unless ord("\N{BOM}") == 0xFEFF;
|
---|
243 | print "ok 39\n";
|
---|
244 | }
|
---|
245 |
|
---|
246 | print "not " unless ord("\N{ZWNJ}") == 0x200C;
|
---|
247 | print "ok 40\n";
|
---|
248 |
|
---|
249 | print "not " unless ord("\N{ZWJ}") == 0x200D;
|
---|
250 | print "ok 41\n";
|
---|
251 |
|
---|
252 | print "not " unless "\N{U+263A}" eq "\N{WHITE SMILING FACE}";
|
---|
253 | print "ok 42\n";
|
---|
254 |
|
---|
255 | {
|
---|
256 | print "not " unless
|
---|
257 | 0x3093 == charnames::vianame("HIRAGANA LETTER N");
|
---|
258 | print "ok 43\n";
|
---|
259 |
|
---|
260 | print "not " unless
|
---|
261 | 0x0397 == charnames::vianame("GREEK CAPITAL LETTER ETA");
|
---|
262 | print "ok 44\n";
|
---|
263 | }
|
---|
264 |
|
---|
265 | print "not " if defined charnames::viacode(0x110000);
|
---|
266 | print "ok 45\n";
|
---|
267 |
|
---|
268 | print "not " if grep { /you asked for U+110000/ } @WARN;
|
---|
269 | print "ok 46\n";
|
---|
270 |
|
---|
271 |
|
---|
272 | # ---- Alias extensions
|
---|
273 |
|
---|
274 | my $tmpfile = "tmp0000";
|
---|
275 | my $alifile = File::Spec->catfile(File::Spec->updir, qw(lib unicore xyzzy_alias.pl));
|
---|
276 | my $i = 0;
|
---|
277 | 1 while -e ++$tmpfile;
|
---|
278 | END { if ($tmpfile) { 1 while unlink $tmpfile; } }
|
---|
279 |
|
---|
280 | my @prgs;
|
---|
281 | { local $/ = undef;
|
---|
282 | @prgs = split "\n########\n", <DATA>;
|
---|
283 | }
|
---|
284 |
|
---|
285 | my $i = 46;
|
---|
286 | for (@prgs) {
|
---|
287 | my ($code, $exp) = ((split m/\nEXPECT\n/), '$');
|
---|
288 | my ($prog, $fil) = ((split m/\nFILE\n/, $code), "");
|
---|
289 | open my $tmp, "> $tmpfile" or die "Could not open $tmpfile: $!";
|
---|
290 | print $tmp $prog, "\n";
|
---|
291 | close $tmp or die "Could not close $tmpfile: $!";
|
---|
292 | if ($fil) {
|
---|
293 | $fil .= "\n";
|
---|
294 | open my $ali, "> $alifile" or die "Could not open $alifile: $!";
|
---|
295 | print $ali $fil;
|
---|
296 | close $ali or die "Could not close $alifile: $!";
|
---|
297 | }
|
---|
298 | my $res = runperl( switches => $switch,
|
---|
299 | progfile => $tmpfile,
|
---|
300 | stderr => 1 );
|
---|
301 | my $status = $?;
|
---|
302 | $res =~ s/[\r\n]+$//;
|
---|
303 | $res =~ s/tmp\d+/-/g; # fake $prog from STDIN
|
---|
304 | $res =~ s/\n%[A-Z]+-[SIWEF]-.*$// # clip off DCL status msg
|
---|
305 | if $^O eq "VMS";
|
---|
306 | $exp =~ s/[\r\n]+$//;
|
---|
307 | if ($^O eq "MacOS") {
|
---|
308 | $exp =~ s{(\./)?abc\.pm}{:abc.pm}g;
|
---|
309 | $exp =~ s{./abc} {:abc}g;
|
---|
310 | }
|
---|
311 | my $pfx = ($res =~ s/^PREFIX\n//);
|
---|
312 | my $rexp = qr{^$exp};
|
---|
313 | if ($res =~ s/^SKIPPED\n//) {
|
---|
314 | print "$results\n";
|
---|
315 | }
|
---|
316 | elsif (($pfx and $res !~ /^\Q$expected/) or
|
---|
317 | (!$pfx and $res !~ $rexp)) {
|
---|
318 | print STDERR
|
---|
319 | "PROG:\n$prog\n",
|
---|
320 | "FILE:\n$fil",
|
---|
321 | "EXPECTED:\n$exp\n",
|
---|
322 | "GOT:\n$res\n";
|
---|
323 | print "not ";
|
---|
324 | }
|
---|
325 | print "ok ", ++$i, "\n";
|
---|
326 | 1 while unlink $tmpfile;
|
---|
327 | $fil or next;
|
---|
328 | 1 while unlink $alifile;
|
---|
329 | }
|
---|
330 |
|
---|
331 | # [perl #30409] charnames.pm clobbers default variable
|
---|
332 | $_ = 'foobar';
|
---|
333 | eval "use charnames ':full';";
|
---|
334 | print "not " unless $_ eq 'foobar';
|
---|
335 | print "ok 74\n";
|
---|
336 |
|
---|
337 | __END__
|
---|
338 | # unsupported pragma
|
---|
339 | use charnames ":scoobydoo";
|
---|
340 | "Here: \N{e_ACUTE}!\n";
|
---|
341 | EXPECT
|
---|
342 | unsupported special ':scoobydoo' in charnames at
|
---|
343 | ########
|
---|
344 | # wrong type of alias (missing colon)
|
---|
345 | use charnames "alias";
|
---|
346 | "Here: \N{e_ACUTE}!\n";
|
---|
347 | EXPECT
|
---|
348 | Unknown charname 'e_ACUTE' at
|
---|
349 | ########
|
---|
350 | # alias without an argument
|
---|
351 | use charnames ":alias";
|
---|
352 | "Here: \N{e_ACUTE}!\n";
|
---|
353 | EXPECT
|
---|
354 | :alias needs an argument in charnames at
|
---|
355 | ########
|
---|
356 | # reversed sequence
|
---|
357 | use charnames ":alias" => ":full";
|
---|
358 | "Here: \N{e_ACUTE}!\n";
|
---|
359 | EXPECT
|
---|
360 | :alias cannot use existing pragma :full \(reversed order\?\) at
|
---|
361 | ########
|
---|
362 | # alias with hashref but no :full
|
---|
363 | use charnames ":alias" => { e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE" };
|
---|
364 | "Here: \N{e_ACUTE}!\n";
|
---|
365 | EXPECT
|
---|
366 | Unknown charname 'LATIN SMALL LETTER E WITH ACUTE' at
|
---|
367 | ########
|
---|
368 | # alias with hashref but with :short
|
---|
369 | use charnames ":short", ":alias" => { e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE" };
|
---|
370 | "Here: \N{e_ACUTE}!\n";
|
---|
371 | EXPECT
|
---|
372 | Unknown charname 'LATIN SMALL LETTER E WITH ACUTE' at
|
---|
373 | ########
|
---|
374 | # alias with hashref to :full OK
|
---|
375 | use charnames ":full", ":alias" => { e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE" };
|
---|
376 | "Here: \N{e_ACUTE}!\n";
|
---|
377 | EXPECT
|
---|
378 | $
|
---|
379 | ########
|
---|
380 | # alias with hashref to :short but using :full
|
---|
381 | use charnames ":full", ":alias" => { e_ACUTE => "LATIN:e WITH ACUTE" };
|
---|
382 | "Here: \N{e_ACUTE}!\n";
|
---|
383 | EXPECT
|
---|
384 | Unknown charname 'LATIN:e WITH ACUTE' at
|
---|
385 | ########
|
---|
386 | # alias with hashref to :short OK
|
---|
387 | use charnames ":short", ":alias" => { e_ACUTE => "LATIN:e WITH ACUTE" };
|
---|
388 | "Here: \N{e_ACUTE}!\n";
|
---|
389 | EXPECT
|
---|
390 | $
|
---|
391 | ########
|
---|
392 | # alias with bad hashref
|
---|
393 | use charnames ":short", ":alias" => "e_ACUTE";
|
---|
394 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
395 | EXPECT
|
---|
396 | unicore/e_ACUTE_alias.pl cannot be used as alias file for charnames at
|
---|
397 | ########
|
---|
398 | # alias with arrayref
|
---|
399 | use charnames ":short", ":alias" => [ e_ACUTE => "LATIN:e WITH ACUTE" ];
|
---|
400 | "Here: \N{e_ACUTE}!\n";
|
---|
401 | EXPECT
|
---|
402 | Only HASH reference supported as argument to :alias at
|
---|
403 | ########
|
---|
404 | # alias with bad hashref
|
---|
405 | use charnames ":short", ":alias" => { e_ACUTE => "LATIN:e WITH ACUTE", "a_ACUTE" };
|
---|
406 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
407 | EXPECT
|
---|
408 | Use of uninitialized value in string eq at
|
---|
409 | ########
|
---|
410 | # alias with hashref two aliases
|
---|
411 | use charnames ":short", ":alias" => {
|
---|
412 | e_ACUTE => "LATIN:e WITH ACUTE",
|
---|
413 | a_ACUTE => "",
|
---|
414 | };
|
---|
415 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
416 | EXPECT
|
---|
417 | Unknown charname '' at
|
---|
418 | ########
|
---|
419 | # alias with hashref two aliases
|
---|
420 | use charnames ":short", ":alias" => {
|
---|
421 | e_ACUTE => "LATIN:e WITH ACUTE",
|
---|
422 | a_ACUTE => "LATIN:a WITH ACUTE",
|
---|
423 | };
|
---|
424 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
425 | EXPECT
|
---|
426 | $
|
---|
427 | ########
|
---|
428 | # alias with hashref using mixed aliasses
|
---|
429 | use charnames ":short", ":alias" => {
|
---|
430 | e_ACUTE => "LATIN:e WITH ACUTE",
|
---|
431 | a_ACUTE => "LATIN SMALL LETTER A WITH ACUT",
|
---|
432 | };
|
---|
433 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
434 | EXPECT
|
---|
435 | Unknown charname 'LATIN SMALL LETTER A WITH ACUT' at
|
---|
436 | ########
|
---|
437 | # alias with hashref using mixed aliasses
|
---|
438 | use charnames ":short", ":alias" => {
|
---|
439 | e_ACUTE => "LATIN:e WITH ACUTE",
|
---|
440 | a_ACUTE => "LATIN SMALL LETTER A WITH ACUTE",
|
---|
441 | };
|
---|
442 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
443 | EXPECT
|
---|
444 | Unknown charname 'LATIN SMALL LETTER A WITH ACUTE' at
|
---|
445 | ########
|
---|
446 | # alias with hashref using mixed aliasses
|
---|
447 | use charnames ":full", ":alias" => {
|
---|
448 | e_ACUTE => "LATIN:e WITH ACUTE",
|
---|
449 | a_ACUTE => "LATIN SMALL LETTER A WITH ACUTE",
|
---|
450 | };
|
---|
451 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
452 | EXPECT
|
---|
453 | Unknown charname 'LATIN:e WITH ACUTE' at
|
---|
454 | ########
|
---|
455 | # alias with nonexisting file
|
---|
456 | use charnames ":full", ":alias" => "xyzzy";
|
---|
457 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
458 | EXPECT
|
---|
459 | unicore/xyzzy_alias.pl cannot be used as alias file for charnames at
|
---|
460 | ########
|
---|
461 | # alias with bad file name
|
---|
462 | use charnames ":full", ":alias" => "xy 7-";
|
---|
463 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
464 | EXPECT
|
---|
465 | Charnames alias files can only have identifier characters at
|
---|
466 | ########
|
---|
467 | # alias with non_absolute (existing) file name (which it should /not/ use)
|
---|
468 | use charnames ":full", ":alias" => "perl";
|
---|
469 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
470 | EXPECT
|
---|
471 | unicore/perl_alias.pl cannot be used as alias file for charnames at
|
---|
472 | ########
|
---|
473 | # alias with bad file
|
---|
474 | use charnames ":full", ":alias" => "xyzzy";
|
---|
475 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
476 | FILE
|
---|
477 | #!perl
|
---|
478 | 0;
|
---|
479 | EXPECT
|
---|
480 | unicore/xyzzy_alias.pl did not return a \(valid\) list of alias pairs at
|
---|
481 | ########
|
---|
482 | # alias with file with empty list
|
---|
483 | use charnames ":full", ":alias" => "xyzzy";
|
---|
484 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
485 | FILE
|
---|
486 | #!perl
|
---|
487 | ();
|
---|
488 | EXPECT
|
---|
489 | Unknown charname 'e_ACUTE' at
|
---|
490 | ########
|
---|
491 | # alias with file OK but file has :short aliasses
|
---|
492 | use charnames ":full", ":alias" => "xyzzy";
|
---|
493 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
494 | FILE
|
---|
495 | #!perl
|
---|
496 | ( e_ACUTE => "LATIN:e WITH ACUTE",
|
---|
497 | a_ACUTE => "LATIN:a WITH ACUTE",
|
---|
498 | );
|
---|
499 | EXPECT
|
---|
500 | Unknown charname 'LATIN:e WITH ACUTE' at
|
---|
501 | ########
|
---|
502 | # alias with :short and file OK
|
---|
503 | use charnames ":short", ":alias" => "xyzzy";
|
---|
504 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
505 | FILE
|
---|
506 | #!perl
|
---|
507 | ( e_ACUTE => "LATIN:e WITH ACUTE",
|
---|
508 | a_ACUTE => "LATIN:a WITH ACUTE",
|
---|
509 | );
|
---|
510 | EXPECT
|
---|
511 | $
|
---|
512 | ########
|
---|
513 | # alias with :short and file OK has :long aliasses
|
---|
514 | use charnames ":short", ":alias" => "xyzzy";
|
---|
515 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
516 | FILE
|
---|
517 | #!perl
|
---|
518 | ( e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE",
|
---|
519 | a_ACUTE => "LATIN SMALL LETTER A WITH ACUTE",
|
---|
520 | );
|
---|
521 | EXPECT
|
---|
522 | Unknown charname 'LATIN SMALL LETTER E WITH ACUTE' at
|
---|
523 | ########
|
---|
524 | # alias with file implicit :full but file has :short aliasses
|
---|
525 | use charnames ":alias" => ":xyzzy";
|
---|
526 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
527 | FILE
|
---|
528 | #!perl
|
---|
529 | ( e_ACUTE => "LATIN:e WITH ACUTE",
|
---|
530 | a_ACUTE => "LATIN:a WITH ACUTE",
|
---|
531 | );
|
---|
532 | EXPECT
|
---|
533 | Unknown charname 'LATIN:e WITH ACUTE' at
|
---|
534 | ########
|
---|
535 | # alias with file implicit :full and file has :long aliasses
|
---|
536 | use charnames ":alias" => ":xyzzy";
|
---|
537 | "Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
|
---|
538 | FILE
|
---|
539 | #!perl
|
---|
540 | ( e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE",
|
---|
541 | a_ACUTE => "LATIN SMALL LETTER A WITH ACUTE",
|
---|
542 | );
|
---|
543 | EXPECT
|
---|
544 | $
|
---|