@echo off

cd ..\tests

call :pass checkkeys
call :pass loopwave
call :pass testatomic
call :pass testaudioinfo
call :pass testautomation
call :pass testdraw2
call :pass testdrawchessboard
call :pass testerror
call :pass testfile
call :pass testfilesystem
call :pass testgamecontroller
call :pass testgesture
call :pass testgl2
call :pass testgles
call :pass testhaptic
call :pass testiconv
call :pass testime
call :pass testintersection
call :pass testjoystick
call :pass testkeys
::call :pass testloadso
call :pass testlock
call :pass testmessage
call :pass testmultiaudio
call :pass testnative
call :pass testoverlay2
call :pass testplatform
call :pass testpower
call :pass testrelative
call :pass testrendercopyex
call :pass testrendertarget
call :pass testresample sample.wav newsample.wav 44100
call :pass testrumble
call :pass testscale
call :pass testsem 1
call :pass testshader
call :testspecial testshape .\shapes
call :testspecial testshape .\shapes
call :testspecial testshape .\shapes
call :pass testsprite2
call :pass testspriteminimal
call :pass teststreaming
call :pass testthread
call :pass testtimer
call :pass testver
call :pass testwm2
call :pass torturethread

:: leave the tests directory
cd ..

:: exit batch
goto :eof

:testspecial
if not exist %1\Win32\Debug goto :eof
cd %1\Win32\Debug
call :randomfile %2
cd ..\..\..
call :pass testshape %RETURN%
goto :eof

:: pass label (similar to pass function in the Xcode tests command script)
:pass
setlocal enabledelayedexpansion
set args=
set /A count=0
for %%x IN (%*) DO (
  if NOT !count! EQU 0 set args=!args! %%x
  set /A count=%count% + 1
)
endlocal & set callargs=%args%
:: if it does not exist, break procedure
if not exist %1\Win32\Debug goto endfunc
:: goto directory
echo Testing: %1
title Testing: %1
cd %1\Win32\Debug
:: execute test
".\%1.exe"%callargs%
cd ..\..\..
pause
:endfunc
goto :eof

:randomfile
setlocal enabledelayedexpansion
set count=0
if not exist %1 goto :eof
for %%d in (%1\*.*) DO (
  set /A count=count + 1
)
set /A count=%RANDOM% %% %count%
for %%d in (%1\*.*) DO (
  if !count! EQU 0 (
    set rfile=%%d
    goto endrfile
  )
  set /A count=count-1
)
:endrfile
set tmprfile=!rfile!
endlocal & set RETURN=%tmprfile%
goto :eof