Edit

kc3-lang/SDL/visualtest/include/SDL_visualtest_action_configparser.h

Branch :

  • Show log

    Commit

  • Author : Ozkan Sezer
    Date : 2021-12-21 20:01:02
    Hash : 8a355116
    Message : silence -Wwrite-strings in visualtest

  • visualtest/include/SDL_visualtest_action_configparser.h
  • /* See LICENSE.txt for the full license governing this code. */
    /**
     * \file SDL_visualtest_action_configparser.h
     *
     * Header file for the parser for action config files.
     */
    
    #ifndef SDL_visualtest_action_configparser_h_
    #define SDL_visualtest_action_configparser_h_
    
    /** The maximum length of one line in the actions file */
    #define MAX_ACTION_LINE_LENGTH 300
    
    /* Set up for C function definitions, even when using C++ */
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    /**
     * Type of the action.
     */
    typedef enum
    {
        /*! Launch an application with some given arguments */
        SDL_ACTION_LAUNCH = 0,
        /*! Kill the SUT process */
        SDL_ACTION_KILL,
        /*! Quit (Gracefully exit) the SUT process */
        SDL_ACTION_QUIT,
        /*! Take a screenshot of the SUT window */
        SDL_ACTION_SCREENSHOT,
        /*! Verify a previously taken screenshot */
        SDL_ACTION_VERIFY
    } SDLVisualTest_ActionType;
    
    /**
     * Struct that defines an action that will be performed on the SUT process at
     * a specific time.
     */
    typedef struct SDLVisualTest_Action
    {
        /*! The type of action to be performed */
        SDLVisualTest_ActionType type;
        /*! The time, in milliseconds from the launch of the SUT, when the action
            will be performed */
        int time;
        /*! Any additional information needed to perform the action. */
        union
        {
            /*! The path and arguments to the process to be launched */
            struct
            {
                char* path;
                char* args;
            } process;
        } extra;
    } SDLVisualTest_Action;
    
    /**
     * Struct for a node in the action queue. 
     */
    typedef struct SDLVisualTest_ActionNode
    {
        /*! The action in this node */
        SDLVisualTest_Action action;
        /*! Pointer to the next element in the queue */
        struct SDLVisualTest_ActionNode* next;
    } SDLVisualTest_ActionNode;
    
    /**
     * Queue structure for actions loaded from the actions config file. 
     */
    typedef struct SDLVisualTest_ActionQueue
    {
        /*! Pointer to the front of the queue */
        SDLVisualTest_ActionNode* front;
        /*! Pointer to the rear of the queue */
        SDLVisualTest_ActionNode* rear;
        /*! Number of nodes in the queue */
        int size;
    } SDLVisualTest_ActionQueue;
    
    /**
     * Add an action pointed to by \c action to the rear of the action queue pointed
     * to by \c queue.
     *
     * \return 1 on success, 0 on failure.
     */
    int SDLVisualTest_EnqueueAction(SDLVisualTest_ActionQueue* queue,
                                    SDLVisualTest_Action action);
    
    /**
     * Remove an action from the front of the action queue pointed to by \c queue.
     *
     * \return 1 on success, 0 on failure.
     */
    int SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue* queue);
    
    /**
     * Initialize the action queue pointed to by \c queue.
     */
    void SDLVisualTest_InitActionQueue(SDLVisualTest_ActionQueue* queue);
    
    /**
     * Get the action at the front of the action queue pointed to by \c queue.
     * The returned action pointer may become invalid after subsequent dequeues.
     *
     * \return pointer to the action on success, NULL on failure.
     */
    SDLVisualTest_Action* SDLVisualTest_GetQueueFront(SDLVisualTest_ActionQueue* queue);
    
    /**
     * Check if the queue pointed to by \c queue is empty or not.
     *
     * \return 1 if the queue is empty, 0 otherwise.
     */
    int SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue* queue);
    
    /**
     * Dequeues all the elements in the queque pointed to by \c queue.
     */
    void SDLVisualTest_EmptyActionQueue(SDLVisualTest_ActionQueue* queue);
    
    /**
     * Inserts an action \c action into the queue pointed to by \c queue such that
     * the times of actions in the queue increase as we move from the front to the
     * rear.
     *
     * \return 1 on success, 0 on failure.
     */
    int SDLVisualTest_InsertIntoActionQueue(SDLVisualTest_ActionQueue* queue,
                                            SDLVisualTest_Action action);
    
    /**
     * Parses an action config file with path \c file and populates an action queue
     * pointed to by \c queue with actions.
     *
     * \return 1 on success, 0 on failure.
     */
    int SDLVisualTest_ParseActionConfig(const char* file, SDLVisualTest_ActionQueue* queue);
    
    /* Ends C function definitions when using C++ */
    #ifdef __cplusplus
    }
    #endif
    
    #endif /* SDL_visualtest_action_configparser_h_ */
    
    /* vi: set ts=4 sw=4 expandtab: */