Upgrade to Encode 1.33, from Dan Kogai.
[p5sagit/p5-mst-13.2.git] / ext / Encode / t / JP.t
CommitLineData
0a95303c 1BEGIN {
037b88d6 2 if ($ENV{'PERL_CORE'}){
3 chdir 't';
4 unshift @INC, '../lib';
5 }
0a95303c 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 }
87e4f210 11 unless (find PerlIO::Layer 'perlio') {
12 print "1..0 # Skip: PerlIO was not built\n";
13 exit 0;
14 }
72f0eb71 15 if (ord("A") == 193) {
16 print "1..0 # Skip: EBCDIC\n";
17 exit 0;
18 }
0a95303c 19 $| = 1;
20}
0e567a6c 21use strict;
ee981de6 22use Test::More tests => 27;
fab31126 23#use Test::More qw(no_plan);
0a95303c 24use Encode;
25use File::Basename;
26use File::Spec;
27use File::Compare;
0e567a6c 28require_ok "Encode::JP";
29
ee981de6 30my ($src, $uni, $dst, $txt, $euc, $utf, $ref, $rnd);
0a95303c 31
32ok(defined(my $enc = find_encoding('euc-jp')));
33ok($enc->isa('Encode::XS'));
34is($enc->name,'euc-jp');
35my $dir = dirname(__FILE__);
ee981de6 36
37my @subcodings = qw(jisx0212 jisx0208);
38
39for my $subcoding (@subcodings){
40 $euc = File::Spec->catfile($dir,"$subcoding.euc");
41 $utf = File::Spec->catfile($dir,"$$.utf8");
42 $ref = File::Spec->catfile($dir,"$subcoding.ref");
43 $rnd = File::Spec->catfile($dir,"$$.rnd");
44 print "# Basic decode test\n";
45 open($src,"<",$euc) || die "Cannot open $euc:$!";
46 binmode($src);
47 ok(defined($src) && fileno($src));
48 $txt = join('',<$src>);
49 open($dst,">:utf8",$utf) || die "Cannot open $utf:$!";
50 binmode($dst);
51 ok(defined($dst) && fileno($dst));
52 eval{ $uni = $enc->decode($txt,1) };
53 $@ and print $@;
54 ok(defined($uni));
55 is(length($txt),0);
56 print $dst $uni;
57 close($dst);
58 close($src);
59 ok(compare($utf,$ref) == 0);
60}
0a95303c 61
62print "# Basic encode test\n";
0e567a6c 63open($src,"<:utf8",$ref) || die "Cannot open $ref:$!";
a6a3912c 64binmode($src);
0a95303c 65ok(defined($src) && fileno($src));
0e567a6c 66$uni = join('',<$src>);
67open($dst,">",$rnd) || die "Cannot open $rnd:$!";
a6a3912c 68binmode($dst);
0a95303c 69ok(defined($dst) && fileno($dst));
0e567a6c 70$txt = $enc->encode($uni,1);
0a95303c 71ok(defined($txt));
72is(length($uni),0);
73print $dst $txt;
74close($dst);
75close($src);
76ok(compare($euc,$rnd) == 0);
77
78is($enc->name,'euc-jp');
79
80print "# src :encoding test\n";
0e567a6c 81open($src,"<encoding(euc-jp)",$euc) || die "Cannot open $euc:$!";
a6a3912c 82binmode($src);
0a95303c 83ok(defined($src) && fileno($src));
0e567a6c 84open($dst,">:utf8",$utf) || die "Cannot open $utf:$!";
a6a3912c 85binmode($dst);
0a95303c 86ok(defined($dst) || fileno($dst));
0e567a6c 87my $out = select($dst);
0a95303c 88while (<$src>)
89 {
90 print;
91 }
92close($dst);
93close($src);
fab31126 94
161720b2 95TODO:
96{
97 local $TODO = 'needs debugging on VMS' if $^O eq 'VMS';
98 ok(compare($utf,$ref) == 0);
99}
0a95303c 100select($out);
101
102SKIP:
103{
25f7d9d3 104 #skip "Multi-byte write is broken",3;
0a95303c 105 print "# dst :encoding test\n";
0e567a6c 106 open($src,"<:utf8",$ref) || die "Cannot open $ref:$!";
a6a3912c 107 binmode($src);
0a95303c 108 ok(defined($src) || fileno($src));
0e567a6c 109 open($dst,">encoding(euc-jp)",$rnd) || die "Cannot open $rnd:$!";
a6a3912c 110 binmode($dst);
0a95303c 111 ok(defined($dst) || fileno($dst));
112 my $out = select($dst);
113 while (<$src>)
114 {
115 print;
116 }
117 close($dst);
118 close($src);
119 ok(compare($euc,$rnd) == 0);
120 select($out);
121}
122
123is($enc->name,'euc-jp');
fab31126 124
0a95303c 125END {
f51e7ad5 126 1 while unlink($utf,$rnd);
0a95303c 127}