| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/bin/bash
- uname=`uname`
- if [ "$uname" = "Darwin" ]; then
- date="gdate"
- readlink="greadlink"
- wc="gwc"
- sed="gsed"
- awk="gawk"
- else
- date="date"
- readlink="readlink"
- wc="wc"
- sed="sed"
- awk="awk"
- fi
- start=$($date +%s.%N)
- absdir=$($readlink -f $(dirname $0))
- pass="\033[32mPASSED\033[0m"
- fail="\033[31mFAILED\033[0m"
- tests=0
- passes=0
- num=`find * -name '*.c' | $wc -L`
- num=$((num-2))
- fmt=`echo "%-$num""s"`
- make clean > /dev/null
- make > /dev/null
- for i in $(find * -name '*.c' | sort); do
- asm=${i/.c/.asm}
- answer=`spim -noexception load $absdir/$asm 2> /dev/null | tail -n 1`
- exp_ans=`grep "##answer" $absdir/$i | $sed 's/\/\* ##answer:\s\+\([^\*]\+\)\b\s*\*\//\1/g'`
- printf $fmt "${i%.*}"
- echo -n " ... "
- if [ "$answer" == "$exp_ans" ]; then
- echo -e "$pass"
- passes=$((passes+1))
- else
- echo -e "$fail expected $exp_ans got $answer"
- fi
- tests=$((tests+1))
- done
- end=$($date +%s.%N)
- runtime=$(echo "$end $start" | $awk '{printf "%.2f", $1 - $2}')
- echo -e "\n$passes/$tests passed in $runtime""s"
- exit $((tests-passes))
|