Upgrade to Encode 1.50, from Dan Kogai.
[p5sagit/p5-mst-13.2.git] / ext / Encode / t / JP.t
index f904986..4192a7c 100644 (file)
@@ -8,10 +8,6 @@ BEGIN {
       print "1..0 # Skip: Encode was not built\n";
       exit 0;
     }
-    unless (find PerlIO::Layer 'perlio') {
-       print "1..0 # Skip: PerlIO was not built\n";
-       exit 0;
-    }
     if (ord("A") == 193) {
        print "1..0 # Skip: EBCDIC\n";
        exit 0;
@@ -19,7 +15,7 @@ BEGIN {
     $| = 1;
 }
 use strict;
-use Test::More tests => 27;
+use Test::More tests => 37;
 #use Test::More qw(no_plan);
 use Encode;
 use File::Basename;
@@ -29,103 +25,65 @@ require_ok "Encode::JP";
 
 my ($src, $uni, $dst, $txt, $euc, $utf, $ref, $rnd);
 
-ok(defined(my $enc = find_encoding('euc-jp')));
-ok($enc->isa('Encode::XS'));
-is($enc->name,'euc-jp');
+ok(defined(my $enc = find_encoding('euc-jp')), 'find_encoding');
+ok($enc->isa('Encode::XS'), 'ISA');
+is($enc->name,'euc-jp',     '$enc->name');
 my $dir = dirname(__FILE__);
 
-my @subcodings = qw(jisx0212 jisx0208);
-
-for my $subcoding (@subcodings){
-    $euc = File::Spec->catfile($dir,"$subcoding.euc");
+for my $charset (qw(jisx0201 jisx0212 jisx0208)){
+    $euc = File::Spec->catfile($dir,"$charset.euc");
     $utf = File::Spec->catfile($dir,"$$.utf8");
-    $ref = File::Spec->catfile($dir,"$subcoding.ref");
+    $ref = File::Spec->catfile($dir,"$charset.ref");
     $rnd = File::Spec->catfile($dir,"$$.rnd");
-    print "# Basic decode test\n";
-    open($src,"<",$euc) || die "Cannot open $euc:$!";
+
+    open($src,"<",$euc) or die "Cannot open $euc:$!";
     binmode($src);
-    ok(defined($src) && fileno($src));
     $txt = join('',<$src>);
-    open($dst,">:utf8",$utf) || die "Cannot open $utf:$!";
-    binmode($dst);
-    ok(defined($dst) && fileno($dst));
-    eval{ $uni = $enc->decode($txt,1) };
-    $@ and print $@;
-    ok(defined($uni));
-    is(length($txt),0);
-    print $dst $uni;
-    close($dst);
     close($src);
-    ok(compare($utf,$ref) == 0);
-}
-
-print "# Basic encode test\n";
-open($src,"<:utf8",$ref) || die "Cannot open $ref:$!";
-binmode($src);
-ok(defined($src) && fileno($src));
-$uni = join('',<$src>);
-open($dst,">",$rnd) || die "Cannot open $rnd:$!";
-binmode($dst);
-ok(defined($dst) && fileno($dst));
-$txt = $enc->encode($uni,1);
-ok(defined($txt));
-is(length($uni),0);
-print $dst $txt;
-close($dst);
-close($src);
-ok(compare($euc,$rnd) == 0);
-
-is($enc->name,'euc-jp');
-
-my $skip_perlio;
-eval { require PerlIO::encoding; };
-if ($@){
-    $skip_perlio = 1;
-}else{
-    $skip_perlio = 0;
-    binmode(STDIN);
-}
-
-$skip_perlio ||= (@ARGV and shift eq 'perlio');
+    
+    eval{ $uni = $enc->decode($txt, 1) }; 
+    $@ and print $@;
+    ok(defined($uni),  "decode $charset");
+    is(length($txt),0, "decode $charset completely");
 
-SKIP: {
-    skip "PerlIO Encoding Needed", 6 if $skip_perlio;
-    print "# src :encoding test\n";
-    open($src,"<encoding(euc-jp)",$euc) || die "Cannot open $euc:$!";
-    binmode($src);
-    ok(defined($src) && fileno($src));
-    open($dst,">:utf8",$utf) || die "Cannot open $utf:$!";
+    open($dst,">:utf8",$utf) or die "Cannot open $utf:$!";
     binmode($dst);
-    ok(defined($dst) || fileno($dst));
-    my $out = select($dst);
-    while (<$src>){ print; }
-    close($dst);
-    close($src);
+    print $dst $uni;
+    close($dst); 
+    is(compare($utf, $ref), 0, "$utf eq $ref");
+    
+    open $src, "<:utf8", $ref or die "$ref : $!";
+    $uni = join('', <$src>);
+    close $src;
 
- TODO:
-    {
-       local $TODO = 'needs debugging on VMS' if $^O eq 'VMS';
-       ok(compare($utf,$ref) == 0);
-    }
-    select($out);
+    for my $canon (qw(euc-jp shiftjis
+                     7bit-jis iso-2022-jp iso-2022-jp-1)){
+       my $test = \&is;
+       if   ($charset eq 'jisx0201'){
+           $canon eq 'iso-2022-jp'   and $test = \&isnt;
+           $canon eq 'iso-2022-jp-1' and $test = \&isnt;
+       }elsif($charset eq 'jisx0212'){
+           $canon eq 'shiftjis'    and   $test = \&isnt;
+           $canon eq 'iso-2022-jp' and   $test = \&isnt;
+       }
+       my $rt = ($test eq \&is) ? 'RT' : 'non-RT';
+       $test->($uni, decode($canon, encode($canon, $uni)), 
+             "$rt $charset $canon");
+       
+     }
 
-    print "# dst :encoding test\n";
-    open($src,"<:utf8",$ref) || die "Cannot open $ref:$!";
-    binmode($src);
-    ok(defined($src) || fileno($src));
-    open($dst,">encoding(euc-jp)",$rnd) || die "Cannot open $rnd:$!";
+    eval{ $txt = $enc->encode($uni,1) };    
+    $@ and print $@;
+    ok(defined($txt),   "encode $charset");
+    is(length($uni), 0, "encode $charset completely");
+
+    open($dst,">", $rnd) or die "Cannot open $utf:$!";
     binmode($dst);
-    ok(defined($dst) || fileno($dst));
-    $out = select($dst);
-    while (<$src>) { print; }
-    close($dst);
-    close($src);
-    ok(compare($euc,$rnd) == 0);
-    select($out);
+    print $dst $txt;
+    close($dst); 
+    is(compare($euc, $rnd), 0 => "$rnd eq $euc");
 }
 
-is($enc->name,'euc-jp');
-
 END {
  1 while unlink($utf,$rnd);
 }