| /* See COPYING.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(char* file, SDLVisualTest_ActionQueue* queue); |
| |
| /* Ends C function definitions when using C++ */ |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* _SDL_visualtest_action_configparser_h */ |