cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

testautomation.c (3397B)


      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
     22static SDLTest_CommonState *state;
     23
     24/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
     25static void
     26quit(int rc)
     27{
     28    SDLTest_CommonQuit(state);
     29    exit(rc);
     30}
     31
     32int
     33main(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], "%llu", (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: */