#!/bin/bash
#
# Copyright (C) 2003 Ondrej Lhotak
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
TIME_LIMIT=60; # seconds
MEM_LIMIT=65536; # kilobytes

ulimit -t $TIME_LIMIT -d $MEM_LIMIT

CONTEST_DIR=`dirname $0`/..;

SUBMISSION=$1;
PROBLEM=$2;

SUCCESS=115
COMPILE_ERR=99
FORMAT_ERR=102
INCORRECT=105
RUNTIME_ERR=114
TIME_ERR=116
IGNORE=103

# Run on all the test cases
RETURN=0;
for i in $CONTEST_DIR/data/$PROBLEM.*.dat; do
    BASE=`basename $i`
    echo -n "Test case $BASE: ";
    $CONTEST_DIR/var/judgedirs/$SUBMISSION/a.out < $i > $CONTEST_DIR/var/judgedirs/$SUBMISSION/${BASE/%dat/out}
    RETVAL=$?;

    if [ $RETVAL = 139 ]; then # SIGSEGV
        RETURN=$RUNTIME_ERR;
        echo FAILED - Runtime error;

    elif [ $RETVAL = 137 ]; then # SIGXCPU
        RETURN=$TIME_ERR;
        echo FAILED - Time limit exceeded;

    else
        echo RUN SUCCESSFUL;
    fi
done

exit $RETURN;
