Patch up the failing multi-byte write case, and un-skip
[p5sagit/p5-mst-13.2.git] / ext / Encode / t / Japanese.t
1 BEGIN {
2 #   chdir 't' if -d 't';
3 #   @INC = (-d '../../lib' ? '../lib';
4     require Config; import Config;
5     if ($Config{'extensions'} !~ /\bEncode\b/) {
6       print "1..0 # Skip: Encode was not built\n";
7       exit 0;
8     }
9     $| = 1;
10 }
11 use Test::More tests => 22;
12 use Encode;
13 use File::Basename;
14 use File::Spec;
15 use File::Compare;
16 require_ok "Encode::Japanese";
17
18 ok(defined(my $enc = find_encoding('euc-jp')));
19 ok($enc->isa('Encode::XS'));
20 is($enc->name,'euc-jp');
21 my $dir = dirname(__FILE__);
22 my $euc = File::Spec->catfile($dir,"table.euc");
23 my $utf = File::Spec->catfile($dir,"table.utf8");
24 my $ref = File::Spec->catfile($dir,"table.ref");
25 my $rnd = File::Spec->catfile($dir,"table.rnd");
26 print "# Basic decode test\n";
27 open(my $src,"<",$euc) || die "Cannot open $euc:$!";
28 ok(defined($src) && fileno($src));
29 my $txt = join('',<$src>);
30 open(my $dst,">:utf8",$utf) || die "Cannot open $utf:$!";
31 ok(defined($dst) && fileno($dst));
32 my $uni = $enc->decode($txt,1);
33 ok(defined($uni));
34 is(length($txt),0);
35 print $dst $uni;
36 close($dst);
37 close($src);
38 ok(compare($utf,$ref) == 0);
39
40 print "# Basic encode test\n";
41 open(my $src,"<:utf8",$ref) || die "Cannot open $ref:$!";
42 ok(defined($src) && fileno($src));
43 my $uni = join('',<$src>);
44 open(my $dst,">",$rnd) || die "Cannot open $rnd:$!";
45 ok(defined($dst) && fileno($dst));
46 my $txt = $enc->encode($uni,1);
47 ok(defined($txt));
48 is(length($uni),0);
49 print $dst $txt;
50 close($dst);
51 close($src);
52 ok(compare($euc,$rnd) == 0);
53
54 is($enc->name,'euc-jp');
55
56 print "# src :encoding test\n";
57 open(my $src,"<encoding(euc-jp)",$euc) || die "Cannot open $euc:$!";
58 ok(defined($src) && fileno($src));
59 open(my $dst,">:utf8",$utf) || die "Cannot open $utf:$!";
60 ok(defined($dst) || fileno($dst));
61 $out = select($dst);
62 while (<$src>)
63  {
64   print;
65  }
66 close($dst);
67 close($src);
68 ok(compare($utf,$ref) == 0);
69 select($out);
70
71 SKIP:
72 {
73  #skip "Multi-byte write is broken",3;
74  print "# dst :encoding test\n";
75  open(my $src,"<:utf8",$ref) || die "Cannot open $ref:$!";
76  ok(defined($src) || fileno($src));
77  open(my $dst,">encoding(euc-jp)",$rnd) || die "Cannot open $rnd:$!";
78  ok(defined($dst) || fileno($dst));
79  my $out = select($dst);
80  while (<$src>)
81   {
82    print;
83   }
84  close($dst);
85  close($src);
86  ok(compare($euc,$rnd) == 0);
87  select($out);
88 }
89
90 is($enc->name,'euc-jp');
91 END {
92 # unlink($utf,$rnd);
93
94 }