|
|
- /* 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: */
|