do subname() is deprecated, so this test from perl 3 needs updating.
[p5sagit/p5-mst-13.2.git] / t / uni / latin2.t
CommitLineData
9e08bc66 1BEGIN {
2 if ($ENV{'PERL_CORE'}){
3 chdir 't';
4 @INC = '../lib';
5 }
6 require Config; import Config;
7 if ($Config{'extensions'} !~ /\bEncode\b/) {
8 print "1..0 # Skip: Encode was not built\n";
9 exit 0;
10 }
11 if (ord("A") == 193) {
12 print "1..0 # Skip: EBCDIC\n";
13 exit 0;
14 }
15 unless (PerlIO::Layer->find('perlio')){
16 print "1..0 # Skip: PerlIO required\n";
17 exit 0;
18 }
19 if ($ENV{PERL_CORE_MINITEST}) {
20 print "1..0 # Skip: no dynamic loading on miniperl, no Encode\n";
21 exit 0;
22 }
23 $| = 1;
24 require './test.pl';
25}
26
27plan tests => 94;
28
29use encoding "latin2"; # iso 8859-2
30
31# U+00C1, \xC1, \301, LATIN CAPITAL LETTER A WITH ACUTE
32# U+0102, \xC3, \402, LATIN CAPITAL LETTER A WITH BREVE
33# U+00E1, \xE1, \303, LATIN SMALL LETTER A WITH ACUTE
34# U+0103, \xE3, \403, LATIN SMALL LETTER A WITH BREVE
35
36ok("\xC1" =~ /\xC1/, '\xC1 to /\xC1/');
37ok("\x{C1}" =~ /\x{C1}/, '\x{C1} to /\x{C1}/');
38ok("\xC3" =~ /\xC3/, '\xC3 to /\xC3/');
39ok("\x{102}" =~ /\xC3/, '\x{102} to /\xC3/');
40ok("\xC3" =~ /\x{C3}/, '\xC3 to /\x{C3}/');
41ok("\x{102}" =~ /\x{C3}/, '\x{102} to /\x{C3}/');
42ok("\xC3" =~ /\x{102}/, '\xC3 to /\x{102}/');
43ok("\x{102}" =~ /\x{102}/, '\x{102} to /\x{102}/');
44
45ok("\xC1" =~ /\xC1/i, '\xC1 to /\xC1/i');
46ok("\xE1" =~ /\xC1/i, '\xE1 to /\xC1/i');
47ok("\xC1" =~ /\xE1/i, '\xC1 to /\xE1/i');
48ok("\xE1" =~ /\xE1/i, '\xE1 to /\xE1/i');
49ok("\x{102}" =~ /\xC3/i, '\x{102} to /\xC3/i');
50ok("\x{103}" =~ /\xC3/i, '\x{103} to /\xC3/i');
51ok("\x{102}" =~ /\xE3/i, '\x{102} to /\xE3/i');
52ok("\x{103}" =~ /\xE3/i, '\x{103} to /\xE3/i');
53
54ok("\xC1" =~ /[\xC1]/, '\xC1 to /[\xC1]/');
55ok("\x{C1}" =~ /[\x{C1}]/, '\x{C1} to /[\x{C1}]/');
56ok("\xC3" =~ /[\xC3]/, '\xC3 to /[\xC3]/');
57ok("\x{102}" =~ /[\xC3]/, '\x{102} to /[\xC3]/');
58ok("\xC3" =~ /[\x{C3}]/, '\xC3 to /[\x{C3}]/');
59ok("\x{102}" =~ /[\x{C3}]/, '\x{102} to /[\x{C3}]/');
60ok("\xC3" =~ /[\x{102}]/, '\xC3 to /[\x{102}]/');
61ok("\x{102}" =~ /[\x{102}]/, '\x{102} to /[\x{102}]/');
62
63ok("\xC1" =~ /[\xC1]/i, '\xC1 to /[\xC1]/i');
64ok("\xE1" =~ /[\xC1]/i, '\xE1 to /[\xC1]/i');
65ok("\xC1" =~ /[\xE1]/i, '\xC1 to /[\xE1]/i');
66ok("\xE1" =~ /[\xE1]/i, '\xE1 to /[\xE1]/i');
67ok("\x{102}" =~ /[\xC3]/i, '\x{102} to /[\xC3]/i');
68ok("\x{103}" =~ /[\xC3]/i, '\x{103} to /[\xC3]/i');
69ok("\x{102}" =~ /[\xE3]/i, '\x{102} to /[\xE3]/i');
70ok("\x{103}" =~ /[\xE3]/i, '\x{103} to /[\xE3]/i');
71
72ok("\xC1" =~ '\xC1', '\xC1 to \'\xC1\'');
73ok("\xC1" =~ '\x{C1}', '\xC1 to \'\x{C1}\'');
74ok("\xC3" =~ '\303', '\xC3 to \'\303\'');
75ok("\xC3" =~ '\x{102}', '\xC3 to \'\x{102}\'');
76ok("\xC1" =~ '[\xC1]', '\xC1 to \'[\xC1]\'');
77ok("\xC1" =~ '[\x{C1}]', '\xC1 to \'[\x{C1}]\'');
78ok("\xC3" =~ '[\303]', '\xC3 to \'[\303]\'');
79ok("\xC3" =~ '[\x{102}]', '\xC3 to \'[\x{102}]\'');
80
81ok("\xC1" =~ /Á/, '\xC1 to /<A-acute>/');
82ok("\xE1" !~ /Á/, '\xE1 to /<A-acute>/');
83ok("\xC1" =~ /Á/i, '\xC1 to /<A-acute>/i');
84ok("\xE1" =~ /Á/i, '\xE1 to /<A-acute>/i');
85ok("\xC1" =~ /[Á]/, '\xC1 to /[<A-acute>]/');
86ok("\xE1" !~ /[Á]/, '\xE1 to /[<A-acute>]/');
87ok("\xC1" =~ /[Á]/i, '\xC1 to /[<A-acute>]/i');
88ok("\xE1" =~ /[Á]/i, '\xE1 to /[<A-acute>]/i');
89
90ok("\xC1\xC1" =~ /Á\xC1/, '\xC1\xC1 to /<A-acute>\xC1/');
91ok("\xC1\xC1" =~ /\xC1Á/, '\xC1\xC1 to /\xC1<A-acute>/');
92ok("\xC1\xC1" =~ /Á\xC1/i, '\xC1\xC1 to /<A-acute>\xC1/i');
93ok("\xC1\xC1" =~ /\xC1Á/i, '\xC1\xC1 to /\xC1<A-acute>/i');
94ok("\xC1\xE1" =~ /Á\xC1/i, '\xC1\xE1 to /<A-acute>\xC1/i');
95ok("\xC1\xE1" =~ /\xC1Á/i, '\xC1\xE1 to /\xC1<A-acute>/i');
96ok("\xE1\xE1" =~ /Á\xC1/i, '\xE1\xE1 to /<A-acute>\xC1/i');
97ok("\xE1\xE1" =~ /\xC1Á/i, '\xE1\xE1 to /\xC1<A-acute>/i');
98
99# \xDF is LATIN SMALL LETTER SHARP S
100
101ok("\xDF" =~ /\xDF/, '\xDF to /\xDF/');
102ok("\xDF" =~ /\xDF/i, '\xDF to /\xDF/i');
103ok("\xDF" =~ /[\xDF]/, '\xDF to /[\xDF]/');
104ok("\xDF" =~ /[\xDF]/i, '\xDF to /[\xDF]/i');
105ok("\xDF" =~ /ß/, '\xDF to /<sharp-s>/');
106ok("\xDF" =~ /ß/i, '\xDF to /<sharp-s>/i');
107ok("\xDF" =~ /[ß]/, '\xDF to /[<sharp-s>]/');
108ok("\xDF" =~ /[ß]/i, '\xDF to /[<sharp-s>]/i');
109
110ok("SS" =~ /\xDF/i, 'SS to /\xDF/i');
111ok("Ss" =~ /\xDF/i, 'Ss to /\xDF/i');
112ok("sS" =~ /\xDF/i, 'sS to /\xDF/i');
113ok("ss" =~ /\xDF/i, 'ss to /\xDF/i');
114ok("SS" =~ /ß/i, 'SS to /<sharp-s>/i');
115ok("Ss" =~ /ß/i, 'Ss to /<sharp-s>/i');
116ok("sS" =~ /ß/i, 'sS to /<sharp-s>/i');
117ok("ss" =~ /ß/i, 'ss to /<sharp-s>/i');
118
119ok("\xC3" =~ /\303/, '\xC1 to /\303/');
120ok("\303" =~ /\303/, '\303 to /\303/');
121ok("\xC3" =~ /\303/i, '\xC1 to /\303/i');
122ok("\xE3" =~ /\303/i, '\xC1 to /\303/i');
123ok("\xC3" =~ /[\303]/, '\xC1 to /[\303]/');
124ok("\303" =~ /[\303]/, '\303 to /[\303]/');
125ok("\xC3" =~ /[\303]/i, '\xC1 to /[\303]/i');
126ok("\xE3" =~ /[\303]/i, '\xC1 to /[\303]/i');
127
128ok("\xC3" =~ /\402/, '\xC1 to /\402/');
129ok("\402" =~ /\402/, '\402 to /\402/');
130ok("\xC3" =~ /\402/i, '\xC1 to /\402/i');
131ok("\xE3" =~ /\402/i, '\xC1 to /\402/i');
132ok("\xC3" =~ /[\402]/, '\xC1 to /[\402]/');
133ok("\402" =~ /[\402]/, '\402 to /[\402]/');
134ok("\xC3" =~ /[\402]/i, '\xC1 to /[\402]/i');
135ok("\xE3" =~ /[\402]/i, '\xC1 to /[\402]/i');
136
137{
138 my $re = '(?i:\xC1)';
139
140 ok("\xC1" =~ $re, '\xC1 to (?i:\xC1)');
141 ok("\xE1" =~ $re, '\xE1 to (?i:\xC1)');
142
143 utf8::downgrade($re);
144
145 ok("\xC1" =~ $re, '\xC1 to (?i:\xC1) down');
146 ok("\xE1" =~ $re, '\xE1 to (?i:\xC1) down');
147
148 utf8::upgrade($re);
149
150 ok("\xC1" =~ $re, '\xC1 to (?i:\xC1) up');
151 ok("\xE1" =~ $re, '\xE1 to (?i:\xC1) up');
152}
153