From 00e5eeb40ec395ed575bc28cfa528f14d84c85b4 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 19 May 2019 01:45:15 -0400 Subject: [PATCH] test: added SDLTest_CommonDefaultArgs() This is for test apps that don't need custom command line arguments; it lets us reduce the boilerplate code a tiny bit. --- include/SDL_test_common.h | 11 +++++++++++ src/test/SDL_test_common.c | 15 +++++++++++++++ test/testgesture.c | 15 ++------------- test/testrendercopyex.c | 14 +++----------- test/testscale.c | 14 +++----------- test/testvulkan.c | 20 ++++---------------- test/testwm2.c | 17 +++-------------- 7 files changed, 41 insertions(+), 65 deletions(-) diff --git a/include/SDL_test_common.h b/include/SDL_test_common.h index c6f4cfbe5..feb70acbe 100644 --- a/include/SDL_test_common.h +++ b/include/SDL_test_common.h @@ -158,6 +158,17 @@ const char *SDLTest_CommonUsage(SDLTest_CommonState * state); */ SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state); +/** + * \brief Easy argument handling when test app doesn't need any custom args. + * + * \param state The common state describing the test window to create. + * \param argc argc, as supplied to SDL_main + * \param argv argv, as supplied to SDL_main + * + * \returns False if app should quit, true otherwise. + */ +SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv); + /** * \brief Common event handler for test windows. * diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index 4c275b733..f7e94ab4f 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -489,6 +489,21 @@ SDLTest_CommonUsage(SDLTest_CommonState * state) } } +SDL_bool +SDLTest_CommonDefaultArgs(SDLTest_CommonState *state, const int argc, char **argv) +{ + int i = 1; + while (i < argc) { + const int consumed = SDLTest_CommonArg(state, i); + if (consumed == 0) { + SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state)); + return SDL_FALSE; + } + i += consumed; + } + return SDL_TRUE; +} + static void SDLTest_PrintRendererFlag(char *text, size_t maxlen, Uint32 flag) { diff --git a/test/testgesture.c b/test/testgesture.c index 90e72126d..a41604a6f 100644 --- a/test/testgesture.c +++ b/test/testgesture.c @@ -268,9 +268,6 @@ loop(void) int main(int argc, char* argv[]) { - int i; - - /* !!! FIXME: there should be an SDLTest_CommonDefaultArgs() so apps don't need this. */ state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); if (!state) { return 1; @@ -281,16 +278,8 @@ int main(int argc, char* argv[]) state->window_h = HEIGHT; state->skip_renderer = SDL_TRUE; - for (i = 1; i < argc;) { - const int consumed = SDLTest_CommonArg(state, i); - if (consumed == 0) { - SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state)); - return 1; - } - i += consumed; - } - - if (!SDLTest_CommonInit(state)) { + if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) { + SDLTest_CommonQuit(state); return 1; } diff --git a/test/testrendercopyex.c b/test/testrendercopyex.c index 8dd67ced5..fc01b654e 100644 --- a/test/testrendercopyex.c +++ b/test/testrendercopyex.c @@ -174,18 +174,10 @@ main(int argc, char *argv[]) if (!state) { return 1; } - for (i = 1; i < argc;) { - int consumed; - consumed = SDLTest_CommonArg(state, i); - if (consumed == 0) { - SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state)); - return 1; - } - i += consumed; - } - if (!SDLTest_CommonInit(state)) { - quit(2); + if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) { + SDLTest_CommonQuit(state); + return 1; } drawstates = SDL_stack_alloc(DrawState, state->num_windows); diff --git a/test/testscale.c b/test/testscale.c index a24364158..363927721 100644 --- a/test/testscale.c +++ b/test/testscale.c @@ -164,18 +164,10 @@ main(int argc, char *argv[]) if (!state) { return 1; } - for (i = 1; i < argc;) { - int consumed; - consumed = SDLTest_CommonArg(state, i); - if (consumed == 0) { - SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state)); - return 1; - } - i += consumed; - } - if (!SDLTest_CommonInit(state)) { - quit(2); + if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) { + SDLTest_CommonQuit(state); + return 1; } drawstates = SDL_stack_alloc(DrawState, state->num_windows); diff --git a/test/testvulkan.c b/test/testvulkan.c index 6514e685a..a0c1113a1 100644 --- a/test/testvulkan.c +++ b/test/testvulkan.c @@ -1119,7 +1119,7 @@ static SDL_bool render(void) int main(int argc, char *argv[]) { int fsaa, accel; - int i, done; + int done; SDL_DisplayMode mode; SDL_Event event; Uint32 then, now, frames; @@ -1138,27 +1138,15 @@ int main(int argc, char *argv[]) { return 1; } - for(i = 1; i < argc;) - { - int consumed; - - consumed = SDLTest_CommonArg(state, i); - if(consumed < 0) - { - SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state)); - quit(1); - } - i += consumed; - } /* Set Vulkan parameters */ state->window_flags |= SDL_WINDOW_VULKAN; state->num_windows = 1; state->skip_renderer = 1; - if(!SDLTest_CommonInit(state)) - { - quit(2); + if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) { + SDLTest_CommonQuit(state); + return 1; } SDL_GetCurrentDisplayMode(0, &mode); diff --git a/test/testwm2.c b/test/testwm2.c index 2064aa6fc..9ec867b04 100644 --- a/test/testwm2.c +++ b/test/testwm2.c @@ -129,21 +129,10 @@ main(int argc, char *argv[]) if (!state) { return 1; } - for (i = 1; i < argc;) { - int consumed; - consumed = SDLTest_CommonArg(state, i); - if (consumed == 0) { - consumed = -1; - } - if (consumed < 0) { - SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state)); - quit(1); - } - i += consumed; - } - if (!SDLTest_CommonInit(state)) { - quit(2); + if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) { + SDLTest_CommonQuit(state); + return 1; } SDL_EventState(SDL_DROPFILE, SDL_ENABLE);