#!/usr/bin/perl -w
# 
# Test suite for fix8bit.c.
# 

use strict;
die if @ARGV;
my $num_errs = 0;
my @to_delete;
foreach my $in (<test_data/*.in>) {
    $in =~ /^(.+)\.in$/ or die;
    my $base = $1;
    foreach (<$base.[78].ref>) {
	/^\Q$base\E\.([78])\.ref$/ or die;
	my $flag = $1;
	my $out = "$base.$flag.out";
	if (system "./fix8bit -$flag <$in >$out 2>/dev/null") {
	    warn "running fix8bit failed: $! $?";
	    ++$num_errs;
	    next;
	}
	if (system "diff -q $base.$flag.ref $out") {
	    warn "test failed for $base.$flag: $! $?";
	    ++$num_errs;
	    next;
	}
	print STDERR "test passed for $base.$flag\n";
	push @to_delete, $out;
    }
}
if (not $num_errs) {
    foreach (@to_delete) {
	(not -e) or unlink or warn "cannot unlink $_: $!";
    }
}
if ($num_errs == 0) {
    exit 0;
}
elsif ($num_errs <= 255) {
    exit $num_errs;
}
else {
    exit 255;
}

