Blame NKF.mod/test.pl

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:03:28 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
$nkf = "./nkf";
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
$detail_all = 0;
Packit 5b6b86
$diff = 1;
Packit 5b6b86
Packit 5b6b86
&library_test0();
Packit 5b6b86
sub test  {
Packit 5b6b86
    use NKF;
Packit 5b6b86
    &library_test(@_);
Packit 5b6b86
}
Packit 5b6b86
Packit 5b6b86
sub library_test {
Packit 5b6b86
    local ($nkf,$in,@ans) = @_;
Packit 5b6b86
    local ($result);
Packit 5b6b86
Packit 5b6b86
Packit 5b6b86
    # $nkf =~ s/^[^_]* //;
Packit 5b6b86
    local (@nkf) = split(/ /,$nkf);
Packit 5b6b86
    shift(@nkf);
Packit 5b6b86
    print "\nINPUT:\n",$in  if ($detail || $detail_all);
Packit 5b6b86
    print "\nEXPECT:\n", $ans if ($detail || $detail_all);
Packit 5b6b86
    $result = NKF::nkf(@nkf,$in);
Packit 5b6b86
    print "\nGOT:\n",$result if ($detail || $detail_all);
Packit 5b6b86
Packit 5b6b86
    if( $nkf =~ /-\S*m/) {
Packit 5b6b86
        $result =~ s/ //g;
Packit 5b6b86
    }
Packit 5b6b86
    $i = -1;
Packit 5b6b86
    foreach $ans (@ans) {
Packit 5b6b86
        $i++;
Packit 5b6b86
        if( $nkf =~ /-\S*m/) {
Packit 5b6b86
            $ans =~ s/ //g;
Packit 5b6b86
        }
Packit 5b6b86
        if ($result eq $ans){
Packit 5b6b86
	    print "Ok\n";
Packit 5b6b86
	    return $result;
Packit 5b6b86
        }
Packit 5b6b86
    }
Packit 5b6b86
    $ans = @ans[$i];
Packit 5b6b86
Packit 5b6b86
    print "Fail\n";
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
	print"$i\n;$result\n;$ans\n" if $nkf[0] eq'-w16B';
Packit 5b6b86
	system "diff -c tmp.result.bad tmp.expect.bad";
Packit 5b6b86
    }
Packit 5b6b86
    return $result;
Packit 5b6b86
}
Packit 5b6b86
Packit 5b6b86
sub library_test0 {
Packit 5b6b86
BEGIN { $| = 1; print "1..3\n"; }
Packit 5b6b86
END {print "not ok 1\n" unless $loaded;}
Packit 5b6b86
    use NKF;
Packit 5b6b86
    $loaded = 1;
Packit 5b6b86
    print "ok 1\n";
Packit 5b6b86
Packit 5b6b86
    ######################### End of black magic.
Packit 5b6b86
Packit 5b6b86
    # Insert your test code below (better if it prints "ok 13"
Packit 5b6b86
    # (correspondingly "not ok 13") depending on the success of chunk 13
Packit 5b6b86
    # of the test code):
Packit 5b6b86
Packit 5b6b86
    if ( nkf("-m","-e","1") ) {
Packit 5b6b86
	print "ok 2\n";
Packit 5b6b86
    } else {
Packit 5b6b86
	print "no 2\n";
Packit 5b6b86
    }
Packit 5b6b86
Packit 5b6b86
    $output = nkf("\033\$@#1#3#2%B");
Packit 5b6b86
    if ($output) {
Packit 5b6b86
    # print $output,"\n";
Packit 5b6b86
	print "ok 3\n";
Packit 5b6b86
    } else {
Packit 5b6b86
	print "no 3\n";
Packit 5b6b86
    }
Packit 5b6b86
Packit 5b6b86
    $output = nkf("-Zj","\033\$@#1#3#2%B");
Packit 5b6b86
    if ($output) {
Packit 5b6b86
    # print $output,"\n";
Packit 5b6b86
	print "ok 4\n";
Packit 5b6b86
    } else {
Packit 5b6b86
	print "no 4\n";
Packit 5b6b86
    }
Packit 5b6b86
Packit 5b6b86
    # conversion makes strings longer
Packit 5b6b86
    $output = "\244\306 " x 1024;
Packit 5b6b86
	$old =  length($output);
Packit 5b6b86
    $output = nkf("-j",$output);
Packit 5b6b86
    if ($output) {
Packit 5b6b86
    # print $output,"\n";
Packit 5b6b86
	print "ok 5 $old ",length($output),"\n";
Packit 5b6b86
    } else {
Packit 5b6b86
	print "no 5\n";
Packit 5b6b86
    }
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
	local (@nkf) = split(/ /,$tests[$i]);
Packit 5b6b86
	shift(@nkf);
Packit 5b6b86
	$in = $tests[$i+1];
Packit 5b6b86
	$ans = $tests[$i+2];
Packit 5b6b86
        $out = NKF::nkf(@nkf,$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
    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";