diff options
Diffstat (limited to 'funtools/funtest/tfuncnts')
-rwxr-xr-x | funtools/funtest/tfuncnts | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/funtools/funtest/tfuncnts b/funtools/funtest/tfuncnts new file mode 100755 index 0000000..8ad5539 --- /dev/null +++ b/funtools/funtest/tfuncnts @@ -0,0 +1,307 @@ +#!/bin/sh +# set -x + +PLATFORM=`uname` +VERBOSE=0 +SW="-r" +X=504 +Y=512 +STDIN=/dev/null +OPROG=funcnts +NPROG=../funcnts +OFILE=${HOME}/data/snr.ev +NFILE=${HOME}/data/snr.ev.gz + +if [ -r /usr/ucb/echo ]; then + ECHO=/usr/ucb/echo +else + ECHO=echo +fi + +EAWK='start==1&&NF>0{tpix += $2; tarea +=$3; print $0};/^---- ------------ ---------$/{start=1}END{print tpix,tarea}' + +SAWK='start==1&&NF>0{tpix += $2; tarea +=$3};/^---- ------------ ---------$/{start=1}END{print tpix,tarea}' + +FAWK='{tpix = $1};END{print tpix}' + +while [ x"$1" != x ]; do + case $1 in + -1) + DO1=YES + shift + continue;; + -b) + shift + B="$1" + shift + continue;; + -c) + shift + C="$1;" + shift + continue;; + -E) + DOEXACT=YES + shift + continue;; + -e) + FIELD=`${OPROG} ${OFILE} "field" | awk "$SAWK" | awk "$FAWK"` + $ECHO "FIELD: $FIELD" + $ECHO " " + M="-" + shift + continue;; + -f1) + shift + OFILE=$1 + NFILE=$1 + shift + continue;; + -f2) + shift + OFILE=$1 + shift + NFILE=$1 + shift + continue;; + -n) + shift + NPROG=$1 + shift + continue;; + -o) + shift + OPROG=$1 + shift + continue;; + -p) + shift + STDIN=$1 + if [ x`$ECHO $STDIN | awk -F. '{print $NF}'` = x"gz" ]; then + NFILE=stdin.gz + else + NFILE=stdin + fi + continue;; + -P) + PURE=YES + NPROG=../funcnts.pure + shift + continue;; + -V) + DO1=YES + NPROG="/usr/bin/valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --trace-children=yes ../funcnts" + shift + continue;; + -s) + shift + SW=$1 + shift + continue;; + -v) + VERBOSE=1 + shift + continue;; + -v2) + VERBOSE=2 + shift + continue;; + -x) + shift + X=$1 + shift + continue;; + -y) + shift + Y=$1 + shift + continue;; + *) + shift + continue;; + esac +done + +if [ x"$B" != x ]; then + OFILE=${OFILE}"[$B]" + NFILE=${NFILE}"[$B]" +fi + +X2=`$ECHO "$X + 10" | bc` +Y2=`$ECHO "$Y + 10" | bc` +X3=`$ECHO "$X + 20" | bc` +Y3=$Y +X4=`$ECHO "$X + 10" | bc` +Y4=`$ECHO "$Y - 10" | bc` + +$ECHO "OPROG="${OPROG} "OFILE="${OFILE} +$ECHO "NPROG="${NPROG} "NFILE="${NFILE} + +IFS=" " +while read ARG1 ARG2 ARG3; do + if [ x"$ARG1" = x ]; then + continue + fi + if [ x`$ECHO $ARG1 | sed 's/^#.*/YES/g'` = x"YES" ]; then + continue + fi + CMD=$ARG1 + eval "ARG2=\"${C}$ARG2\"" + eval "ARG3=\"${C}$ARG3\"" + if [ x$CMD = xZIEXACT ]; then + if [ x$FILTER_PAINT = xtrue ]; then + continue + else + CMD=EXACT + fi + fi + if [ x$CMD = xZEXACT ]; then + if [ x$FILTER_PAINT = xtrue ]; then + CMD=SUM + else + CMD=EXACT + fi + fi + case $CMD in + OPROG) + OPROG=$ARG2 + ;; + NPROG) + NPROG=$ARG2 + ;; + OFILE) + OFILE=$ARG2 + ;; + NFILE) + NFILE=$ARG2 + ;; + EXCLUDE) + FIELD=`$OPROG ${OFILE} "field" | awk "$SAWK" | awk "$FAWK"` + $ECHO "FIELD: $FIELD" + $ECHO " " + M="-" + ;; + EXIT) + exit + ;; + EXACT) + if [ x"$DO1" = xYES ]; then + $ECHO "${M}DO1: $ARG3" + cat $STDIN | $NPROG ${SW} ${NFILE} "${M}$ARG3" > funcnts2.out + else + $ECHO "${M}EXACT: $ARG2 ... $ARG3" + if [ x"$DOEXACT" = xYES ]; then + CMP=yes + XPROG="" + $OPROG ${SW} ${OFILE} "$ARG2" > funcnts1.out 2>err.log + if test $? -ne 0; then + CMP=no + XPROG="$OPROG" + cat err.log + fi + cat $STDIN | $NPROG ${SW} ${NFILE} "${M}$ARG3" > funcnts2.out + if test $? -ne 0; then + CMP=no + XPROG="${XPROG:-''}${XPROG:+' '}$NPROG" + fi + else + CMP=yes + XPROG="" + $OPROG ${SW} ${OFILE} "$ARG2" | awk $EAWK > funcnts1.out 2>err.log + if test $? -ne 0; then + CMP=no + XPROG="$OPROG" + cat err.log + fi + cat $STDIN | $NPROG ${SW} ${NFILE} "${M}$ARG3" |awk $EAWK >funcnts2.out + if test $? -ne 0; then + CMP=no + XPROG="${XPROG:-''}${XPROG:+' '}$NPROG" + fi + fi + if [ x"$CMP" = xyes ]; then + if [ x$M = x ]; then + diff funcnts1.out funcnts2.out + else + V1=`cat funcnts1.out | awk $FAWK` + V2=`cat funcnts2.out | awk $FAWK` + V2=`$ECHO "$FIELD-$V2" | bc` + if [ $V1 != $V2 ]; then + $ECHO "V1=$V1 V2=$V2" + fi + fi + fi + fi + $ECHO " " + ;; + REV) + if [ x"$DO1" = xYES ]; then + $ECHO "${M}DO1: $ARG3" + cat $STDIN | $NPROG ${SW} ${NFILE} "${M}$ARG3" > funcnts2.out + else + $ECHO "${M}REV: $ARG2 ... $ARG3" + $OPROG ${SW} ${OFILE} "$ARG2" | awk $EAWK > tfuncnts1.out + if test $? -ne 0; then + $ECHO "skipping $NPROG due to error" + else + cat $STDIN | $NPROG ${SW} ${NFILE} "${M}$ARG3" | awk $EAWK > tfuncnts2.out + if [ x$M = x ]; then + awk 'NF==3{print $0}' < tfuncnts1.out | sort -r | awk '{print $2,$3}' > funcnts1.out + awk 'NF==3{print $2,$3}' < tfuncnts2.out > funcnts2.out + diff funcnts1.out funcnts2.out + else + V1=`cat funcnts1.out | awk $FAWK` + V2=`cat funcnts2.out | awk $FAWK` + V2=`$ECHO "$FIELD-$V2" | bc` + if [ $V1 != $V2 ]; then + $ECHO "V1=$V1 V2=$V2" + fi + fi + fi + fi + $ECHO " " + ;; + SUM) + if [ x"$DO1" = xYES ]; then + $ECHO "${M}DO1: $ARG3" + cat $STDIN | $NPROG ${SW} ${NFILE} "${M}$ARG3" > funcnts2.out + else + $ECHO "${M}SUM: $ARG2 ... $ARG3" + $OPROG ${SW} ${OFILE} "$ARG2" | awk $SAWK > funcnts1.out + if test $? -ne 0; then + $ECHO "skipping $NPROG due to error" + else + cat $STDIN | $NPROG ${SW} ${NFILE} "${M}$ARG3" | awk $SAWK > funcnts2.out + if [ x$M = x ]; then + diff funcnts1.out funcnts2.out + else + V1=`cat funcnts1.out | awk $FAWK` + V2=`cat funcnts2.out | awk $FAWK` + V2=`$ECHO "$FIELD-$V2" | bc` + if [ $V1 != $V2 ]; then + $ECHO "V1=$V1 V2=$V2" + fi + fi + fi + fi + $ECHO " " + ;; + *) + $ECHO "ERROR: unknown command: $CMD" + exit 1 + ;; + esac + if [ $VERBOSE = 1 ]; then + $ECHO "***** funcnts1.out *****" + cat funcnts1.out + fi + if [ $VERBOSE = 2 ]; then + $ECHO "***** funcnts1.out *****" + cat funcnts1.out + $ECHO "***** funcnts2.out *****" + cat funcnts2.out + fi + rm -f err.log +done + +rm -f funcnts1.out funcnts2.out tfuncnts1.out tfuncnts2.out |