You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
3.4 KiB
124 lines
3.4 KiB
/* |
|
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org> |
|
|
|
This software is provided 'as-is', without any express or implied |
|
warranty. In no event will the authors be held liable for any damages |
|
arising from the use of this software. |
|
|
|
Permission is granted to anyone to use this software for any purpose, |
|
including commercial applications, and to alter it and redistribute it |
|
freely. |
|
*/ |
|
|
|
#include <stdlib.h> |
|
#include <stdio.h> |
|
#include <time.h> |
|
|
|
#include "SDL.h" |
|
#include "SDL_test.h" |
|
|
|
#include "testautomation_suites.h" |
|
|
|
static SDLTest_CommonState *state; |
|
|
|
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ |
|
static void |
|
quit(int rc) |
|
{ |
|
SDLTest_CommonQuit(state); |
|
exit(rc); |
|
} |
|
|
|
int |
|
main(int argc, char *argv[]) |
|
{ |
|
int result; |
|
int testIterations = 1; |
|
Uint64 userExecKey = 0; |
|
char *userRunSeed = NULL; |
|
char *filter = NULL; |
|
int i, done; |
|
SDL_Event event; |
|
|
|
/* Initialize test framework */ |
|
state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); |
|
if (!state) { |
|
return 1; |
|
} |
|
|
|
/* Parse commandline */ |
|
for (i = 1; i < argc;) { |
|
int consumed; |
|
|
|
consumed = SDLTest_CommonArg(state, i); |
|
if (consumed == 0) { |
|
consumed = -1; |
|
if (SDL_strcasecmp(argv[i], "--iterations") == 0) { |
|
if (argv[i + 1]) { |
|
testIterations = SDL_atoi(argv[i + 1]); |
|
if (testIterations < 1) testIterations = 1; |
|
consumed = 2; |
|
} |
|
} |
|
else if (SDL_strcasecmp(argv[i], "--execKey") == 0) { |
|
if (argv[i + 1]) { |
|
SDL_sscanf(argv[i + 1], "%"SDL_PRIu64, (long long unsigned int *)&userExecKey); |
|
consumed = 2; |
|
} |
|
} |
|
else if (SDL_strcasecmp(argv[i], "--seed") == 0) { |
|
if (argv[i + 1]) { |
|
userRunSeed = SDL_strdup(argv[i + 1]); |
|
consumed = 2; |
|
} |
|
} |
|
else if (SDL_strcasecmp(argv[i], "--filter") == 0) { |
|
if (argv[i + 1]) { |
|
filter = SDL_strdup(argv[i + 1]); |
|
consumed = 2; |
|
} |
|
} |
|
} |
|
if (consumed < 0) { |
|
static const char *options[] = { "[--iterations #]", "[--execKey #]", "[--seed string]", "[--filter suite_name|test_name]", NULL }; |
|
SDLTest_CommonLogUsage(state, argv[0], options); |
|
quit(1); |
|
} |
|
|
|
i += consumed; |
|
} |
|
|
|
/* Initialize common state */ |
|
if (!SDLTest_CommonInit(state)) { |
|
quit(2); |
|
} |
|
|
|
/* Create the windows, initialize the renderers */ |
|
for (i = 0; i < state->num_windows; ++i) { |
|
SDL_Renderer *renderer = state->renderers[i]; |
|
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); |
|
SDL_RenderClear(renderer); |
|
} |
|
|
|
/* Call Harness */ |
|
result = SDLTest_RunSuites(testSuites, (const char *)userRunSeed, userExecKey, (const char *)filter, testIterations); |
|
|
|
/* Empty event queue */ |
|
done = 0; |
|
for (i=0; i<100; i++) { |
|
while (SDL_PollEvent(&event)) { |
|
SDLTest_CommonEvent(state, &event, &done); |
|
} |
|
SDL_Delay(10); |
|
} |
|
|
|
/* Clean up */ |
|
SDL_free(userRunSeed); |
|
SDL_free(filter); |
|
|
|
/* Shutdown everything */ |
|
quit(result); |
|
return(result); |
|
} |
|
|
|
/* vi: set ts=4 sw=4 expandtab: */
|
|
|