| /* See COPYING.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 */ |