Upgrade to Math::BigInt 1.59.
[p5sagit/p5-mst-13.2.git] / ext / Encode / t / guess.t
CommitLineData
af1f55d9 1BEGIN {
2 if ($ENV{'PERL_CORE'}){
3 chdir 't';
4 unshift @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 }
982a4085 11 if (ord("A") == 193) {
12 print "1..0 # Skip: EBCDIC\n";
13 exit 0;
14 }
af1f55d9 15 $| = 1;
16}
17
18use strict;
19use File::Basename;
20use File::Spec;
21use Encode qw(decode encode find_encoding _utf8_off);
22
23#use Test::More qw(no_plan);
7e19fb92 24use Test::More tests => 17;
af1f55d9 25use_ok("Encode::Guess");
26{
27 no warnings;
28 $Encode::Guess::DEBUG = shift || 0;
29}
30
31my $ascii = join('' => map {chr($_)}(0x21..0x7e));
32my $latin1 = join('' => map {chr($_)}(0xa1..0xfe));
33my $utf8on = join('' => map {chr($_)}(0x3000..0x30fe));
34my $utf8off = $utf8on; _utf8_off($utf8off);
7e19fb92 35my $utf16 = encode('UTF-16', $utf8on);
36my $utf32 = encode('UTF-32', $utf8on);
af1f55d9 37
7e19fb92 38is(guess_encoding($ascii)->name, 'ascii', 'ascii');
39like(guess_encoding($latin1), qr/No appropriate encoding/io, 'no ascii');
40is(guess_encoding($latin1, 'latin1')->name, 'iso-8859-1', 'iso-8859-1');
41is(guess_encoding($utf8on)->name, 'utf8', 'utf8 w/ flag');
42is(guess_encoding($utf8off)->name, 'utf8', 'utf8 w/o flag');
43is(guess_encoding($utf16)->name, 'UTF-16', 'UTF-16');
44is(guess_encoding($utf32)->name, 'UTF-32', 'UTF-32');
af1f55d9 45
46my $jisx0201 = File::Spec->catfile(dirname(__FILE__), 'jisx0201.utf');
47my $jisx0208 = File::Spec->catfile(dirname(__FILE__), 'jisx0208.utf');
48my $jisx0212 = File::Spec->catfile(dirname(__FILE__), 'jisx0212.utf');
49
50open my $fh, $jisx0208 or die "$jisx0208: $!";
6eb996d2 51if (PerlIO::Layer->find('perlio')) {
52 binmode($fh, ":bytes"); # in case LC_ALL is UTF8ish
53}
af1f55d9 54$utf8off = join('' => <$fh>);
55close $fh;
56$utf8on = decode('utf8', $utf8off);
7e19fb92 57
af1f55d9 58my @jp = qw(7bit-jis shiftjis euc-jp);
59
7e19fb92 60Encode::Guess->set_suspects(@jp);
af1f55d9 61
62for my $jp (@jp){
63 my $test = encode($jp, $utf8on);
7e19fb92 64 is(guess_encoding($test)->name, $jp, "JP:$jp");
af1f55d9 65}
7e19fb92 66
af1f55d9 67is (decode('Guess', encode('euc-jp', $utf8on)), $utf8on, "decode('Guess')");
68eval{ encode('Guess', $utf8on) };
10c5ecbb 69like($@, qr/not defined/io, "no encode()");
7e19fb92 70
71my %CJKT =
72 (
73 'euc-cn' => File::Spec->catfile(dirname(__FILE__), 'gb2312.utf'),
74 'euc-jp' => File::Spec->catfile(dirname(__FILE__), 'jisx0208.utf'),
75 'euc-kr' => File::Spec->catfile(dirname(__FILE__), 'ksc5601.utf'),
76 'big5-eten' => File::Spec->catfile(dirname(__FILE__), 'big5-eten.utf'),
77);
78
79Encode::Guess->set_suspects(keys %CJKT);
80
81for my $name (keys %CJKT){
82 open my $fh, $CJKT{$name} or die "$CJKT{$name}: $!";
6eb996d2 83 if (PerlIO::Layer->find('perlio')) {
84 binmode($fh, ":bytes"); # in case LC_ALL is UTF8ish
85 }
7e19fb92 86 $utf8off = join('' => <$fh>);
87 close $fh;
88
89 my $test = encode($name, decode('utf8', $utf8off));
90 is(guess_encoding($test)->name, $name, "CJKT:$name");
91}
92
af1f55d9 93__END__;