#!/bin/sh

ECHOEXE=/bin/echo

# Run CERTDemo.exe on subject 32, output results to /tmp
# Clean up the results file
# Run CERT_ROC to get ROC's
# Compare with 'good' ROC's
DEBUG=0
TESTNAME=GKRTest
PID=$$
if [ ${DEBUG} -ne 1 ]; then
    RESULTS_FILE=/tmp/${TESTNAME}_${PID}.txt
else
    RESULTS_FILE=/tmp/${TESTNAME}_save.txt
fi
# $1 should be 'CERT'
IMAGEDIR=$2

if [ ! -x ../CERTDemo.exe ]; then
    ${ECHOEXE} "${TESTNAME} failed: Unable to find CERTDemo.exe" >&2
    exit 64
fi

if [ ! -d ${IMAGEDIR} ]; then
    ${ECHOEXE} "${TESTNAME} failed: Image dir does not exist: ${IMAGEDIR}" >&2
    exit 65
fi

if [ ${DEBUG} -ne 1 ]; then
    rm -f ${RESULTS_FILE}
    ( cd ..; ./CERTDemo.exe -t -c UnitTests/GKRConfig.xml -gc UnitTests/GKR_Sub32_neutral.xml ${IMAGEDIR} > ${RESULTS_FILE} )
fi

WS="[ 	]"
NANS="	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN NaN NaN"

TMP=/tmp/${TESTNAME}_${PID}_tmp.txt
rm -f ${TMP}

# Remove all non-frame lines, and replace the full filename with just the frame number.
#/Users/Shared/RutgersImages/D006_S032_face/jpegs/frame00003.jpg	-0.64037819	-0.76142289	-2.7360406	-3.4363637	-1.3705576	-2.2918431	-1.4558511	-1.6643377	-0.20414623	-0.36627761	-2.8415835	-2.7160002	-2.5793139	-135.06792	-1.1230071
#grep "frame[0-9]\+" ${RESULTS_FILE} | sed "s/^.*frame\([0-9][0-9]*\)\.jpg/\1/" | sed "s/${WS}Eyes: {[^}]\+}${WS}{[^}]\+}//" | sed "s/${WS}NaN${WS}NaN$//" | sed "s/^\([0-9][0-9][0-9][0-9][0-9]\)${WS}*$/\1${NANS}/" > ${TMP}
grep "frame[0-9]\+" ${RESULTS_FILE} | sed "s/^.*frame\([0-9][0-9]*\)\.bmp/\1/" | sed "s/${WS}Eyes: {[^}]\+}${WS}{[^}]\+}//" | sed "s/^\([0-9][0-9][0-9][0-9][0-9]\)${WS}*$/\1${NANS}/" | sed "s/\([0-9][0-9][0-9][0-9][0-9]\)\t\tNaN\tNaN${WS}*$/\1${NANS}/" | sed "s/\([0-9][0-9][0-9][0-9][0-9]\)\t\t0\t0\t0\t0${WS}*$/\1${NANS}/" > ${TMP}


# Have matlab calculate the ROC
ROCS=`matlab -nosplash -nojvm -nodesktop -nodisplay -r "addpath('../../Misc/WinBuildAndTest/');ROC=CERT_ROC('${TMP}');sprintf( '%.4f\t', ROC );disp(ans);exit" | tail -1`

#if [ ${DEBUG} -ne 1 ]; then
#    rm -f ${RESULTS_FILE}
#    rm -f ${TMP}
#fi

ROCS=( ${ROCS} )
GOODROCS=( `cat good_rocs.txt | grep -v "^#"` )
LABELS=( `cat labels.txt` )

INDEX=0
COUNT=${#ROCS[@]}

#if [ ${COUNT} -ne ${#GOODROCS[@]} ]; then
#    ${ECHOEXE} "ROC counts don't match" >&2
#    exit 66
#fi
#
#if [ ${COUNT} -ne ${#LABELS[@]} ]; then
#    ${ECHOEXE} "ROC label counts don't match" >&2
#    exit 67
#fi

FAILED=0
while [ ${INDEX} -lt ${COUNT} ]; do
    COMP=`${ECHOEXE} "${ROCS[${INDEX}]} < ${GOODROCS[${INDEX}]}" | bc`
    ${ECHOEXE} -n "AU ${LABELS[${INDEX}]}: ${ROCS[${INDEX}]} >= ${GOODROCS[${INDEX}]}: "
    if [ ${COMP} -eq 1 ]; then
        ${ECHOEXE} "Failed!"
        (( FAILED++ ))
    else 
        ${ECHOEXE} "OK!"
    fi 
    (( INDEX++ ))
done

${ECHOEXE}
if [ ${FAILED} -gt 0 ]; then
    ${ECHOEXE} ${TESTNAME}: Failed!
else
    ${ECHOEXE} ${TESTNAME}: OK!
fi
${ECHOEXE}

exit 0
