92 lines
2.1 KiB
Bash
Executable File
92 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
(make clean; make) || exit 1
|
|
|
|
total=0
|
|
totalmax=0
|
|
|
|
rm -f total.txt *.out
|
|
|
|
# Test driver
|
|
function runtest {
|
|
prog=$1
|
|
args=$2
|
|
testinput=$3
|
|
testname=$4
|
|
grade=$5
|
|
|
|
totalmax=`expr $totalmax + $grade`;
|
|
inputdescr=
|
|
if [ "$testinput" != "none" ]; then
|
|
inputdescr=" $testinput"
|
|
fi
|
|
descr="$prog $testname"
|
|
|
|
echo "======= $descr ==========="
|
|
|
|
#Run tested program
|
|
timeout 1s ./$prog $args > $prog.out
|
|
errorcode=$?
|
|
#echo $errorcode
|
|
#if [ $? -ne 0 ]; then
|
|
# echo Cannot run ./$prog
|
|
# cat $prog.out
|
|
# echo "*****Test Failed*****";
|
|
# return
|
|
#fi
|
|
|
|
#Run original program
|
|
./$prog.org $args > $prog.org.out
|
|
orgerrorcode=$?
|
|
#echo $orgechocode
|
|
#if [ $? -ne 0 ]; then
|
|
# echo Cannot run ./$prog.org
|
|
# cat $prog.org.out
|
|
# echo "*****Test Failed*****";
|
|
# return
|
|
#fi
|
|
|
|
#if [ $errorcode -ne $orgerrorcode ]; then
|
|
# echo Error codes do not match
|
|
# echo "*****Test Failed*****";
|
|
# printf "%-36s: %-3d of %-3d\n" "$descr " 0 $grade >> total.txt
|
|
# echo
|
|
# return
|
|
# fi
|
|
|
|
diff $prog.out $prog.org.out > diff.out
|
|
if [ $? -eq 0 ]; then
|
|
cat $prog.out
|
|
echo Test passed...;
|
|
printf "%-36s: %-3d of %-3d\n" "$descr " $grade $grade >> total.txt
|
|
total=`expr $total + $grade`;
|
|
else
|
|
echo "*****Test Failed*****";
|
|
echo ------ Your Output ----------
|
|
cat $prog.out
|
|
echo ------ Expected Output ------
|
|
cat $prog.org.out
|
|
echo ------ Difference -----------
|
|
cat diff.out
|
|
echo -----------------------------
|
|
printf "%-36s: %-3d of %-3d\n" "$descr " 0 $grade >> total.txt
|
|
fi
|
|
echo
|
|
}
|
|
|
|
# List of tests running
|
|
runtest endian "0x40490FDB" "" "test1" 10
|
|
runtest endian "0xDB0F4940" "" "test2" 10
|
|
|
|
echo > total.out
|
|
echo >> total.out
|
|
echo "-------------------------------------------------" >> total.out
|
|
echo "CS240: Hw 7. $USER " >> total.out
|
|
date >> total.out
|
|
echo "-------------------------------------------------" >> total.out
|
|
cat total.txt >> total.out >> total.out
|
|
echo "-------------------------------------------------" >> total.out
|
|
echo "CS240: Hw 7. $USER" `date` " Total: " $total of $totalmax >> total.out
|
|
echo >> total.out
|
|
|
|
cat total.out
|