#!/bin/sh

verbose=true

rm $1.out2 $1.out1
for src in $1*.java; do
    if test "x$JAVA" != "x" ; then
	if test "$verbose" = "true" ; then
	    echo $JAVAC -classpath . $src
	fi
	$JAVAC -classpath . $src 2>&1 || echo FAIL "$JAVAC $1: "
    else
	if test "$verbose" = "true" ; then
	    echo $GCJ -c $src
	fi
	$GCJ -c $src || echo FAIL "$1: "
    fi
done
objs=`echo $1*.java | sed 's/\.java/.o/g'`
if test "x$JAVA" != "x" ; then
    $JAVA -classpath . $1 > $1.out1 || echo FAIL "$1: "
    echo -classpath . $JAVA $1
else
    if test "$verbose" = "true" ; then
	echo $GCJ $objs -o $1 --main=$1
	echo "./$1 > $1.out1"
    fi
    $GCJ $objs -o $1 --main=$1 || echo FAIL "$1: "
    ./$1 > $1.out1 || echo FAIL "$1: "
fi
for src in altered/$1*.java; do
    if test "x$JAVA" != "x" ; then
	if test "$verbose" = "true" ; then
	    echo $JAVAC $src -classpath altered:.
	fi
	$JAVAC -classpath altered:. $src || echo FAIL "$JAVAC $1: "
    else
	if test "$verbose" = "true" ; then
	    echo $GCJ -c $src -Ialtered/
	fi
	$GCJ -c $src -Ialtered/ || echo FAIL "$1: "
    fi
done
if test "x$JAVA" != "x" ; then
    if test "$verbose" = "true" ; then
	echo $JAVA -classpath altered:. $1
    fi
    $JAVA -classpath altered:. $1 > $1.out2 || echo FAIL "$1: "
else
    if test "$verbose" = "true" ; then
	echo $GCJ $objs $2 -o $1 --main=$1
	echo "./$1 > $1.out2"
    fi
    $GCJ $objs $2 -o $1 --main=$1 || echo FAIL "$1: "
    ./$1 > $1.out2 || echo FAIL "$1: "
fi
if test "$verbose" = "true" ; then
    echo diff $1.out1 $1.out2
fi
if diff $1.out1 $1.out2 > /dev/null; then
    echo -n PASS "$1: "
    head -1 $1.java
else
    echo -n FAIL "$1: "
    head -1 $1.java
    if test "$verbose" = "true" ; then
	diff $1.out1 $1.out2
    fi
fi
