|
Packit |
5b6b86 |
#!/usr/bin/perl
|
|
Packit |
5b6b86 |
#
|
|
Packit |
5b6b86 |
# nkf test program for nkf 2.0
|
|
Packit |
5b6b86 |
# Shinji KONO <kono@ie.u-ryukyu.ac.jp>
|
|
Packit |
5b6b86 |
# Sun Aug 18 12:25:40 JST 1996
|
|
Packit |
5b6b86 |
# Sun Nov 8 00:16:06 JST 1998
|
|
Packit |
5b6b86 |
# Sun Sep 8 14:04:02 JST 2002
|
|
Packit |
5b6b86 |
#
|
|
Packit |
5b6b86 |
# This is useful when you add new patch on nkf.
|
|
Packit |
5b6b86 |
# Since this test is too strict, faileurs may not mean
|
|
Packit |
5b6b86 |
# wrong conversion.
|
|
Packit |
5b6b86 |
#
|
|
Packit |
5b6b86 |
# nkf 2.0 utf8
|
|
Packit |
5b6b86 |
# nkf 1.5 differs on MIME decoding
|
|
Packit |
5b6b86 |
# nkf 1.4 passes Basic Conversion tests
|
|
Packit |
5b6b86 |
# nkf PDS version passes Basic Conversion tests using "nkf -iB -oB "
|
|
Packit |
5b6b86 |
#
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
if ($ARGV[0]) {
|
|
Packit |
5b6b86 |
$nkf = $ARGV[0];
|
|
Packit |
5b6b86 |
} else {
|
|
Packit |
5b6b86 |
$nkf = 'MSWin32' eq $^O ? ".\\nkf" : "./nkf";
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
# $nkf = "doscmd nkf.exe";
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
# If you want to see the testing process, set next flag.
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
$error_count = 0;
|
|
Packit |
5b6b86 |
$diff=1;
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
# &library_test0();
|
|
Packit |
5b6b86 |
sub test {
|
|
Packit |
5b6b86 |
&command_test(@_);
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
sub command_test {
|
|
Packit |
5b6b86 |
local ($nkf,$in,@ans) = @_;
|
|
Packit |
5b6b86 |
local ($result);
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
$result = '';
|
|
Packit |
5b6b86 |
open(OUT,"> nkf.in");
|
|
Packit |
5b6b86 |
binmode OUT;
|
|
Packit |
5b6b86 |
print OUT $in;
|
|
Packit |
5b6b86 |
close(OUT);
|
|
Packit |
5b6b86 |
system("$nkf <nkf.in >nkf.out"); # easy
|
|
Packit |
5b6b86 |
open(IN,"< nkf.out");
|
|
Packit |
5b6b86 |
binmode IN;
|
|
Packit |
5b6b86 |
while(<IN>) {
|
|
Packit |
5b6b86 |
$result .= $_;
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
$result =~ s/ //g if $nkf =~ /-\w+m[NS]/o;
|
|
Packit |
5b6b86 |
foreach $ans (@ans) {
|
|
Packit |
5b6b86 |
$ans =~ s/ //g if $nkf =~ /-\w+m[NS]/o;
|
|
Packit |
5b6b86 |
if ($result eq $ans) {
|
|
Packit |
5b6b86 |
print "Ok\n";
|
|
Packit |
5b6b86 |
return $result;
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
$ans = $ans[0];
|
|
Packit |
5b6b86 |
print "Fail\n";
|
|
Packit |
5b6b86 |
system "mv nkf.in nkf.in.$error_count.bad";
|
|
Packit |
5b6b86 |
system "mv nkf.out nkf.out.$error_count.bad";
|
|
Packit |
5b6b86 |
open(OUT,"> nkf.expect.$error_count.bad");
|
|
Packit |
5b6b86 |
binmode OUT;
|
|
Packit |
5b6b86 |
print OUT $ans;
|
|
Packit |
5b6b86 |
close(OUT);
|
|
Packit |
5b6b86 |
$error_count++;
|
|
Packit |
5b6b86 |
if ($diff) {
|
|
Packit |
5b6b86 |
open(R,"|od -c >tmp.result.bad"); binmode R; print R $result; close(R);
|
|
Packit |
5b6b86 |
open(R,"|od -c >tmp.expect.bad"); binmode R; print R $ans; close(R);
|
|
Packit |
5b6b86 |
system "diff -c tmp.result.bad tmp.expect.bad";
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
return $result;
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
sub command_tests {
|
|
Packit |
5b6b86 |
my @tests = @_;
|
|
Packit |
5b6b86 |
my ($in, $out, $ans);
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
for (my $i = 0; $i <= $#tests; $i += 3){
|
|
Packit |
5b6b86 |
my $nkf = $tests[$i];
|
|
Packit |
5b6b86 |
$in = $tests[$i+1];
|
|
Packit |
5b6b86 |
$ans = $tests[$i+2];
|
|
Packit |
5b6b86 |
$out = '';
|
|
Packit |
5b6b86 |
open(OUT, "> nkf.in");
|
|
Packit |
5b6b86 |
binmode OUT;
|
|
Packit |
5b6b86 |
print OUT $in;
|
|
Packit |
5b6b86 |
close(OUT);
|
|
Packit |
5b6b86 |
system("$nkf <nkf.in >nkf.out"); # easy
|
|
Packit |
5b6b86 |
open(IN,"< nkf.out");
|
|
Packit |
5b6b86 |
binmode IN;
|
|
Packit |
5b6b86 |
while (<IN>) {
|
|
Packit |
5b6b86 |
$out .= $_;
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
close(IN);
|
|
Packit |
5b6b86 |
$out =~ s/ //g if $nkf =~ /-\w+m[NS]/o;
|
|
Packit |
5b6b86 |
$ans =~ s/ //g if $nkf =~ /-\w+m[NS]/o;
|
|
Packit |
5b6b86 |
if ($out ne $ans) {
|
|
Packit |
5b6b86 |
last;
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
if ($out eq $ans) {
|
|
Packit |
5b6b86 |
print "Ok\n";
|
|
Packit |
5b6b86 |
return;
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
print "Fail\n";
|
|
Packit |
5b6b86 |
system "mv nkf.in nkf.in.$error_count.bad";
|
|
Packit |
5b6b86 |
system "mv nkf.out nkf.out.$error_count.bad";
|
|
Packit |
5b6b86 |
open(OUT,"> nkf.expect.$error_count.bad");
|
|
Packit |
5b6b86 |
binmode OUT;
|
|
Packit |
5b6b86 |
print OUT $ans;
|
|
Packit |
5b6b86 |
close(OUT);
|
|
Packit |
5b6b86 |
$error_count++;
|
|
Packit |
5b6b86 |
if ($diff) {
|
|
Packit |
5b6b86 |
open(R,"|od -c >tmp.result.bad"); binmode R; print R $out; close(R);
|
|
Packit |
5b6b86 |
open(R,"|od -c >tmp.expect.bad"); binmode R; print R $ans; close(R);
|
|
Packit |
5b6b86 |
system "diff -c tmp.result.bad tmp.expect.bad";
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
return;
|
|
Packit |
5b6b86 |
}
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
do "nkf_test.pl";
|
|
Packit |
5b6b86 |
unlink "nkf.in";
|
|
Packit |
5b6b86 |
unlink "nkf.out";
|
|
Packit |
5b6b86 |
|
|
Packit |
5b6b86 |
if ($error_count > 1) {
|
|
Packit |
5b6b86 |
printf("%d errors were found.\n", $error_count);
|
|
Packit |
5b6b86 |
} elsif ($error_count == 1) {
|
|
Packit |
5b6b86 |
printf("1 error was found.\n");
|
|
Packit |
5b6b86 |
} else {
|
|
Packit |
5b6b86 |
printf("All tests are succeeded.\n");
|
|
Packit |
5b6b86 |
}
|