test/testautomation.c
author Andreas Schiffler <aschiffler@ferzkopp.net>
Sat, 22 Dec 2012 16:06:55 -0800
changeset 6763 9cbd31a3450b
parent 6757 9935f71c8c81
child 6769 b49778d885cd
permissions -rw-r--r--
Test lib updates: updated harness to support filtering, added surface comparer, updated interface to test images; added Render test suite from GSOC project
aschiffler@6756
     1
/*
aschiffler@6756
     2
  Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org>
aschiffler@6756
     3
aschiffler@6756
     4
  This software is provided 'as-is', without any express or implied
aschiffler@6756
     5
  warranty.  In no event will the authors be held liable for any damages
aschiffler@6756
     6
  arising from the use of this software.
aschiffler@6756
     7
aschiffler@6756
     8
  Permission is granted to anyone to use this software for any purpose,
aschiffler@6756
     9
  including commercial applications, and to alter it and redistribute it
aschiffler@6756
    10
  freely.
aschiffler@6756
    11
*/
aschiffler@6756
    12
aschiffler@6756
    13
#include <stdlib.h>
aschiffler@6756
    14
#include <stdio.h>
aschiffler@6756
    15
#include <time.h>
aschiffler@6756
    16
aschiffler@6756
    17
#include "SDL.h"
aschiffler@6756
    18
#include "SDL_test.h"
aschiffler@6756
    19
aschiffler@6756
    20
#include "tests/testsuites.h"
aschiffler@6756
    21
aschiffler@6756
    22
static SDLTest_CommonState *state;
aschiffler@6756
    23
aschiffler@6756
    24
aschiffler@6756
    25
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
aschiffler@6756
    26
static void
aschiffler@6756
    27
quit(int rc)
aschiffler@6756
    28
{
aschiffler@6756
    29
    SDLTest_CommonQuit(state);
aschiffler@6756
    30
    exit(rc);
aschiffler@6756
    31
}
aschiffler@6756
    32
aschiffler@6756
    33
int
aschiffler@6756
    34
main(int argc, char *argv[])
aschiffler@6756
    35
{
aschiffler@6756
    36
    int result;
aschiffler@6757
    37
    int testIterations = 1;
aschiffler@6757
    38
    Uint64 userExecKey = 0;
aschiffler@6757
    39
    char *userRunSeed = NULL;
aschiffler@6763
    40
    char *filter = NULL;
aschiffler@6756
    41
    int i;
aschiffler@6756
    42
aschiffler@6756
    43
    /* Initialize test framework */
aschiffler@6756
    44
    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
aschiffler@6756
    45
    if (!state) {
aschiffler@6756
    46
        return 1;
aschiffler@6756
    47
    }
aschiffler@6756
    48
aschiffler@6756
    49
    // Needed?
aschiffler@6756
    50
    // state->window_flags |= SDL_WINDOW_RESIZABLE;
aschiffler@6756
    51
aschiffler@6756
    52
    /* Parse commandline */
aschiffler@6756
    53
    for (i = 1; i < argc;) {
aschiffler@6756
    54
        int consumed;
aschiffler@6756
    55
aschiffler@6756
    56
        consumed = SDLTest_CommonArg(state, i);
aschiffler@6756
    57
        if (consumed == 0) {
aschiffler@6756
    58
            consumed = -1;
aschiffler@6757
    59
            if (SDL_strcasecmp(argv[i], "--iterations") == 0) {
aschiffler@6756
    60
                if (argv[i + 1]) {
aschiffler@6757
    61
                    testIterations = SDL_atoi(argv[i + 1]);
aschiffler@6757
    62
                    if (testIterations < 1) testIterations = 1;
aschiffler@6757
    63
                    consumed = 2;                    
aschiffler@6756
    64
                }
aschiffler@6757
    65
            } 
aschiffler@6757
    66
            else if (SDL_strcasecmp(argv[i], "--execKey") == 0) {
aschiffler@6757
    67
                if (argv[i + 1]) {
aschiffler@6757
    68
                    SDL_sscanf(argv[i + 1], "%llu", &userExecKey);
aschiffler@6757
    69
                    consumed = 2;                    
aschiffler@6757
    70
                }
aschiffler@6757
    71
            } 
aschiffler@6757
    72
            else if (SDL_strcasecmp(argv[i], "--seed") == 0) {
aschiffler@6757
    73
                if (argv[i + 1]) {
aschiffler@6757
    74
                    userRunSeed = SDL_strdup(argv[i + 1]);
aschiffler@6757
    75
                    consumed = 2;
aschiffler@6757
    76
                }
aschiffler@6757
    77
            } 
aschiffler@6763
    78
            else if (SDL_strcasecmp(argv[i], "--filter") == 0) {
aschiffler@6763
    79
                if (argv[i + 1]) {
aschiffler@6763
    80
                    filter = SDL_strdup(argv[i + 1]);
aschiffler@6763
    81
                    consumed = 2;
aschiffler@6763
    82
                }
aschiffler@6763
    83
            } 
aschiffler@6756
    84
        }
aschiffler@6756
    85
        if (consumed < 0) {
aschiffler@6756
    86
            fprintf(stderr,
aschiffler@6757
    87
                    "Usage: %s %s [--iterations #] [--execKey #] [--seed string]\n",
aschiffler@6756
    88
                    argv[0], SDLTest_CommonUsage(state));
aschiffler@6756
    89
            quit(1);
aschiffler@6756
    90
        }
aschiffler@6757
    91
        
aschiffler@6756
    92
        i += consumed;
aschiffler@6756
    93
    }
aschiffler@6756
    94
aschiffler@6756
    95
    /* Initialize common state */    
aschiffler@6756
    96
    if (!SDLTest_CommonInit(state)) {
aschiffler@6756
    97
        quit(2);
aschiffler@6756
    98
    }
aschiffler@6756
    99
aschiffler@6756
   100
    /* Create the windows, initialize the renderers */
aschiffler@6756
   101
    for (i = 0; i < state->num_windows; ++i) {
aschiffler@6756
   102
        SDL_Renderer *renderer = state->renderers[i];
aschiffler@6756
   103
        SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
aschiffler@6756
   104
        SDL_RenderClear(renderer);
aschiffler@6756
   105
    }
aschiffler@6756
   106
aschiffler@6756
   107
    /* Call Harness */
aschiffler@6763
   108
    result = SDLTest_RunSuites(testSuites, userRunSeed, userExecKey, filter, testIterations);
aschiffler@6757
   109
aschiffler@6757
   110
    /* Clean up */
aschiffler@6757
   111
    if (userRunSeed != NULL) {
aschiffler@6757
   112
        SDL_free(userRunSeed);
aschiffler@6757
   113
    }
aschiffler@6763
   114
    if (filter != NULL) {
aschiffler@6763
   115
        SDL_free(filter);
aschiffler@6763
   116
    }
aschiffler@6757
   117
        
aschiffler@6756
   118
    /* Shutdown everything */
aschiffler@6756
   119
    quit(result);        
aschiffler@6756
   120
    return(result);
aschiffler@6756
   121
}
aschiffler@6756
   122
aschiffler@6756
   123
/* vi: set ts=4 sw=4 expandtab: */