|
/* See LICENSE.txt for the full license governing this code. */
|
|
/**
|
|
* \file SDL_visualtest_variator_common.h
|
|
*
|
|
* Header for common functionality used by variators.
|
|
*/
|
|
|
|
#include <SDL_types.h>
|
|
#include "SDL_visualtest_sut_configparser.h"
|
|
|
|
#ifndef SDL_visualtest_variator_common_h_
|
|
#define SDL_visualtest_variator_common_h_
|
|
|
|
/** The number of variations one integer option would generate */
|
|
#define SDL_SUT_INTEGER_OPTION_TEST_STEPS 3
|
|
|
|
/* Set up for C function definitions, even when using C++ */
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** enum for indicating the type of variator being used */
|
|
typedef enum SDLVisualTest_VariatorType
|
|
{
|
|
SDL_VARIATOR_NONE = 0,
|
|
SDL_VARIATOR_EXHAUSTIVE,
|
|
SDL_VARIATOR_RANDOM
|
|
} SDLVisualTest_VariatorType;
|
|
|
|
/**
|
|
* One possible value for a command line option to the SUT.
|
|
*/
|
|
typedef union SDLVisualTest_SUTOptionValue
|
|
{
|
|
/*! Value if the option is of type boolean */
|
|
SDL_bool bool_value;
|
|
/*! Value if the option is of type integer. If on is true then the option
|
|
will be passed to the SUT, otherwise it will be ignored. */
|
|
struct {
|
|
int value;
|
|
SDL_bool on;
|
|
} integer;
|
|
/*! Index of the string in the enum_values field of the corresponding
|
|
SDLVisualTest_SUTOption object. If on is true the option will passed
|
|
to the SUT, otherwise it will be ignored. */
|
|
struct {
|
|
int index;
|
|
SDL_bool on;
|
|
} enumerated;
|
|
/*! Value if the option is of type string. If on is true the option will
|
|
be passed to the SUT, otherwise it will be ignored. */
|
|
struct {
|
|
char* value;
|
|
SDL_bool on;
|
|
} string;
|
|
} SDLVisualTest_SUTOptionValue;
|
|
|
|
/**
|
|
* Represents a valid combination of parameters that can be passed to the SUT.
|
|
* The ordering of the values here is the same as the ordering of the options in
|
|
* the SDLVisualTest_SUTConfig object for this variation.
|
|
*/
|
|
typedef struct SDLVisualTest_Variation
|
|
{
|
|
/*! Pointer to array of option values */
|
|
SDLVisualTest_SUTOptionValue* vars;
|
|
/*! Number of option values in \c vars */
|
|
int num_vars;
|
|
} SDLVisualTest_Variation;
|
|
|
|
/**
|
|
* "Increments" the value of the option by one and returns the carry. We wrap
|
|
* around to the initial value on overflow which makes the carry one.
|
|
* For example: "incrementing" an SDL_FALSE option makes it SDL_TRUE with no
|
|
* carry, and "incrementing" an SDL_TRUE option makes it SDL_FALSE with carry
|
|
* one. For integers, a random value in the valid range for the option is used.
|
|
*
|
|
* \param var Value of the option
|
|
* \param opt Object with metadata about the option
|
|
*
|
|
* \return 1 if there is a carry for enum and bool type options, 0 otherwise.
|
|
* 1 is always returned for integer and string type options. -1 is
|
|
* returned on error.
|
|
*/
|
|
int SDLVisualTest_NextValue(SDLVisualTest_SUTOptionValue* var,
|
|
SDLVisualTest_SUTOption* opt);
|
|
|
|
/**
|
|
* Converts a variation object into a string of command line arguments.
|
|
*
|
|
* \param variation Variation object to be converted.
|
|
* \param config Config object for the SUT.
|
|
* \param buffer Pointer to the buffer the arguments string will be copied into.
|
|
* \param size Size of the buffer.
|
|
*
|
|
* \return 1 on success, 0 on failure
|
|
*/
|
|
int SDLVisualTest_MakeStrFromVariation(SDLVisualTest_Variation* variation,
|
|
SDLVisualTest_SUTConfig* config,
|
|
char* buffer, int size);
|
|
|
|
/**
|
|
* Initializes the variation using the following rules:
|
|
* - Boolean options are initialized to SDL_FALSE.
|
|
* - Integer options are initialized to the minimum valid value they can hold.
|
|
* - Enum options are initialized to the first element in the list of values they
|
|
* can take.
|
|
* - String options are initialized to the name of the option.
|
|
*
|
|
* \return 1 on success, 0 on failure.
|
|
*/
|
|
int SDLVisualTest_InitVariation(SDLVisualTest_Variation* variation,
|
|
SDLVisualTest_SUTConfig* config);
|
|
|
|
/* Ends C function definitions when using C++ */
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* SDL_visualtest_variator_common_h_ */
|
|
|
|
/* vi: set ts=4 sw=4 expandtab: */
|