mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-06-03 10:27:40 +00:00
Move check for SDL_Delay upper bounds to testtimer
This commit is contained in:
parent
a84389f6bb
commit
f45761908a
3 changed files with 44 additions and 4 deletions
|
@ -315,7 +315,7 @@ add_sdl_test_executable(testshape NEEDS_RESOURCES SOURCES testshape.c)
|
||||||
add_sdl_test_executable(testsprite NEEDS_RESOURCES TESTUTILS SOURCES testsprite.c)
|
add_sdl_test_executable(testsprite NEEDS_RESOURCES TESTUTILS SOURCES testsprite.c)
|
||||||
add_sdl_test_executable(testspriteminimal SOURCES testspriteminimal.c ${icon_bmp_header})
|
add_sdl_test_executable(testspriteminimal SOURCES testspriteminimal.c ${icon_bmp_header})
|
||||||
add_sdl_test_executable(teststreaming NEEDS_RESOURCES TESTUTILS SOURCES teststreaming.c)
|
add_sdl_test_executable(teststreaming NEEDS_RESOURCES TESTUTILS SOURCES teststreaming.c)
|
||||||
add_sdl_test_executable(testtimer NONINTERACTIVE NONINTERACTIVE_TIMEOUT 60 SOURCES testtimer.c)
|
add_sdl_test_executable(testtimer NONINTERACTIVE NONINTERACTIVE_ARGS --no-interactive NONINTERACTIVE_TIMEOUT 60 SOURCES testtimer.c)
|
||||||
add_sdl_test_executable(testurl SOURCES testurl.c)
|
add_sdl_test_executable(testurl SOURCES testurl.c)
|
||||||
add_sdl_test_executable(testver NONINTERACTIVE SOURCES testver.c)
|
add_sdl_test_executable(testver NONINTERACTIVE SOURCES testver.c)
|
||||||
add_sdl_test_executable(testviewport NEEDS_RESOURCES TESTUTILS SOURCES testviewport.c)
|
add_sdl_test_executable(testviewport NEEDS_RESOURCES TESTUTILS SOURCES testviewport.c)
|
||||||
|
|
|
@ -92,7 +92,10 @@ static int timer_delayAndGetTicks(void *arg)
|
||||||
SDLTest_AssertCheck(result2 > 0, "Check result value, expected: >0, got: %" SDL_PRIu64, result2);
|
SDLTest_AssertCheck(result2 > 0, "Check result value, expected: >0, got: %" SDL_PRIu64, result2);
|
||||||
difference = result2 - result;
|
difference = result2 - result;
|
||||||
SDLTest_AssertCheck(difference > (testDelay - marginOfError), "Check difference, expected: >%d, got: %" SDL_PRIu64, testDelay - marginOfError, difference);
|
SDLTest_AssertCheck(difference > (testDelay - marginOfError), "Check difference, expected: >%d, got: %" SDL_PRIu64, testDelay - marginOfError, difference);
|
||||||
|
#if 0
|
||||||
|
/* Disabled because this might fail on non-interactive systems. Moved to testtimer. */
|
||||||
SDLTest_AssertCheck(difference < (testDelay + marginOfError), "Check difference, expected: <%d, got: %" SDL_PRIu64, testDelay + marginOfError, difference);
|
SDLTest_AssertCheck(difference < (testDelay + marginOfError), "Check difference, expected: <%d, got: %" SDL_PRIu64, testDelay + marginOfError, difference);
|
||||||
|
#endif
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,34 @@
|
||||||
|
|
||||||
#define DEFAULT_RESOLUTION 1
|
#define DEFAULT_RESOLUTION 1
|
||||||
|
|
||||||
|
static int test_sdl_delay_within_bounds(void) {
|
||||||
|
const int testDelay = 100;
|
||||||
|
const int marginOfError = 25;
|
||||||
|
Uint64 result;
|
||||||
|
Uint64 result2;
|
||||||
|
Sint64 difference;
|
||||||
|
|
||||||
|
SDLTest_ResetAssertSummary();
|
||||||
|
|
||||||
|
/* Get ticks count - should be non-zero by now */
|
||||||
|
result = SDL_GetTicks();
|
||||||
|
SDLTest_AssertPass("Call to SDL_GetTicks()");
|
||||||
|
SDLTest_AssertCheck(result > 0, "Check result value, expected: >0, got: %" SDL_PRIu64, result);
|
||||||
|
|
||||||
|
/* Delay a bit longer and measure ticks and verify difference */
|
||||||
|
SDL_Delay(testDelay);
|
||||||
|
SDLTest_AssertPass("Call to SDL_Delay(%d)", testDelay);
|
||||||
|
result2 = SDL_GetTicks();
|
||||||
|
SDLTest_AssertPass("Call to SDL_GetTicks()");
|
||||||
|
SDLTest_AssertCheck(result2 > 0, "Check result value, expected: >0, got: %" SDL_PRIu64, result2);
|
||||||
|
difference = result2 - result;
|
||||||
|
SDLTest_AssertCheck(difference > (testDelay - marginOfError), "Check difference, expected: >%d, got: %" SDL_PRIu64, testDelay - marginOfError, difference);
|
||||||
|
/* Disabled because this might fail on non-interactive systems. */
|
||||||
|
SDLTest_AssertCheck(difference < (testDelay + marginOfError), "Check difference, expected: <%d, got: %" SDL_PRIu64, testDelay + marginOfError, difference);
|
||||||
|
|
||||||
|
return SDLTest_AssertSummaryToTestResult() == TEST_RESULT_PASSED ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int ticks = 0;
|
static int ticks = 0;
|
||||||
|
|
||||||
static Uint32 SDLCALL
|
static Uint32 SDLCALL
|
||||||
|
@ -43,6 +71,8 @@ int main(int argc, char *argv[])
|
||||||
Uint64 start, now;
|
Uint64 start, now;
|
||||||
Uint64 start_perf, now_perf;
|
Uint64 start_perf, now_perf;
|
||||||
SDLTest_CommonState *state;
|
SDLTest_CommonState *state;
|
||||||
|
SDL_bool run_interactive_tests = SDL_TRUE;
|
||||||
|
int return_code = 0;
|
||||||
|
|
||||||
/* Initialize test framework */
|
/* Initialize test framework */
|
||||||
state = SDLTest_CommonCreateState(argv, 0);
|
state = SDLTest_CommonCreateState(argv, 0);
|
||||||
|
@ -59,7 +89,10 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
consumed = SDLTest_CommonArg(state, i);
|
consumed = SDLTest_CommonArg(state, i);
|
||||||
if (!consumed) {
|
if (!consumed) {
|
||||||
if (desired < 0) {
|
if (SDL_strcmp(argv[i], "--no-interactive") == 0) {
|
||||||
|
run_interactive_tests = SDL_FALSE;
|
||||||
|
consumed = 1;
|
||||||
|
} else if (desired < 0) {
|
||||||
char *endptr;
|
char *endptr;
|
||||||
|
|
||||||
desired = SDL_strtoul(argv[i], &endptr, 0);
|
desired = SDL_strtoul(argv[i], &endptr, 0);
|
||||||
|
@ -69,7 +102,7 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (consumed <= 0) {
|
if (consumed <= 0) {
|
||||||
static const char *options[] = { "[interval]", NULL };
|
static const char *options[] = { "[--no-interactive]", "[interval]", NULL };
|
||||||
SDLTest_CommonLogUsage(state, argv[0], options);
|
SDLTest_CommonLogUsage(state, argv[0], options);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -162,7 +195,11 @@ int main(int argc, char *argv[])
|
||||||
now = SDL_GetTicks();
|
now = SDL_GetTicks();
|
||||||
SDL_Log("Delay 1 second = %d ms in ticks, %f ms according to performance counter\n", (int)(now - start), (double)((now_perf - start_perf) * 1000) / SDL_GetPerformanceFrequency());
|
SDL_Log("Delay 1 second = %d ms in ticks, %f ms according to performance counter\n", (int)(now - start), (double)((now_perf - start_perf) * 1000) / SDL_GetPerformanceFrequency());
|
||||||
|
|
||||||
|
if (run_interactive_tests) {
|
||||||
|
return_code = test_sdl_delay_within_bounds();
|
||||||
|
}
|
||||||
|
|
||||||
SDLTest_CommonDestroyState(state);
|
SDLTest_CommonDestroyState(state);
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
return 0;
|
return return_code;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue