Integrate mainline
[p5sagit/p5-mst-13.2.git] / ext / Encode / t / Aliases.t
1 #!../perl
2
3 BEGIN {
4     if (! -d 'blib' and -d 't'){ chdir 't' };
5     unshift @INC, '../lib';
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 }
12
13 use strict;
14 use Encode;
15 use Encode::Alias;
16 my %a2c;
17 my $ON_EBCDIC;
18
19 BEGIN{
20     $ON_EBCDIC = ord("A") == 193;
21     @ARGV and $ON_EBCDIC = $ARGV[0] eq 'EBCDIC';
22     $Encode::ON_EBCDIC = $ON_EBCDIC;
23
24     %a2c = (
25             'ascii'    => 'US-ascii',
26             'cyrillic' => 'iso-8859-5',
27             'arabic'   => 'iso-8859-6',
28             'greek'    => 'iso-8859-7',
29             'hebrew'   => 'iso-8859-8',
30             'thai'     => 'iso-8859-11',
31             'tis620'   => 'iso-8859-11',
32             'WinLatin1'     => 'cp1252',
33             'WinLatin2'     => 'cp1250',
34             'WinCyrillic'   => 'cp1251',
35             'WinGreek'      => 'cp1253',
36             'WinTurkish'    => 'cp1254',
37             'WinHebrew'     => 'cp1255',
38             'WinArabic'     => 'cp1256',
39             'WinBaltic'     => 'cp1257',
40             'WinVietnamese' => 'cp1258',
41             'ja_JP.euc'     => $ON_EBCDIC ? '' : 'euc-jp',
42             'x-euc-jp'      => $ON_EBCDIC ? '' : 'euc-jp',
43             'zh_CN.euc'     => $ON_EBCDIC ? '' : 'euc-cn',
44             'x-euc-cn'      => $ON_EBCDIC ? '' : 'euc-cn',
45             'ko_KR.euc'     => $ON_EBCDIC ? '' : 'euc-kr',
46             'x-euc-kr'      => $ON_EBCDIC ? '' : 'euc-kr',
47             'ujis'          => $ON_EBCDIC ? '' : 'euc-jp',
48             'Shift_JIS'     => $ON_EBCDIC ? '' : 'shiftjis',
49             'x-sjis'        => $ON_EBCDIC ? '' : 'shiftjis',
50             'jis'           => $ON_EBCDIC ? '' : '7bit-jis',
51             'big-5'         => $ON_EBCDIC ? '' : 'big5',
52             'zh_TW.Big5'    => $ON_EBCDIC ? '' : 'big5',
53             'big5-hk'       => $ON_EBCDIC ? '' : 'big5-hkscs',
54             'GB_2312-80'    => $ON_EBCDIC ? '' : 'euc-cn',
55             'gb2312-raw'    => $ON_EBCDIC ? '' : 'gb2312-raw',
56             'gb12345-raw'   => $ON_EBCDIC ? '' : 'gb12345-raw',
57             'KS_C_5601-1987'    => $ON_EBCDIC ? '' : 'cp949',
58             'ksc5601-raw'       => $ON_EBCDIC ? '' : 'ksc5601-raw',
59             );
60
61     for my $i (1..11,13..16){
62         $a2c{"ISO 8859 $i"} = "iso-8859-$i";
63     }
64     for my $i (1..10){
65         $a2c{"ISO Latin $i"} = "iso-8859-$Encode::Alias::Latin2iso[$i]";
66     }
67     for my $k (keys %Encode::Alias::Winlatin2cp){
68         my $v = $Encode::Alias::Winlatin2cp{$k};
69         $a2c{"Win" . ucfirst($k)} = "cp" . $v;
70         $a2c{"IBM-$v"} = $a2c{"MS-$v"} = "cp" . $v;
71     }
72 }
73
74 if ($ON_EBCDIC){
75     delete @Encode::ExtModule{
76         qw(euc-cn gb2312 gb12345 gbk cp936 iso-ir-165
77            euc-jp iso-2022-jp 7bit-jis shiftjis MacJapanese cp932
78            euc-kr ksc5601 cp949
79            big5 big5-hkscs cp950
80            gb18030 big5plus euc-tw)
81         };
82 }
83
84 use Test::More tests => (scalar keys %a2c) * 3;
85
86 print "# alias test;  \$ON_EBCDIC == $ON_EBCDIC\n";
87
88 foreach my $a (keys %a2c){           
89     my $e = Encode::find_encoding($a);
90     is((defined($e) and $e->name), $a2c{$a});
91 }
92
93 # now we override some of the aliases and see if it works fine
94
95 define_alias(ascii    => 'WinLatin1',
96              cyrillic => 'WinCyrillic',
97              arabic   => 'WinArabic',
98              greek    => 'WinGreek',
99              hebrew   => 'WinHebrew');
100
101 @a2c{qw(ascii cyrillic arabic greek hebrew)} =
102     qw(cp1252 cp1251 cp1256 cp1253 cp1255);
103
104 unless ($ON_EBCDIC){
105     define_alias( qr/shift.*jis$/i  => '"MacJapanese"',
106                   qr/sjis$/i        => '"cp932"' );
107     @a2c{qw(Shift_JIS x-sjis)} = qw(MacJapanese cp932);
108 }
109
110 print "# alias test with alias overrides\n";
111
112 foreach my $a (keys %a2c){           
113     my $e = Encode::find_encoding($a);
114     is((defined($e) and $e->name), $a2c{$a})
115         or warn "alias was $a";
116 }
117
118 print "# alias undef test\n";
119
120 Encode::Alias->undef_aliases;
121 foreach my $a (keys %a2c){           
122     my $e = Encode::find_encoding($a);
123     ok(!defined($e) || $e->name =~ /-raw$/o);
124 }
125
126 __END__
127 for (my $i = 0; $i < @Encode::Alias::Alias; $i+=2){
128     my ($k, $v) = @Encode::Alias::Alias[$i, $i+1];
129     print "$k => $v\n";
130 }
131
132