| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | /* 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 __cplusplusextern "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: */
 |