Commit | Line | Data |
---|---|---|
b0f2b690 JH |
1 | #!./perl |
2 | ||
0de7d1a6 | 3 | print "1..45\n"; |
983ffd37 JH |
4 | |
5 | my $test = 1; | |
6 | ||
7 | sub ok { | |
8 | if ($_[0]) { | |
9 | if ($_[1]) { | |
10 | print "ok $test - $_[1]\n"; | |
11 | } else { | |
12 | print "ok $test\n"; | |
13 | } | |
14 | } else { | |
15 | if ($_[1]) { | |
16 | print "not ok $test - $_[1]\n"; | |
17 | } else { | |
18 | print "not ok $test\n"; | |
19 | } | |
20 | } | |
21 | $test++; | |
22 | } | |
b0f2b690 JH |
23 | |
24 | $a = "HELLO.* world"; | |
25 | $b = "hello.* WORLD"; | |
26 | ||
983ffd37 JH |
27 | ok("\Q$a\E." eq "HELLO\\.\\*\\ world.", '\Q\E HELLO.* world'); |
28 | ok("\u$a" eq "HELLO\.\* world", '\u'); | |
29 | ok("\l$a" eq "hELLO\.\* world", '\l'); | |
30 | ok("\U$a" eq "HELLO\.\* WORLD", '\U'); | |
31 | ok("\L$a" eq "hello\.\* world", '\L'); | |
32 | ||
33 | ok(quotemeta($a) eq "HELLO\\.\\*\\ world", 'quotemeta'); | |
34 | ok(ucfirst($a) eq "HELLO\.\* world", 'ucfirst'); | |
35 | ok(lcfirst($a) eq "hELLO\.\* world", 'lcfirst'); | |
36 | ok(uc($a) eq "HELLO\.\* WORLD", 'uc'); | |
37 | ok(lc($a) eq "hello\.\* world", 'lc'); | |
38 | ||
39 | ok("\Q$b\E." eq "hello\\.\\*\\ WORLD.", '\Q\E hello.* WORLD'); | |
40 | ok("\u$b" eq "Hello\.\* WORLD", '\u'); | |
41 | ok("\l$b" eq "hello\.\* WORLD", '\l'); | |
42 | ok("\U$b" eq "HELLO\.\* WORLD", '\U'); | |
43 | ok("\L$b" eq "hello\.\* world", '\L'); | |
44 | ||
45 | ok(quotemeta($b) eq "hello\\.\\*\\ WORLD", 'quotemeta'); | |
46 | ok(ucfirst($b) eq "Hello\.\* WORLD", 'ucfirst'); | |
47 | ok(lcfirst($b) eq "hello\.\* WORLD", 'lcfirst'); | |
48 | ok(uc($b) eq "HELLO\.\* WORLD", 'uc'); | |
49 | ok(lc($b) eq "hello\.\* world", 'lc'); | |
50 | ||
51 | # \x{100} is LATIN CAPITAL LETTER A WITH MACRON; its bijective lowercase is | |
7e965bc5 | 52 | # \x{101}, LATIN SMALL LETTER A WITH MACRON. |
b0f2b690 | 53 | |
2533d950 JH |
54 | $a = "\x{100}\x{101}Aa"; |
55 | $b = "\x{101}\x{100}aA"; | |
b0f2b690 | 56 | |
2533d950 JH |
57 | ok("\Q$a\E." eq "\x{100}\x{101}Aa.", '\Q\E \x{100}\x{101}Aa'); |
58 | ok("\u$a" eq "\x{100}\x{101}Aa", '\u'); | |
59 | ok("\l$a" eq "\x{101}\x{101}Aa", '\l'); | |
60 | ok("\U$a" eq "\x{100}\x{100}AA", '\U'); | |
61 | ok("\L$a" eq "\x{101}\x{101}aa", '\L'); | |
983ffd37 | 62 | |
2533d950 JH |
63 | ok(quotemeta($a) eq "\x{100}\x{101}Aa", 'quotemeta'); |
64 | ok(ucfirst($a) eq "\x{100}\x{101}Aa", 'ucfirst'); | |
65 | ok(lcfirst($a) eq "\x{101}\x{101}Aa", 'lcfirst'); | |
66 | ok(uc($a) eq "\x{100}\x{100}AA", 'uc'); | |
67 | ok(lc($a) eq "\x{101}\x{101}aa", 'lc'); | |
983ffd37 | 68 | |
2533d950 JH |
69 | ok("\Q$b\E." eq "\x{101}\x{100}aA.", '\Q\E \x{101}\x{100}aA'); |
70 | ok("\u$b" eq "\x{100}\x{100}aA", '\u'); | |
71 | ok("\l$b" eq "\x{101}\x{100}aA", '\l'); | |
72 | ok("\U$b" eq "\x{100}\x{100}AA", '\U'); | |
73 | ok("\L$b" eq "\x{101}\x{101}aa", '\L'); | |
983ffd37 | 74 | |
2533d950 JH |
75 | ok(quotemeta($b) eq "\x{101}\x{100}aA", 'quotemeta'); |
76 | ok(ucfirst($b) eq "\x{100}\x{100}aA", 'ucfirst'); | |
77 | ok(lcfirst($b) eq "\x{101}\x{100}aA", 'lcfirst'); | |
78 | ok(uc($b) eq "\x{100}\x{100}AA", 'uc'); | |
79 | ok(lc($b) eq "\x{101}\x{101}aa", 'lc'); | |
983ffd37 JH |
80 | |
81 | # \x{DF} is LATIN SMALL LETTER SHARP S, its uppercase is SS or \x{53}\x{53}; | |
82 | # \x{149} is LATIN SMALL LETTER N PRECEDED BY APOSTROPHE, its uppercase is | |
83 | # \x{2BC}\x{E4} or MODIFIER LETTER APOSTROPHE and N. | |
84 | ||
7e965bc5 | 85 | ok("\U\x{DF}ab\x{149}cd" eq "SSAB\x{2BC}NCD", |
983ffd37 JH |
86 | "multicharacter uppercase"); |
87 | ||
88 | # The \x{DF} is its own lowercase, ditto for \x{149}. | |
89 | # There are no single character -> multiple characters lowercase mappings. | |
b0f2b690 | 90 | |
983ffd37 JH |
91 | ok("\L\x{DF}AB\x{149}CD" eq "\x{DF}ab\x{149}cd", |
92 | "multicharacter lowercase"); | |
b0f2b690 | 93 | |
44bc797b JH |
94 | # titlecase is used for \u / ucfirst. |
95 | ||
96 | # \x{587} is ARMENIAN SMALL LIGATURE ECH YIWN and its titlecase is | |
97 | # \x{535}\x{582} ARMENIAN CAPITAL LETTER ECH + ARMENIAN SMALL LETTER YIWN | |
98 | # while its lowercase is | |
99 | # \x{587} itself | |
100 | # and its uppercase is | |
101 | # \x{535}\x{552} ARMENIAN CAPITAL LETTER ECH + ARMENIAN CAPITAL LETTER YIWN | |
102 | ||
103 | $a = "\x{587}"; | |
104 | ||
105 | ok("\L\x{587}" eq "\x{587}", "ligature lowercase"); | |
106 | ok("\u\x{587}" eq "\x{535}\x{582}", "ligature titlecase"); | |
107 | ok("\U\x{587}" eq "\x{535}\x{552}", "ligature uppercase"); | |
108 |