@echo off
REM ============================================================================
REM run_test.bat - Führt Tests für eine einzelne DXF-Datei aus
REM
REM Usage:
REM   run_test.bat <filename>           - Führt getexdraw Test aus
REM   run_test.bat <filename> --clean   - Führt Test aus und räumt auf
REM   run_test.bat <filename> --ioconverter - Führt ioconverter Test aus
REM   run_test.bat <filename> --translation - Führt translation Test aus
REM
REM Der Dateiname kann mit oder ohne .dxf Erweiterung angegeben werden.
REM Die Datei wird standardmäßig im testdata Ordner gesucht.
REM ============================================================================

if [%1]==[] goto usage

REM Umgebungsvariablen laden
call "%~dp0setenv.bat"

if exist "%~dp0_setenv.bat" (
    echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
    call "%~dp0_setenv.bat"
)

REM Dateinamen extrahieren (ohne Pfad und ohne .dxf Erweiterung)
set "FILENAME=%~n1"

REM Prüfe ob Datei im testdata Ordner existiert
if not exist "%PROJECT_TEST%\%FILENAME%.dxf" (
    echo Fehler: Datei %FILENAME%.dxf nicht gefunden in %PROJECT_TEST%
    echo.
    goto usage
)

REM Sammle zusätzliche Parameter für run_tests.py
set "TEST_PARAMS=--file %FILENAME%"

REM Prüfe auf zusätzliche Flags
:parse_args
if "%2"=="" goto run_test
if /i "%2"=="--clean" (
    set "TEST_PARAMS=%TEST_PARAMS% --clean"
    shift
    goto parse_args
)
if /i "%2"=="--ioconverter" (
    set "TEST_PARAMS=%TEST_PARAMS% --ioconverter"
    shift
    goto parse_args
)
if /i "%2"=="--translation" (
    set "TEST_PARAMS=%TEST_PARAMS% --translation"
    shift
    goto parse_args
)
REM Unbekannte Parameter ignorieren oder durchreichen
shift
goto parse_args

:run_test
echo.
echo ============================================================================
echo Führe Test aus für: %FILENAME%.dxf
echo Test-Parameter: %TEST_PARAMS%
echo ============================================================================
echo.

REM Python-Umgebung aktivieren
CALL "%PROJECT_BIN%\manage_interpreter.bat" activate
if errorlevel 1 (
    echo ERROR: Failed to activate Python environment
    exit /b 1
)

REM Wechsle ins Projektverzeichnis und führe run_tests.py aus
pushd "%PROJECT%"

"%VIRTUAL_ENV%\Scripts\python.exe" -m lib.run_tests %TEST_PARAMS%
set TEST_RESULT=%ERRORLEVEL%

popd
REM Python-Umgebung deaktivieren
CALL "%PROJECT_BIN%\manage_interpreter.bat" deactivate

echo.
echo ============================================================================
if %TEST_RESULT% EQU 0 (
    echo Test erfolgreich abgeschlossen für: %FILENAME%.dxf
) else (
    echo Test fehlgeschlagen für: %FILENAME%.dxf
)
echo ============================================================================
echo.

exit /B %TEST_RESULT%

:usage
echo.
echo Usage: %~nx0 ^<filename^> [OPTIONS]
echo.
echo Argumente:
echo   filename          Name der DXF-Datei (mit oder ohne .dxf Erweiterung)
echo                     Die Datei wird im testdata Ordner gesucht.
echo.
echo Optionen:
echo   --clean           Räumt das work-Verzeichnis nach dem Test auf
echo   --ioconverter     Führt ioconverter Test aus (statt getexdraw)
echo   --translation     Führt translation Test aus (statt getexdraw)
echo.
echo Beispiele:
echo   %~nx0 easy
echo   %~nx0 easy.dxf
echo   %~nx0 easy --clean
echo   %~nx0 easy --ioconverter
echo   %~nx0 Erdungsbsp --translation
echo.
exit /B 1
