cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

SDL_visualtest_variator_common.h (4108B)


      1/* See COPYING.txt for the full license governing this code. */
      2/**
      3 * \file SDL_visualtest_variator_common.h
      4 *
      5 * Header for common functionality used by variators.
      6 */
      7
      8#include <SDL_types.h>
      9#include "SDL_visualtest_sut_configparser.h"
     10
     11#ifndef _SDL_visualtest_variator_common_h
     12#define _SDL_visualtest_variator_common_h
     13
     14/** The number of variations one integer option would generate */
     15#define SDL_SUT_INTEGER_OPTION_TEST_STEPS 3
     16
     17/* Set up for C function definitions, even when using C++ */
     18#ifdef __cplusplus
     19extern "C" {
     20#endif
     21
     22/** enum for indicating the type of variator being used */
     23typedef enum SDLVisualTest_VariatorType
     24{
     25    SDL_VARIATOR_NONE = 0,
     26    SDL_VARIATOR_EXHAUSTIVE,
     27    SDL_VARIATOR_RANDOM
     28} SDLVisualTest_VariatorType;
     29
     30/**
     31 * One possible value for a command line option to the SUT.
     32 */
     33typedef union SDLVisualTest_SUTOptionValue
     34{
     35    /*! Value if the option is of type boolean */
     36    SDL_bool bool_value;
     37    /*! Value if the option is of type integer. If on is true then the option
     38        will be passed to the SUT, otherwise it will be ignored. */
     39    struct {
     40        int value;
     41        SDL_bool on;
     42    } integer;
     43    /*! Index of the string in the enum_values field of the corresponding
     44        SDLVisualTest_SUTOption object. If on is true the option will passed
     45        to the SUT, otherwise it will be ignored. */
     46    struct {
     47        int index;
     48        SDL_bool on;
     49    } enumerated;
     50    /*! Value if the option is of type string. If on is true the option will 
     51        be passed to the SUT, otherwise it will be ignored. */
     52    struct {
     53        char* value;
     54        SDL_bool on;
     55    } string;
     56} SDLVisualTest_SUTOptionValue;
     57
     58/**
     59 * Represents a valid combination of parameters that can be passed to the SUT.
     60 * The ordering of the values here is the same as the ordering of the options in
     61 * the SDLVisualTest_SUTConfig object for this variation.
     62 */
     63typedef struct SDLVisualTest_Variation
     64{
     65    /*! Pointer to array of option values */
     66    SDLVisualTest_SUTOptionValue* vars;
     67    /*! Number of option values in \c vars */
     68    int num_vars;
     69} SDLVisualTest_Variation;
     70
     71/**
     72 * "Increments" the value of the option by one and returns the carry. We wrap
     73 * around to the initial value on overflow which makes the carry one.
     74 * For example: "incrementing" an SDL_FALSE option makes it SDL_TRUE with no
     75 * carry, and "incrementing" an SDL_TRUE option makes it SDL_FALSE with carry
     76 * one. For integers, a random value in the valid range for the option is used.
     77 *
     78 * \param var Value of the option
     79 * \param opt Object with metadata about the option
     80 *
     81 * \return 1 if there is a carry for enum and bool type options, 0 otherwise.
     82 *         1 is always returned for integer and string type options. -1 is
     83 *         returned on error.
     84 */
     85int SDLVisualTest_NextValue(SDLVisualTest_SUTOptionValue* var,
     86                            SDLVisualTest_SUTOption* opt);
     87
     88/**
     89 * Converts a variation object into a string of command line arguments.
     90 *
     91 * \param variation Variation object to be converted.
     92 * \param config Config object for the SUT.
     93 * \param buffer Pointer to the buffer the arguments string will be copied into.
     94 * \param size Size of the buffer.
     95 *
     96 * \return 1 on success, 0 on failure
     97 */
     98int SDLVisualTest_MakeStrFromVariation(SDLVisualTest_Variation* variation,
     99                                       SDLVisualTest_SUTConfig* config,
    100                                       char* buffer, int size);
    101
    102/**
    103 * Initializes the variation using the following rules:
    104 * - Boolean options are initialized to SDL_FALSE.
    105 * - Integer options are initialized to the minimum valid value they can hold.
    106 * - Enum options are initialized to the first element in the list of values they
    107 *   can take.
    108 * - String options are initialized to the name of the option.
    109 *
    110 * \return 1 on success, 0 on failure.
    111 */
    112int SDLVisualTest_InitVariation(SDLVisualTest_Variation* variation,
    113                                SDLVisualTest_SUTConfig* config);
    114
    115/* Ends C function definitions when using C++ */
    116#ifdef __cplusplus
    117}
    118#endif
    119
    120#endif /* _SDL_visualtest_variator_common_h */