Skip to content

Commit

Permalink
Read tests from solution folder (v1.5)
Browse files Browse the repository at this point in the history
  • Loading branch information
rdvdev2 committed Dec 7, 2021
1 parent 423dcc6 commit 31db566
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
9 changes: 8 additions & 1 deletion README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -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*
*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.
27 changes: 18 additions & 9 deletions advocat.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

AV_VERSION="1.4"
AV_VERSION="1.5"
AV_COMPILER="p1++"
AV_DIR="${HOME}/.advocat"

Expand All @@ -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
Expand Down Expand Up @@ -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

Expand All @@ -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
Expand All @@ -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
Expand Down

0 comments on commit 31db566

Please sign in to comment.