xref: /openbsd/gnu/usr.bin/perl/t/uni/latin2.t (revision cecf84d4)
1#!./perl -w
2
3BEGIN {
4    require './test.pl';
5    skip_all_without_dynamic_extension('Encode');
6    skip_all("EBCDIC") if $::IS_EBCDIC;
7    skip_all_without_perlio();
8}
9
10plan tests => 94;
11
12no warnings 'deprecated';
13use encoding "latin2"; # iso 8859-2
14
15# U+00C1, \xC1, \301, LATIN CAPITAL LETTER A WITH ACUTE
16# U+0102, \xC3, \402, LATIN CAPITAL LETTER A WITH BREVE
17# U+00E1, \xE1, \303, LATIN SMALL LETTER A WITH ACUTE
18# U+0103, \xE3, \403, LATIN SMALL LETTER A WITH BREVE
19
20ok("\xC1"    =~ /\xC1/,     '\xC1 to /\xC1/');
21ok("\x{C1}"  =~ /\x{C1}/,   '\x{C1} to /\x{C1}/');
22ok("\xC3"    =~ /\xC3/,     '\xC3 to /\xC3/');
23ok("\x{102}" =~ /\xC3/,     '\x{102} to /\xC3/');
24ok("\xC3"    =~ /\x{C3}/,   '\xC3 to /\x{C3}/');
25ok("\x{102}" =~ /\x{C3}/,   '\x{102} to /\x{C3}/');
26ok("\xC3"    =~ /\x{102}/,  '\xC3 to /\x{102}/');
27ok("\x{102}" =~ /\x{102}/,  '\x{102} to /\x{102}/');
28
29ok("\xC1"    =~ /\xC1/i,    '\xC1 to /\xC1/i');
30ok("\xE1"    =~ /\xC1/i,    '\xE1 to /\xC1/i');
31ok("\xC1"    =~ /\xE1/i,    '\xC1 to /\xE1/i');
32ok("\xE1"    =~ /\xE1/i,    '\xE1 to /\xE1/i');
33ok("\x{102}" =~ /\xC3/i,    '\x{102} to /\xC3/i');
34ok("\x{103}" =~ /\xC3/i,    '\x{103} to /\xC3/i');
35ok("\x{102}" =~ /\xE3/i,    '\x{102} to /\xE3/i');
36ok("\x{103}" =~ /\xE3/i,    '\x{103} to /\xE3/i');
37
38ok("\xC1"    =~ /[\xC1]/,     '\xC1 to /[\xC1]/');
39ok("\x{C1}"  =~ /[\x{C1}]/,   '\x{C1} to /[\x{C1}]/');
40ok("\xC3"    =~ /[\xC3]/,     '\xC3 to /[\xC3]/');
41ok("\x{102}" =~ /[\xC3]/,     '\x{102} to /[\xC3]/');
42ok("\xC3"    =~ /[\x{C3}]/,   '\xC3 to /[\x{C3}]/');
43ok("\x{102}" =~ /[\x{C3}]/,   '\x{102} to /[\x{C3}]/');
44ok("\xC3"    =~ /[\x{102}]/,  '\xC3 to /[\x{102}]/');
45ok("\x{102}" =~ /[\x{102}]/,  '\x{102} to /[\x{102}]/');
46
47ok("\xC1"    =~ /[\xC1]/i,  '\xC1 to /[\xC1]/i');
48ok("\xE1"    =~ /[\xC1]/i,  '\xE1 to /[\xC1]/i');
49ok("\xC1"    =~ /[\xE1]/i,  '\xC1 to /[\xE1]/i');
50ok("\xE1"    =~ /[\xE1]/i,  '\xE1 to /[\xE1]/i');
51ok("\x{102}" =~ /[\xC3]/i,  '\x{102} to /[\xC3]/i');
52ok("\x{103}" =~ /[\xC3]/i,  '\x{103} to /[\xC3]/i');
53ok("\x{102}" =~ /[\xE3]/i,  '\x{102} to /[\xE3]/i');
54ok("\x{103}" =~ /[\xE3]/i,  '\x{103} to /[\xE3]/i');
55
56ok("\xC1"    =~ '\xC1',       '\xC1 to \'\xC1\'');
57ok("\xC1"    =~ '\x{C1}',     '\xC1 to \'\x{C1}\'');
58ok("\xC3"    =~ '\303',       '\xC3 to \'\303\'');
59ok("\xC3"    =~ '\x{102}',    '\xC3 to \'\x{102}\'');
60ok("\xC1"    =~ '[\xC1]',     '\xC1 to \'[\xC1]\'');
61ok("\xC1"    =~ '[\x{C1}]',   '\xC1 to \'[\x{C1}]\'');
62ok("\xC3"    =~ '[\303]',     '\xC3 to \'[\303]\'');
63ok("\xC3"    =~ '[\x{102}]',  '\xC3 to \'[\x{102}]\'');
64
65ok("\xC1"    =~ /�/,     '\xC1 to /<A-acute>/');
66ok("\xE1"    !~ /�/,     '\xE1 to /<A-acute>/');
67ok("\xC1"    =~ /�/i,    '\xC1 to /<A-acute>/i');
68ok("\xE1"    =~ /�/i,    '\xE1 to /<A-acute>/i');
69ok("\xC1"    =~ /[�]/,   '\xC1 to /[<A-acute>]/');
70ok("\xE1"    !~ /[�]/,   '\xE1 to /[<A-acute>]/');
71ok("\xC1"    =~ /[�]/i,  '\xC1 to /[<A-acute>]/i');
72ok("\xE1"    =~ /[�]/i,  '\xE1 to /[<A-acute>]/i');
73
74ok("\xC1\xC1"  =~ /�\xC1/,    '\xC1\xC1 to /<A-acute>\xC1/');
75ok("\xC1\xC1"  =~ /\xC1�/,    '\xC1\xC1 to /\xC1<A-acute>/');
76ok("\xC1\xC1"  =~ /�\xC1/i,   '\xC1\xC1 to /<A-acute>\xC1/i');
77ok("\xC1\xC1"  =~ /\xC1�/i,   '\xC1\xC1 to /\xC1<A-acute>/i');
78ok("\xC1\xE1"  =~ /�\xC1/i,   '\xC1\xE1 to /<A-acute>\xC1/i');
79ok("\xC1\xE1"  =~ /\xC1�/i,   '\xC1\xE1 to /\xC1<A-acute>/i');
80ok("\xE1\xE1"  =~ /�\xC1/i,   '\xE1\xE1 to /<A-acute>\xC1/i');
81ok("\xE1\xE1"  =~ /\xC1�/i,   '\xE1\xE1 to /\xC1<A-acute>/i');
82
83# \xDF is LATIN SMALL LETTER SHARP S
84
85ok("\xDF" =~ /\xDF/,    '\xDF to /\xDF/');
86ok("\xDF" =~ /\xDF/i,   '\xDF to /\xDF/i');
87ok("\xDF" =~ /[\xDF]/,  '\xDF to /[\xDF]/');
88ok("\xDF" =~ /[\xDF]/i, '\xDF to /[\xDF]/i');
89ok("\xDF" =~ /�/,       '\xDF to /<sharp-s>/');
90ok("\xDF" =~ /�/i,      '\xDF to /<sharp-s>/i');
91ok("\xDF" =~ /[�]/,     '\xDF to /[<sharp-s>]/');
92ok("\xDF" =~ /[�]/i,    '\xDF to /[<sharp-s>]/i');
93
94ok("SS"   =~ /\xDF/i,   'SS to /\xDF/i');
95ok("Ss"   =~ /\xDF/i,   'Ss to /\xDF/i');
96ok("sS"   =~ /\xDF/i,   'sS to /\xDF/i');
97ok("ss"   =~ /\xDF/i,   'ss to /\xDF/i');
98ok("SS"   =~ /�/i,      'SS to /<sharp-s>/i');
99ok("Ss"   =~ /�/i,      'Ss to /<sharp-s>/i');
100ok("sS"   =~ /�/i,      'sS to /<sharp-s>/i');
101ok("ss"   =~ /�/i,      'ss to /<sharp-s>/i');
102
103ok("\xC3" =~ /\303/,     '\xC1 to /\303/');
104ok("\303" =~ /\303/,     '\303 to /\303/');
105ok("\xC3" =~ /\303/i,    '\xC1 to /\303/i');
106ok("\xE3" =~ /\303/i,    '\xC1 to /\303/i');
107ok("\xC3" =~ /[\303]/,   '\xC1 to /[\303]/');
108ok("\303" =~ /[\303]/,   '\303 to /[\303]/');
109ok("\xC3" =~ /[\303]/i,  '\xC1 to /[\303]/i');
110ok("\xE3" =~ /[\303]/i,  '\xC1 to /[\303]/i');
111
112ok("\xC3" =~ /\402/,     '\xC1 to /\402/');
113ok("\402" =~ /\402/,     '\402 to /\402/');
114ok("\xC3" =~ /\402/i,    '\xC1 to /\402/i');
115ok("\xE3" =~ /\402/i,    '\xC1 to /\402/i');
116ok("\xC3" =~ /[\402]/,   '\xC1 to /[\402]/');
117ok("\402" =~ /[\402]/,   '\402 to /[\402]/');
118ok("\xC3" =~ /[\402]/i,  '\xC1 to /[\402]/i');
119ok("\xE3" =~ /[\402]/i,  '\xC1 to /[\402]/i');
120
121{
122    my $re = '(?i:\xC1)';
123
124    ok("\xC1" =~ $re, '\xC1 to (?i:\xC1)');
125    ok("\xE1" =~ $re, '\xE1 to (?i:\xC1)');
126
127    utf8::downgrade($re);
128
129    ok("\xC1" =~ $re, '\xC1 to (?i:\xC1) down');
130    ok("\xE1" =~ $re, '\xE1 to (?i:\xC1) down');
131
132    utf8::upgrade($re);
133
134    ok("\xC1" =~ $re, '\xC1 to (?i:\xC1) up');
135    ok("\xE1" =~ $re, '\xE1 to (?i:\xC1) up');
136}
137
138