Upgrade to Encode 1.33, from Dan Kogai.
[p5sagit/p5-mst-13.2.git] / ext / Encode / t / JP.t
1 BEGIN {
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     }
11     unless (find PerlIO::Layer 'perlio') {
12         print "1..0 # Skip: PerlIO was not built\n";
13         exit 0;
14     }
15     if (ord("A") == 193) {
16         print "1..0 # Skip: EBCDIC\n";
17         exit 0;
18     }
19     $| = 1;
20 }
21 use strict;
22 use Test::More tests => 27;
23 #use Test::More qw(no_plan);
24 use Encode;
25 use File::Basename;
26 use File::Spec;
27 use File::Compare;
28 require_ok "Encode::JP";
29
30 my ($src, $uni, $dst, $txt, $euc, $utf, $ref, $rnd);
31
32 ok(defined(my $enc = find_encoding('euc-jp')));
33 ok($enc->isa('Encode::XS'));
34 is($enc->name,'euc-jp');
35 my $dir = dirname(__FILE__);
36
37 my @subcodings = qw(jisx0212 jisx0208);
38
39 for 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 }
61
62 print "# Basic encode test\n";
63 open($src,"<:utf8",$ref) || die "Cannot open $ref:$!";
64 binmode($src);
65 ok(defined($src) && fileno($src));
66 $uni = join('',<$src>);
67 open($dst,">",$rnd) || die "Cannot open $rnd:$!";
68 binmode($dst);
69 ok(defined($dst) && fileno($dst));
70 $txt = $enc->encode($uni,1);
71 ok(defined($txt));
72 is(length($uni),0);
73 print $dst $txt;
74 close($dst);
75 close($src);
76 ok(compare($euc,$rnd) == 0);
77
78 is($enc->name,'euc-jp');
79
80 print "# src :encoding test\n";
81 open($src,"<encoding(euc-jp)",$euc) || die "Cannot open $euc:$!";
82 binmode($src);
83 ok(defined($src) && fileno($src));
84 open($dst,">:utf8",$utf) || die "Cannot open $utf:$!";
85 binmode($dst);
86 ok(defined($dst) || fileno($dst));
87 my $out = select($dst);
88 while (<$src>)
89  {
90   print;
91  }
92 close($dst);
93 close($src);
94
95 TODO:
96 {
97   local $TODO = 'needs debugging on VMS' if $^O eq 'VMS';
98   ok(compare($utf,$ref) == 0);
99 }
100 select($out);
101
102 SKIP:
103 {
104  #skip "Multi-byte write is broken",3;
105  print "# dst :encoding test\n";
106  open($src,"<:utf8",$ref) || die "Cannot open $ref:$!";
107  binmode($src);
108  ok(defined($src) || fileno($src));
109  open($dst,">encoding(euc-jp)",$rnd) || die "Cannot open $rnd:$!";
110  binmode($dst);
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
123 is($enc->name,'euc-jp');
124
125 END {
126  1 while unlink($utf,$rnd);
127 }