/* See COPYING.txt for the full license governing this code. */ /** * \file variators.c * * Source file for the operations that act on variators. */ #include #include "SDL_visualtest_variators.h" int SDLVisualTest_InitVariator(SDLVisualTest_Variator* variator, SDLVisualTest_SUTConfig* config, SDLVisualTest_VariatorType type, Uint64 seed) { if(!variator) { SDLTest_LogError("variator argument cannot be NULL"); return 0; } if(!config) { SDLTest_LogError("config argument cannot be NULL"); return 0; } variator->type = type; switch(type) { case SDL_VARIATOR_EXHAUSTIVE: return SDLVisualTest_InitExhaustiveVariator(&variator->data.exhaustive, config); break; case SDL_VARIATOR_RANDOM: return SDLVisualTest_InitRandomVariator(&variator->data.random, config, seed); break; default: SDLTest_LogError("Invalid value for variator type"); return 0; } return 0; } char* SDLVisualTest_GetNextVariation(SDLVisualTest_Variator* variator) { if(!variator) { SDLTest_LogError("variator argument cannot be NULL"); return NULL; } switch(variator->type) { case SDL_VARIATOR_EXHAUSTIVE: return SDLVisualTest_GetNextExhaustiveVariation(&variator->data.exhaustive); break; case SDL_VARIATOR_RANDOM: return SDLVisualTest_GetNextRandomVariation(&variator->data.random); break; default: SDLTest_LogError("Invalid value for variator type"); return NULL; } return NULL; } void SDLVisualTest_FreeVariator(SDLVisualTest_Variator* variator) { if(!variator) { SDLTest_LogError("variator argument cannot be NULL"); return; } switch(variator->type) { case SDL_VARIATOR_EXHAUSTIVE: SDLVisualTest_FreeExhaustiveVariator(&variator->data.exhaustive); break; case SDL_VARIATOR_RANDOM: SDLVisualTest_FreeRandomVariator(&variator->data.random); break; default: SDLTest_LogError("Invalid value for variator type"); } }