diff --git a/README.MD b/README.MD index 22a1620..5add7f3 100644 --- a/README.MD +++ b/README.MD @@ -34,4 +34,11 @@ Per actualitzar el programa només et caldrà actualitzar el repositori: cd ~/advocat git pull ``` -*Nota: Aquest procés de instalació i actualització serà automatitzat en una futura versió del programa* \ No newline at end of file +*Nota: Aquest procés de instalació i actualització serà automatitzat en una futura versió del programa* + +## Com afegir tests a un problema +Alguns problemes al jutge no tenen tests públics, o potser vols afegir al teu joc de proves un test privat que ha fallat o altres casos inventats per tu. En aquests casos, l'advocat pot llegir els tests que guardis a la mateixa carpeta que el teu ```main.cc```. Cada test consta de dos arxius, on ```#``` és el nombre del test (començant per 1): +- ```sample-#.inp``` (o ```sample.inp``` en cas d'haver-hi un únic test): Contè l'entrada del programa +- ```sample-#.cor``` (o ```sample.cor``` en cas d'haver-hi un únic test): Contè la sortida correcta del programa per a l'entrada corresponent + +És important vigilar les línies en blanc al final del arxiu ```.cor```, ja que si hi ha una línia en blanc al final del arxiu el test només es considerarà correcte si el programa també produeix una línia en blanc. En el cas d'escriure tests per a un problema de procediment (sense ```main()```) es recomana comprovar l'arxiu ```~/.advocat/ID_PROBLEMA/main.cc``` per saber com es llegirà l'entrada. \ No newline at end of file diff --git a/advocat.sh b/advocat.sh index 54c24f5..c304853 100644 --- a/advocat.sh +++ b/advocat.sh @@ -1,6 +1,6 @@ #!/bin/bash -AV_VERSION="1.4" +AV_VERSION="1.5" AV_COMPILER="p1++" AV_DIR="${HOME}/.advocat" @@ -12,7 +12,7 @@ AV_CYAN="\033[1;36m" AV_ORANGE="\033[0;33m" AV_NC='\033[0m' # No Color -_advocat_run_test () { +__advocat_run_test () { local INDEX=$1 local BINARY=$2 local INPUT=$3 @@ -161,12 +161,21 @@ advocat () { echo -e "Compiling and running tests..." # Find the test files - local SAMPLES="" + local JUTGE_SAMPLES="" if [ -f "${SAMPLES_FOLDER}/sample.inp" ]; then - SAMPLES="${SAMPLES_FOLDER}/sample.inp" + JUTGE_SAMPLES="${SAMPLES_FOLDER}/sample.inp" elif [ -f "${SAMPLES_FOLDER}/sample-1.inp" ]; then - SAMPLES=("${SAMPLES_FOLDER}"/sample-*.inp) - else + JUTGE_SAMPLES=("${SAMPLES_FOLDER}"/sample-*.inp) + fi + + local USER_SAMPLES="" + if [ -f "$(pwd)/sample.inp" ]; then + USER_SAMPLES="$(pwd)/sample.inp" + elif [ -f "$(pwd)/sample-1.inp" ]; then + USER_SAMPLES=("$(pwd)"/sample-*.inp) + fi + + if [ "${JUTGE_SAMPLES}" = "" ] && [ "${USER_SAMPLES}" = "" ]; then echo -e "${AV_ORANGE}WARNING: No tests were found!${AV_NC}" fi @@ -190,10 +199,10 @@ advocat () { # Run each test local PASS_COUNT=0 local TEST_COUNT=0 - for TEST_INPUT in ${SAMPLES} + for TEST_INPUT in ${JUTGE_SAMPLES} ${USER_SAMPLES} do TEST_COUNT=$((TEST_COUNT + 1)) - _advocat_run_test "$TEST_COUNT" "${BINARY}" "${TEST_INPUT}" "${TEST_INPUT%.*}.cor" "${SKIP_TESTS}" + __advocat_run_test "$TEST_COUNT" "${BINARY}" "${TEST_INPUT}" "${TEST_INPUT%.*}.cor" "${SKIP_TESTS}" PASS_COUNT=$((PASS_COUNT + $?)) done echo @@ -202,7 +211,7 @@ advocat () { if [ "${SKIP_TESTS}" = 1 ]; then echo -e -n "${AV_RED}Your code doesn't compile! " elif [ "${TEST_COUNT}" = 0 ]; then - echo -e -n "${AV_ORANGE}Your code compiles but you should test it before submitting. " + echo -e -n "${AV_ORANGE}Your code compiles but you should test it before submitting. Try to add some tests to the folder." elif [ "$PASS_COUNT" = "$TEST_COUNT" ]; then echo -e -n "${AV_GREEN}You're ready to submit your code to jutge.org! " else