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