Batch behavior parity 3 #5

Merged
Segcolt merged 1 commits from dnk-general into master 2024-10-14 12:38:52 -03:00

47
run.bat
View File

@ -1,19 +1,46 @@
:: Uso: [set EXEC="caminho/do/executavel.exe"] && [set TEST_FOLDER=caminho/dos/casetests] && [set ARGS=ic] && run.bat
:: Uso: [set EXEC="caminho\do\executavel.exe"]&&[set TEST_FOLDER=caminho\dos\casetests]&&[set ARGS=ic]&&[set SOLUTIONS_FILE=arquivo\de\solucoes.txt]&&run.bat
@ECHO off
setlocal enabledelayedexpansion
echo %TIME%
if not defined EXEC (
set EXEC="build/solucao.exe"
set EXEC="build\solucao.exe"
)
if not defined TEST_FOLDER (
set TEST_FOLDER=test
set TEST_FOLDER=Teste\Casos
)
for %%g in (%TEST_FOLDER%/*) do (
echo Arquivo de teste: %TEST_FOLDER%/%%g
if defined ARGS (
%EXEC% -%ARGS% < %TEST_FOLDER%/%%g
if not defined SOLUTIONS_FILE (
set SOLUTIONS_FILE=Teste\Solucoes.txt
)
if defined ARGS (
set ARGS=-%ARGS%
)
for /f "tokens=1,2 skip=1" %%a in (%SOLUTIONS_FILE%) do (
set solutions[%%a]=%%b
)
for %%g in (%TEST_FOLDER%\*) do (
for %%h in (%%g) do set testname=%%~nxh
for /f "delims=" %%h in ("!testname!") do set optimal=!solutions[%%h]!
echo Arquivo de teste: %%g
for /f "tokens=4" %%h in ('!EXEC! !ARGS! ^< %%g') do set res=%%h
echo Resultado do programa: !res!
echo Resultado ótimo: !optimal!
if !res! EQU !optimal! (
echo Resultado ótimo^^!
) else (
%EXEC% < %TEST_FOLDER%/%%g
set /a diff= !res!-!optimal!
echo Diferença de !diff!
)
)
)
echo %TIME%
endlocal
set EXEC=
set TEST_FOLDER=
set SOLUTIONS_FILE=
set ARGS=
goto :eof