Added Apoorv Upreti's GSoC2013 work: visual test suite.
See visualtest/README.txt for details.
This commit is contained in:
parent
9fe9b3f6c3
commit
694010e6e4
347 changed files with 33523 additions and 0 deletions
132
visualtest/src/variator_exhaustive.c
Executable file
132
visualtest/src/variator_exhaustive.c
Executable file
|
@ -0,0 +1,132 @@
|
|||
/* See COPYING.txt for the full license governing this code. */
|
||||
/**
|
||||
* \file variator_exhaustive.c
|
||||
*
|
||||
* Source file for the variator that tests the SUT with all the different
|
||||
* variations of input parameters that are valid.
|
||||
*/
|
||||
|
||||
#include <time.h>
|
||||
#include <SDL_test.h>
|
||||
#include "SDL_visualtest_sut_configparser.h"
|
||||
#include "SDL_visualtest_exhaustive_variator.h"
|
||||
|
||||
static int
|
||||
NextVariation(SDLVisualTest_Variation* variation,
|
||||
SDLVisualTest_SUTConfig* config)
|
||||
{
|
||||
int i, carry;
|
||||
if(!variation)
|
||||
{
|
||||
SDLTest_LogError("variation argument cannot be NULL");
|
||||
return -1;
|
||||
}
|
||||
if(!config)
|
||||
{
|
||||
SDLTest_LogError("config argument cannot be NULL");
|
||||
return -1;
|
||||
}
|
||||
|
||||
carry = 1;
|
||||
for(i = 0; i < variation->num_vars; i++)
|
||||
{
|
||||
carry = SDLVisualTest_NextValue(&variation->vars[i], &config->options[i]);
|
||||
if(carry != 1)
|
||||
break;
|
||||
}
|
||||
|
||||
if(carry == 1) /* we're done, we've tried all possible variations */
|
||||
return 0;
|
||||
if(carry == 0)
|
||||
return 1;
|
||||
SDLTest_LogError("NextVariation() failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
SDLVisualTest_InitExhaustiveVariator(SDLVisualTest_ExhaustiveVariator* variator,
|
||||
SDLVisualTest_SUTConfig* config)
|
||||
{
|
||||
if(!variator)
|
||||
{
|
||||
SDLTest_LogError("variator argument cannot be NULL");
|
||||
return 0;
|
||||
}
|
||||
if(!config)
|
||||
{
|
||||
SDLTest_LogError("config argument cannot be NULL");
|
||||
return 0;
|
||||
}
|
||||
|
||||
SDLTest_FuzzerInit(time(NULL));
|
||||
|
||||
variator->config = *config;
|
||||
variator->variation.num_vars = 0;
|
||||
variator->variation.vars = NULL;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* TODO: Right now variations where an option is not specified at all are not
|
||||
tested for. This can be implemented by switching the on attribute for integer,
|
||||
enum and string options to true and false. */
|
||||
char*
|
||||
SDLVisualTest_GetNextExhaustiveVariation(SDLVisualTest_ExhaustiveVariator* variator)
|
||||
{
|
||||
int success;
|
||||
if(!variator)
|
||||
{
|
||||
SDLTest_LogError("variator argument cannot be NULL");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(!variator->variation.vars) /* the first time this function is called */
|
||||
{
|
||||
success = SDLVisualTest_InitVariation(&variator->variation,
|
||||
&variator->config);
|
||||
if(!success)
|
||||
{
|
||||
SDLTest_LogError("SDLVisualTest_InitVariation() failed");
|
||||
return NULL;
|
||||
}
|
||||
success = SDLVisualTest_MakeStrFromVariation(&variator->variation,
|
||||
&variator->config, variator->buffer, MAX_SUT_ARGS_LEN);
|
||||
if(!success)
|
||||
{
|
||||
SDLTest_LogError("SDLVisualTest_MakeStrFromVariation() failed");
|
||||
return NULL;
|
||||
}
|
||||
return variator->buffer;
|
||||
}
|
||||
else
|
||||
{
|
||||
success = NextVariation(&variator->variation, &variator->config);
|
||||
if(success == 1)
|
||||
{
|
||||
success = SDLVisualTest_MakeStrFromVariation(&variator->variation,
|
||||
&variator->config, variator->buffer, MAX_SUT_ARGS_LEN);
|
||||
if(!success)
|
||||
{
|
||||
SDLTest_LogError("SDLVisualTest_MakeStrFromVariation() failed");
|
||||
return NULL;
|
||||
}
|
||||
return variator->buffer;
|
||||
}
|
||||
else if(success == -1)
|
||||
SDLTest_LogError("NextVariation() failed.");
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
SDLVisualTest_FreeExhaustiveVariator(SDLVisualTest_ExhaustiveVariator* variator)
|
||||
{
|
||||
if(!variator)
|
||||
{
|
||||
SDLTest_LogError("variator argument cannot be NULL");
|
||||
return;
|
||||
}
|
||||
SDL_free(variator->variation.vars);
|
||||
variator->variation.vars = NULL;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue