This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
t/lib/charnames/alias: Fix typo in comment
[perl5.git] / t / lib / charnames / alias
CommitLineData
fbb93542 1Tests for use charnames with compilation errors and aliases.
ea065648 2__END__
22dc4229 3# NAME illegal :pragma
8f852052 4use warnings;
ea065648
NC
5use charnames ":scoobydoo";
6"Here: \N{e_ACUTE}!\n";
7EXPECT
8OPTIONS regex
9unsupported special ':scoobydoo' in charnames at
10########
fbb93542
KW
11# NAME autoload doesn't get vianame
12print "Here: \N{DIGIT ONE}\n";
13charnames::vianame("DIGIT TWO");
14EXPECT
1015ff30
KW
15OPTIONS regex
16Undefined subroutine &charnames::vianame called at - line \d+.
fbb93542
KW
17Here: 1
18########
19# NAME autoload doesn't get viacode
20print "Here: \N{DIGIT THREE}\n";
27c3afbd 21charnames::viacode(utf8::unicode_to_native(0x34));
fbb93542
KW
22EXPECT
23OPTIONS regex
1015ff30 24Undefined subroutine &charnames::viacode called at - line \d+.
fbb93542
KW
25Here: 3
26########
27# NAME autoload doesn't get string_vianame
28print "Here: \N{DIGIT FOUR}\n";
29charnames::string_vianame("DIGIT FIVE");
30EXPECT
31OPTIONS regex
1015ff30 32Undefined subroutine &charnames::string_vianame called at - line \d+.
fbb93542
KW
33Here: 4
34########
22dc4229 35# NAME wrong type of alias (missing colon)
8f852052 36no warnings;
ea065648
NC
37use charnames "alias";
38"Here: \N{e_ACUTE}!\n";
39EXPECT
1015ff30
KW
40OPTIONS regex fatal
41Unknown charname 'e_ACUTE' at - line \d+, within string
ea065648 42########
22dc4229 43# NAME alias without an argument
8f852052 44use warnings;
ea065648
NC
45use charnames ":alias";
46"Here: \N{e_ACUTE}!\n";
47EXPECT
48OPTIONS regex
49:alias needs an argument in charnames at
50########
22dc4229 51# NAME reversed sequence
8f852052 52use warnings;
ea065648
NC
53use charnames ":alias" => ":full";
54"Here: \N{e_ACUTE}!\n";
55EXPECT
56OPTIONS regex
57:alias cannot use existing pragma :full \(reversed order\?\) at
58########
22dc4229 59# NAME alias with hashref but with :short
8f852052
KW
60use warnings;
61no warnings 'void';
ea065648
NC
62use charnames ":short", ":alias" => { e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE" };
63"Here: \N{e_ACUTE}!\n";
64EXPECT
1015ff30
KW
65OPTIONS regex fatal
66Unknown charname 'e_ACUTE' at - line \d+, within string
ea065648 67########
22dc4229 68# NAME alias with hashref to :full OK
8f852052
KW
69use warnings;
70no warnings 'void';
ea065648
NC
71use charnames ":full", ":alias" => { e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE" };
72"Here: \N{e_ACUTE}!\n";
73EXPECT
74OPTIONS regex
75$
76########
22dc4229 77# NAME alias with hashref to :loose OK
38f4139d
KW
78use warnings;
79no warnings 'void';
80use charnames ":loose", ":alias" => { e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE" };
81"Here: \N{e_ACUTE}!\n";
82EXPECT
83OPTIONS regex
84$
85########
22dc4229 86# NAME alias with :loose requires :full type name
38f4139d
KW
87use warnings;
88no warnings 'void';
89use charnames ":loose", ":alias" => { e_ACUTE => "latin SMALL LETTER E WITH ACUTE" };
90"Here: \N{e_ACUTE}!\n";
91EXPECT
1015ff30
KW
92OPTIONS regex fatal
93Unknown charname 'e_ACUTE' at - line \d+, within string
38f4139d 94########
22dc4229 95# NAME alias with hashref to :short but using :full
8f852052
KW
96use warnings;
97no warnings 'void';
ea065648
NC
98use charnames ":full", ":alias" => { e_ACUTE => "LATIN:e WITH ACUTE" };
99"Here: \N{e_ACUTE}!\n";
100EXPECT
1015ff30
KW
101OPTIONS regex fatal
102Unknown charname 'e_ACUTE' at - line \d+, within string
ea065648 103########
22dc4229 104# NAME alias with hashref to :short OK
8f852052
KW
105use warnings;
106no warnings 'void';
ea065648
NC
107use charnames ":short", ":alias" => { e_ACUTE => "LATIN:e WITH ACUTE" };
108"Here: \N{e_ACUTE}!\n";
109EXPECT
110OPTIONS regex
111$
112########
22dc4229 113# NAME alias with bad hashref
8f852052
KW
114use warnings;
115no warnings 'void';
ea065648
NC
116use charnames ":short", ":alias" => "e_ACUTE";
117"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
118EXPECT
119OPTIONS regex
120unicore/e_ACUTE_alias.pl cannot be used as alias file for charnames at
121########
22dc4229 122# NAME alias with arrayref
8f852052
KW
123use warnings;
124no warnings 'void';
ea065648
NC
125use charnames ":short", ":alias" => [ e_ACUTE => "LATIN:e WITH ACUTE" ];
126"Here: \N{e_ACUTE}!\n";
127EXPECT
128OPTIONS regex
129Only HASH reference supported as argument to :alias at
130########
22dc4229 131# NAME alias with bad hashref
8f852052 132no warnings;
ea065648
NC
133use charnames ":short", ":alias" => { e_ACUTE => "LATIN:e WITH ACUTE", "a_ACUTE" };
134"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
135EXPECT
136OPTIONS regex
84374e30 137Unknown charname 'a_ACUTE' at
ea065648 138########
22dc4229 139# NAME alias with hashref two aliases
8f852052
KW
140use warnings;
141no warnings 'void';
ea065648
NC
142use charnames ":short", ":alias" => {
143 e_ACUTE => "LATIN:e WITH ACUTE",
144 a_ACUTE => "",
145 };
146"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
147EXPECT
1015ff30
KW
148OPTIONS regex fatal
149Unknown charname 'a_ACUTE' at - line \d+, within string
ea065648 150########
22dc4229 151# NAME alias with hashref two aliases
8f852052
KW
152use warnings;
153no warnings 'void';
ea065648
NC
154use charnames ":short", ":alias" => {
155 e_ACUTE => "LATIN:e WITH ACUTE",
156 a_ACUTE => "LATIN:a WITH ACUTE",
157 };
158"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
159EXPECT
160OPTIONS regex
161$
162########
22dc4229 163# NAME alias with hashref using mixed aliases
8f852052 164use warnings;
ea065648
NC
165use charnames ":short", ":alias" => {
166 e_ACUTE => "LATIN:e WITH ACUTE",
167 a_ACUTE => "LATIN SMALL LETTER A WITH ACUT",
168 };
169"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
170EXPECT
1015ff30
KW
171OPTIONS regex fatal
172Unknown charname 'a_ACUTE' at - line \d+, within string
ea065648 173########
22dc4229 174# NAME alias with hashref using mixed aliases
8f852052 175use warnings;
ea065648
NC
176use charnames ":short", ":alias" => {
177 e_ACUTE => "LATIN:e WITH ACUTE",
178 a_ACUTE => "LATIN SMALL LETTER A WITH ACUTE",
179 };
180"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
181EXPECT
1015ff30
KW
182OPTIONS regex fatal
183Unknown charname 'a_ACUTE' at - line \d+, within string
ea065648 184########
22dc4229 185# NAME alias with hashref using mixed aliases
8f852052
KW
186use warnings;
187no warnings 'void';
ea065648
NC
188use charnames ":full", ":alias" => {
189 e_ACUTE => "LATIN:e WITH ACUTE",
190 a_ACUTE => "LATIN SMALL LETTER A WITH ACUTE",
191 };
192"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
193EXPECT
1015ff30
KW
194OPTIONS regex fatal
195Unknown charname 'e_ACUTE' at - line \d+, within string
ea065648 196########
22dc4229 197# NAME alias with nonexisting file
8f852052
KW
198use warnings;
199no warnings 'void';
34ea573b 200use charnames ":full", ":alias" => "non_existing_xyzzy";
ea065648
NC
201"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
202EXPECT
203OPTIONS regex
34ea573b 204unicore/non_existing_xyzzy_alias.pl cannot be used as alias file for charnames at
ea065648 205########
22dc4229 206# NAME alias with bad file name
8f852052
KW
207use warnings;
208no warnings 'void';
ea065648
NC
209use charnames ":full", ":alias" => "xy 7-";
210"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
211EXPECT
212OPTIONS regex
013b94b6 213Charnames alias file names can only have identifier characters at
ea065648 214########
22dc4229 215# NAME alias with non_absolute (existing) file name (which it should /not/ use)
8f852052
KW
216use warnings;
217no warnings 'void';
ea065648
NC
218use charnames ":full", ":alias" => "perl";
219"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
220EXPECT
221OPTIONS regex
222unicore/perl_alias.pl cannot be used as alias file for charnames at
223########
99bc9185 224# NAME alias with bad file
463cf062 225--FILE-- ../../lib/unicore/xyzzy_alias.pl
ea065648
NC
226#!perl
2270;
228--FILE--
8f852052
KW
229use warnings;
230no warnings 'void';
ea065648
NC
231use charnames ":full", ":alias" => "xyzzy";
232"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
233EXPECT
234OPTIONS regex
235unicore/xyzzy_alias.pl did not return a \(valid\) list of alias pairs at
236########
99bc9185 237# NAME alias with file with empty list
463cf062 238--FILE-- ../../lib/unicore/xyzzy_alias.pl
ea065648
NC
239#!perl
240();
241--FILE--
8f852052
KW
242use warnings;
243no warnings 'void';
ea065648
NC
244use charnames ":full", ":alias" => "xyzzy";
245"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
246EXPECT
1015ff30
KW
247OPTIONS regex fatal
248Unknown charname 'e_ACUTE' at - line \d+, within string
ea065648 249########
99bc9185 250# NAME alias with file OK but file has :short aliases
463cf062 251--FILE-- ../../lib/unicore/xyzzy_alias.pl
ea065648
NC
252#!perl
253( e_ACUTE => "LATIN:e WITH ACUTE",
254 a_ACUTE => "LATIN:a WITH ACUTE",
255 );
256--FILE--
8f852052
KW
257use warnings;
258no warnings 'void';
ea065648
NC
259use charnames ":full", ":alias" => "xyzzy";
260"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
261EXPECT
1015ff30
KW
262OPTIONS regex fatal
263Unknown charname 'e_ACUTE' at - line \d+, within string
ea065648 264########
99bc9185 265# NAME alias with :short and file OK
463cf062 266--FILE-- ../../lib/unicore/xyzzy_alias.pl
ea065648
NC
267#!perl
268( e_ACUTE => "LATIN:e WITH ACUTE",
269 a_ACUTE => "LATIN:a WITH ACUTE",
270 );
271--FILE--
8f852052
KW
272use warnings;
273no warnings 'void';
ea065648
NC
274use charnames ":short", ":alias" => "xyzzy";
275"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
276EXPECT
277OPTIONS regex
278$
279########
99bc9185 280# NAME alias with :short and file OK has :long aliases
463cf062 281--FILE-- ../../lib/unicore/xyzzy_alias.pl
ea065648
NC
282#!perl
283( e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE",
284 a_ACUTE => "LATIN SMALL LETTER A WITH ACUTE",
285 );
286--FILE--
8f852052
KW
287use warnings;
288no warnings 'void';
ea065648
NC
289use charnames ":short", ":alias" => "xyzzy";
290"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
291EXPECT
1015ff30
KW
292OPTIONS regex fatal
293Unknown charname 'e_ACUTE' at - line \d+, within string
ea065648 294########
99bc9185 295# NAME alias with file implicit :full but file has :short aliases
463cf062 296--FILE-- ../../lib/unicore/xyzzy_alias.pl
ea065648
NC
297#!perl
298( e_ACUTE => "LATIN:e WITH ACUTE",
299 a_ACUTE => "LATIN:a WITH ACUTE",
300 );
301--FILE--
8f852052
KW
302use warnings;
303no warnings 'void';
ea065648
NC
304use charnames ":alias" => ":xyzzy";
305"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
306EXPECT
1015ff30
KW
307OPTIONS regex fatal
308Unknown charname 'e_ACUTE' at - line \d+, within string
ea065648 309########
99bc9185 310# NAME alias with file implicit :full and file has :long aliases
463cf062 311--FILE-- ../../lib/unicore/xyzzy_alias.pl
ea065648
NC
312#!perl
313( e_ACUTE => "LATIN SMALL LETTER E WITH ACUTE",
314 a_ACUTE => "LATIN SMALL LETTER A WITH ACUTE",
315 );
316--FILE--
8f852052
KW
317use warnings;
318no warnings 'void';
ea065648
NC
319use charnames ":alias" => ":xyzzy";
320"Here: \N{e_ACUTE}\N{a_ACUTE}!\n";
321EXPECT
322OPTIONS regex
323$
03f95285 324########
22dc4229 325# NAME charnames with no import still works for runtime functions
03f95285
KW
326use warnings;
327no warnings 'void';
328use charnames ();
329charnames::vianame('SPACE');
27c3afbd 330charnames::viacode(utf8::unicode_to_native(0x41));
03f95285
KW
331EXPECT
332OPTIONS regex
333$
424313d4
KW
334########
335# NAME no extraneous warning [perl #11560]
336use warnings;
337use charnames ();
27c3afbd 338print charnames::viacode(utf8::unicode_to_native(0x80)), "\n";
424313d4
KW
339EXPECT
340OPTIONS regex
341PADDING CHARACTER
225fb84f 342########
27c3afbd
KW
343# NAME A wrong character in :alias is an error
344# These next tests could be combined, but the messages can come out in
345# different orders on EBCDIC vs ASCII, and can't have both 'random' and 'regex'
346# options, and need 'regex' to avoid 'at line X' getting in the way.
225fb84f
KW
347use charnames ":full", ":alias" => {
348 "4e_ACUTE" => "LATIN SMALL LETTER E WITH ACUTE",
225fb84f
KW
349 };
350EXPECT
351OPTIONS regex
352Invalid character in charnames alias definition; marked by <-- HERE in '4<-- HERE e_ACUTE'
27c3afbd
KW
353########
354# NAME Another wrong character in :alias is an error
355use charnames ":full", ":alias" => {
356 "e_A,CUTE" => "LATIN SMALL LETTER E WITH ACUTE",
357 };
358EXPECT
359OPTIONS regex
225fb84f 360Invalid character in charnames alias definition; marked by <-- HERE in 'e_A,<-- HERE CUTE'
27c3afbd
KW
361########
362# NAME Another wrong character in :alias is an error
363# The EXPECT regex matches both the UTF-8 and non-UTF-8 form.
364# This is because under some circumstances the message gets output as UTF-8.
365# We use \xab, as that is invalid in both ASCII and EBCDIC platforms, and we
366# accept both UTF-8 and 1047 UTF-EBCDIC.
367use charnames ":full", ":alias" => {
368 "e_ACUT\x{ab}E" => "LATIN SMALL LETTER E WITH ACUTE",
369 };
370EXPECT
371OPTIONS regex
372Invalid character in charnames alias definition; marked by <-- HERE in 'e_ACUT(?:\x{ab}|\x{C2}\x{AB}|\x{80\x{73})<-- HERE E'
dd2b1b72 373########
bde9e88d
KW
374# RT#73022
375# NAME \N{...} interprets ... as octets rather than UTF-8
dd2b1b72
BF
376use utf8;
377use open qw( :utf8 :std );
bde9e88d
KW
378use charnames ":full", ":alias" => { "自転車に乗る人" => "BICYCLIST" };
379print "ok\n" if "\N{自転車に乗る人}" eq "\x{1F6B4}";
dd2b1b72
BF
380EXPECT
381ok
bde9e88d
KW
382########
383# NAME Misspelled \N{} UTF-8 names are errors
384use utf8;
385use open qw( :utf8 :std );
386use charnames ":full", ":alias" => { "自転車に乗る人" => "BICYCLIST" };
387print "ok\n" if "\N{転車に乗る人}" eq "\x{1F6B4}";
388EXPECT
389OPTIONS regex
390Unknown charname '転車に乗る人' at - line \d+, within string
391########
392# NAME various wrong UTF-8 characters in :alias are errors
393# First has a punctuation, KATAKANA MIDDLE DOT, in it; second begins with a
394# digit: ARABIC-INDIC DIGIT FOUR
8ecb76b6 395# Note that output order is alphabetical by character name
bde9e88d
KW
396use utf8;
397use open qw( :utf8 :std );
398use charnames ":full", ":alias" => { "自転車・に乗る人" => "BICYCLIST",
399 "٤転車に乗る人" => "BICYCLIST",
2d8eb851
KW
400 "TOO MANY SPACES" => "NO ENTRY SIGN",
401 "TRAILING SPACE " => "FACE WITH NO GOOD GESTURE"
bde9e88d 402 };
2d8eb851
KW
403print "ok\n" if "\N{TOO MANY SPACES}" eq "\x{1F6AB}";
404print "ok\n" if "\N{TRAILING SPACE }" eq "\x{1F645}";
bde9e88d
KW
405print "ok\n" if "\N{自転車・に乗る人}" eq "\x{1F6B4}";
406print "ok\n" if "\N{٤転車に乗る人}" eq "\x{1F6B4}";
407EXPECT
2d8eb851
KW
408OPTIONS regex fatal
409charnames alias definitions may not contain a sequence of multiple spaces; marked by <-- HERE in 'TOO <-- HERE MANY SPACES'
410charnames alias definitions may not contain trailing white-space; marked by <-- HERE in 'TRAILING SPACE <-- HERE '
bde9e88d
KW
411Invalid character in charnames alias definition; marked by <-- HERE in '٤<-- HERE 転車に乗る人'
412Invalid character in charnames alias definition; marked by <-- HERE in '自転車・<-- HERE に乗る人' at - line \d+
df758df2 413########
245c9183 414# NAME Using NBSP in :alias names is deprecated
df758df2
KW
415use utf8;
416use open qw( :utf8 :std );
417use charnames ":alias" => { "NBSP SEPARATED SPACE" => "BLACK SMILING FACE" };
418print "ok\n" if "\N{NBSP SEPARATED SPACE}" eq "\x{263B}";
df758df2 419EXPECT
61463a3e
KW
420OPTIONS regex fatal
421Invalid character in charnames alias definition; marked by <-- HERE in 'NBSP <-- HERE SEPARATED SPACE' at - line 3