#!/usr/bin/sh

#
# hmc cs155 fall 2002
# raytracer test script
#
# usage: ./test.sh rt_binary outputdir [ pattern ]
#
# rt_binary  is the raytracer that's being tested
# output_dir is where all the output images and stderr files get written
# pattern    is the optional regexp that will be used to determine which 
#               test files to run
#

TESTDIR="/cs/cs155/proj2/test/"
TESTFILE="/cs/cs155/proj2/test/test.param"
NUMTESTS="`cat ${TESTFILE} | wc -l`"

BIN=$1
OUTDIR=$2

if (test ! -d ${OUTDIR})
then
	echo "${OUTDIR} doesn't exist or isn't a directory!"
	exit
fi


if (test -n "$3")
then
	for i in `grep -n "$3" ${TESTFILE} | cut -d':' -f1`
	do
		FILE=`sed -n "${i}p" ${TESTFILE} | cut -d' ' -f1`
		ARGS=`sed -n "${i}p" ${TESTFILE} | cut -d' ' -f2-`

		echo ${FILE}

		INPUT=${TESTDIR}/${FILE}
		OUTPUT=${OUTDIR}/${FILE}.out.bmp
		STDERR=${OUTDIR}/${FILE}.stderr

		${BIN} -I ${ARGS} -s ${INPUT} -d ${OUTPUT} 2> ${STDERR}
	done

	exit
fi


i=1
while (test ${i} -le ${NUMTESTS})
do
	FILE=`sed -n "${i}p" ${TESTFILE} | cut -d' ' -f1`
	ARGS=`sed -n "${i}p" ${TESTFILE} | cut -d' ' -f2-`

	if (test -n "${FILE}")
	then
		echo ${FILE}

		INPUT=${TESTDIR}/${FILE}
		OUTPUT=${OUTDIR}/${FILE}.out.bmp
		STDERR=${OUTDIR}/${FILE}.stderr

		${BIN} -I ${ARGS} -s ${INPUT} -d ${OUTPUT} 2> ${STDERR}
	fi

	i=`expr $i + 1`
done
