cscg22-gearboy

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

variators.c (2408B)


      1/* See COPYING.txt for the full license governing this code. */
      2/**
      3 * \file variators.c
      4 *
      5 * Source file for the operations that act on variators.
      6 */
      7
      8#include <SDL_test.h>
      9#include "SDL_visualtest_variators.h"
     10
     11int
     12SDLVisualTest_InitVariator(SDLVisualTest_Variator* variator,
     13                           SDLVisualTest_SUTConfig* config,
     14                           SDLVisualTest_VariatorType type,
     15                           Uint64 seed)
     16{
     17    if(!variator)
     18    {
     19        SDLTest_LogError("variator argument cannot be NULL");
     20        return 0;
     21    }
     22    if(!config)
     23    {
     24        SDLTest_LogError("config argument cannot be NULL");
     25        return 0;
     26    }
     27
     28    variator->type = type;
     29    switch(type)
     30    {
     31        case SDL_VARIATOR_EXHAUSTIVE:
     32            return SDLVisualTest_InitExhaustiveVariator(&variator->data.exhaustive,
     33                                                        config);
     34        break;
     35
     36        case SDL_VARIATOR_RANDOM:
     37            return SDLVisualTest_InitRandomVariator(&variator->data.random,
     38                                                    config, seed);
     39        break;
     40
     41        default:
     42            SDLTest_LogError("Invalid value for variator type");
     43            return 0;
     44    }
     45    return 0;
     46}
     47
     48char*
     49SDLVisualTest_GetNextVariation(SDLVisualTest_Variator* variator)
     50{
     51    if(!variator)
     52    {
     53        SDLTest_LogError("variator argument cannot be NULL");
     54        return NULL;
     55    }
     56    switch(variator->type)
     57    {
     58        case SDL_VARIATOR_EXHAUSTIVE:
     59            return SDLVisualTest_GetNextExhaustiveVariation(&variator->data.exhaustive);
     60        break;
     61
     62        case SDL_VARIATOR_RANDOM:
     63            return SDLVisualTest_GetNextRandomVariation(&variator->data.random);
     64        break;
     65
     66        default:
     67            SDLTest_LogError("Invalid value for variator type");
     68            return NULL;
     69    }
     70    return NULL;
     71}
     72
     73void SDLVisualTest_FreeVariator(SDLVisualTest_Variator* variator)
     74{
     75    if(!variator)
     76    {
     77        SDLTest_LogError("variator argument cannot be NULL");
     78        return;
     79    }
     80    switch(variator->type)
     81    {
     82        case SDL_VARIATOR_EXHAUSTIVE:
     83            SDLVisualTest_FreeExhaustiveVariator(&variator->data.exhaustive);
     84        break;
     85
     86        case SDL_VARIATOR_RANDOM:
     87            SDLVisualTest_FreeRandomVariator(&variator->data.random);
     88        break;
     89
     90        default:
     91            SDLTest_LogError("Invalid value for variator type");
     92    }
     93}