#! /bin/sh

file=$1
directory=$2

version=$3
if (test "$version" = "v2") then
	tests=`awk '/^Class Test\//{ print substr($2,index($2, "/")+1) }' $file`
else
	tests=`awk '/^proc test_/{ print substr($2,index($2, "_")+1) }' $file`
fi

quiet="true"
if [ $# -ge 4 ] 
then
    flag=$4
    if (test "$flag" = "QUIET" -o "$flag" = "quiet") then
        quiet="true"
    else
        tests=$4
    fi
fi
datafile="all.tr"

if [ ! -d $directory ]; then
    mkdir $directory
fi

echo Tests: $tests
success="true"
number=0
for t in $tests; do
    if (test "$quiet" = "false") then
    	echo
    fi
    echo Running test $t

    if (test "$quiet" = "true") then
    	../../ns $file $t
    else 
	../../ns $file $t 
    fi
    if [ -f $datafile ]; then
	if [ ! -f $directory/$t.Z ]; then
	    echo saving output for future validation
	    success="unknown"
	    cp $datafile $datafile.bk; compress $datafile  
	    cp $datafile.bk $datafile
	    mv $datafile.Z $directory/$t.Z
	else
	    uncompress -c $directory/$t.Z | cmp -s $datafile -
	    if [ $? = 0 ]; then
		echo Test output agrees with reference output
	    else
		echo Test output differs from reference output
		success="false"
		cp $datafile $directory/$t.test
		uncompress -c $directory/$t.Z > $directory/$t
		echo "Diagnose with: diff $directory/$t.test $directory/$t"
		echo "Differences due to floating-point formatting are not significant."

	    fi
	fi
    else
	success="unknown"
    fi
    if (test "$quiet" = "false") then
        echo 'next?'
        read answer
    fi
done
if (test "$success" = "true") then
	echo All test output agrees with reference output
fi

