upgrade SDL to version 2.0.8
[platform/upstream/SDL.git] / test / testautomation.c
1 /*
2   Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
3
4   This software is provided 'as-is', without any express or implied
5   warranty.  In no event will the authors be held liable for any damages
6   arising from the use of this software.
7
8   Permission is granted to anyone to use this software for any purpose,
9   including commercial applications, and to alter it and redistribute it
10   freely.
11 */
12
13 #include <stdlib.h>
14 #include <stdio.h>
15 #include <time.h>
16
17 #include "SDL.h"
18 #include "SDL_test.h"
19
20 #include "testautomation_suites.h"
21
22 static SDLTest_CommonState *state;
23
24 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
25 static void
26 quit(int rc)
27 {
28     SDLTest_CommonQuit(state);
29     exit(rc);
30 }
31 int
32 main(int argc, char *argv[])
33 {
34     SDL_Log("====In testautomation====");
35     int result;
36     int testIterations = 1;
37     Uint64 userExecKey = 0;
38     char *userRunSeed = NULL;
39     char *filter = NULL;
40     int i, done;
41     SDL_Event event;
42
43     /* Initialize test framework */
44     state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
45     if (!state) {
46         return 1;
47     }
48
49     /* Parse commandline */
50     for (i = 1; i < argc;) {
51         int consumed;
52
53         consumed = SDLTest_CommonArg(state, i);
54         if (consumed == 0) {
55             consumed = -1;
56             if (SDL_strcasecmp(argv[i], "--iterations") == 0) {
57                 if (argv[i + 1]) {
58                     testIterations = SDL_atoi(argv[i + 1]);
59                     if (testIterations < 1) testIterations = 1;
60                     consumed = 2;
61                 }
62             }
63             else if (SDL_strcasecmp(argv[i], "--execKey") == 0) {
64                 if (argv[i + 1]) {
65                     SDL_sscanf(argv[i + 1], "%"SDL_PRIu64, (long long unsigned int *)&userExecKey);
66                     consumed = 2;
67                 }
68             }
69             else if (SDL_strcasecmp(argv[i], "--seed") == 0) {
70                 if (argv[i + 1]) {
71                     userRunSeed = SDL_strdup(argv[i + 1]);
72                     consumed = 2;
73                 }
74             }
75             else if (SDL_strcasecmp(argv[i], "--filter") == 0) {
76                 if (argv[i + 1]) {
77                     filter = SDL_strdup(argv[i + 1]);
78                     consumed = 2;
79                 }
80             }
81         }
82         if (consumed < 0) {
83             SDL_Log("Usage: %s %s [--iterations #] [--execKey #] [--seed string] [--filter suite_name|test_name]\n",
84                     argv[0], SDLTest_CommonUsage(state));
85             quit(1);
86         }
87
88         i += consumed;
89     }
90
91     /* Initialize common state */
92     if (!SDLTest_CommonInit(state)) {
93         quit(2);
94     }
95
96     /* Create the windows, initialize the renderers */
97     for (i = 0; i < state->num_windows; ++i) {
98         SDL_Renderer *renderer = state->renderers[i];
99         SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
100         SDL_RenderClear(renderer);
101     }
102
103     /* Call Harness */
104     result = SDLTest_RunSuites(testSuites, (const char *)userRunSeed, userExecKey, (const char *)filter, testIterations);
105
106     /* Empty event queue */
107     done = 0;
108     for (i=0; i<100; i++)  {
109       while (SDL_PollEvent(&event)) {
110         SDLTest_CommonEvent(state, &event, &done);
111       }
112       SDL_Delay(10);
113     }
114
115     /* Clean up */
116     SDL_free(userRunSeed);
117     SDL_free(filter);
118
119     /* Shutdown everything */
120     quit(result);
121     return(result);
122 }
123 /* vi: set ts=4 sw=4 expandtab: */