Commit | Line | Data |
0a95303c |
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 | } |
8e0fc1cd |
11 | use strict; |
0a95303c |
12 | use Test::More tests => 22; |
13 | use Encode; |
14 | use File::Basename; |
15 | use File::Spec; |
16 | use File::Compare; |
8e0fc1cd |
17 | require_ok "Encode::JP"; |
18 | |
19 | my ($src, $uni, $dst, $txt); |
0a95303c |
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,"table.utf8"); |
27 | my $ref = File::Spec->catfile($dir,"table.ref"); |
28 | my $rnd = File::Spec->catfile($dir,"table.rnd"); |
29 | print "# Basic decode test\n"; |
8e0fc1cd |
30 | open($src,"<",$euc) || die "Cannot open $euc:$!"; |
0a95303c |
31 | ok(defined($src) && fileno($src)); |
8e0fc1cd |
32 | $txt = join('',<$src>); |
33 | open($dst,">:utf8",$utf) || die "Cannot open $utf:$!"; |
0a95303c |
34 | ok(defined($dst) && fileno($dst)); |
8e0fc1cd |
35 | $uni = $enc->decode($txt,1); |
0a95303c |
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"; |
8e0fc1cd |
44 | open($src,"<:utf8",$ref) || die "Cannot open $ref:$!"; |
0a95303c |
45 | ok(defined($src) && fileno($src)); |
8e0fc1cd |
46 | $uni = join('',<$src>); |
47 | open($dst,">",$rnd) || die "Cannot open $rnd:$!"; |
0a95303c |
48 | ok(defined($dst) && fileno($dst)); |
8e0fc1cd |
49 | $txt = $enc->encode($uni,1); |
0a95303c |
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"; |
8e0fc1cd |
60 | open($src,"<encoding(euc-jp)",$euc) || die "Cannot open $euc:$!"; |
0a95303c |
61 | ok(defined($src) && fileno($src)); |
8e0fc1cd |
62 | open($dst,">:utf8",$utf) || die "Cannot open $utf:$!"; |
0a95303c |
63 | ok(defined($dst) || fileno($dst)); |
8e0fc1cd |
64 | my $out = select($dst); |
0a95303c |
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 | { |
25f7d9d3 |
76 | #skip "Multi-byte write is broken",3; |
0a95303c |
77 | print "# dst :encoding test\n"; |
8e0fc1cd |
78 | open($src,"<:utf8",$ref) || die "Cannot open $ref:$!"; |
0a95303c |
79 | ok(defined($src) || fileno($src)); |
8e0fc1cd |
80 | open($dst,">encoding(euc-jp)",$rnd) || die "Cannot open $rnd:$!"; |
0a95303c |
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 | # unlink($utf,$rnd); |
96 | |
97 | } |