test/testautomation.c
author Philipp Wiesemann <philipp.wiesemann@arcor.de>
Sat, 21 Mar 2015 08:01:43 +0100
changeset 9417 86483b23f44a
parent 9260 039714172dc3
child 9619 b94b6d0bff0f
permissions -rw-r--r--
Fixed confusing audio and touch events because of shared enumeration values.
     1 /*
     2   Copyright (C) 1997-2014 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 
    32 int
    33 main(int argc, char *argv[])
    34 {
    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 
   124 /* vi: set ts=4 sw=4 expandtab: */