SDL_visualtest_action_configparser.h (4180B)
1/* See COPYING.txt for the full license governing this code. */ 2/** 3 * \file SDL_visualtest_action_configparser.h 4 * 5 * Header file for the parser for action config files. 6 */ 7 8#ifndef _SDL_visualtest_action_configparser_h 9#define _SDL_visualtest_action_configparser_h 10 11/** The maximum length of one line in the actions file */ 12#define MAX_ACTION_LINE_LENGTH 300 13 14/* Set up for C function definitions, even when using C++ */ 15#ifdef __cplusplus 16extern "C" { 17#endif 18 19/** 20 * Type of the action. 21 */ 22typedef enum 23{ 24 /*! Launch an application with some given arguments */ 25 SDL_ACTION_LAUNCH = 0, 26 /*! Kill the SUT process */ 27 SDL_ACTION_KILL, 28 /*! Quit (Gracefully exit) the SUT process */ 29 SDL_ACTION_QUIT, 30 /*! Take a screenshot of the SUT window */ 31 SDL_ACTION_SCREENSHOT, 32 /*! Verify a previously taken screenshot */ 33 SDL_ACTION_VERIFY 34} SDLVisualTest_ActionType; 35 36/** 37 * Struct that defines an action that will be performed on the SUT process at 38 * a specific time. 39 */ 40typedef struct SDLVisualTest_Action 41{ 42 /*! The type of action to be performed */ 43 SDLVisualTest_ActionType type; 44 /*! The time, in milliseconds from the launch of the SUT, when the action 45 will be performed */ 46 int time; 47 /*! Any additional information needed to perform the action. */ 48 union 49 { 50 /*! The path and arguments to the process to be launched */ 51 struct 52 { 53 char* path; 54 char* args; 55 } process; 56 } extra; 57} SDLVisualTest_Action; 58 59/** 60 * Struct for a node in the action queue. 61 */ 62typedef struct SDLVisualTest_ActionNode 63{ 64 /*! The action in this node */ 65 SDLVisualTest_Action action; 66 /*! Pointer to the next element in the queue */ 67 struct SDLVisualTest_ActionNode* next; 68} SDLVisualTest_ActionNode; 69 70/** 71 * Queue structure for actions loaded from the actions config file. 72 */ 73typedef struct SDLVisualTest_ActionQueue 74{ 75 /*! Pointer to the front of the queue */ 76 SDLVisualTest_ActionNode* front; 77 /*! Pointer to the rear of the queue */ 78 SDLVisualTest_ActionNode* rear; 79 /*! Number of nodes in the queue */ 80 int size; 81} SDLVisualTest_ActionQueue; 82 83/** 84 * Add an action pointed to by \c action to the rear of the action queue pointed 85 * to by \c queue. 86 * 87 * \return 1 on success, 0 on failure. 88 */ 89int SDLVisualTest_EnqueueAction(SDLVisualTest_ActionQueue* queue, 90 SDLVisualTest_Action action); 91 92/** 93 * Remove an action from the front of the action queue pointed to by \c queue. 94 * 95 * \return 1 on success, 0 on failure. 96 */ 97int SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue* queue); 98 99/** 100 * Initialize the action queue pointed to by \c queue. 101 */ 102void SDLVisualTest_InitActionQueue(SDLVisualTest_ActionQueue* queue); 103 104/** 105 * Get the action at the front of the action queue pointed to by \c queue. 106 * The returned action pointer may become invalid after subsequent dequeues. 107 * 108 * \return pointer to the action on success, NULL on failure. 109 */ 110SDLVisualTest_Action* SDLVisualTest_GetQueueFront(SDLVisualTest_ActionQueue* queue); 111 112/** 113 * Check if the queue pointed to by \c queue is empty or not. 114 * 115 * \return 1 if the queue is empty, 0 otherwise. 116 */ 117int SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue* queue); 118 119/** 120 * Dequeues all the elements in the queque pointed to by \c queue. 121 */ 122void SDLVisualTest_EmptyActionQueue(SDLVisualTest_ActionQueue* queue); 123 124/** 125 * Inserts an action \c action into the queue pointed to by \c queue such that 126 * the times of actions in the queue increase as we move from the front to the 127 * rear. 128 * 129 * \return 1 on success, 0 on failure. 130 */ 131int SDLVisualTest_InsertIntoActionQueue(SDLVisualTest_ActionQueue* queue, 132 SDLVisualTest_Action action); 133 134/** 135 * Parses an action config file with path \c file and populates an action queue 136 * pointed to by \c queue with actions. 137 * 138 * \return 1 on success, 0 on failure. 139 */ 140int SDLVisualTest_ParseActionConfig(char* file, SDLVisualTest_ActionQueue* queue); 141 142/* Ends C function definitions when using C++ */ 143#ifdef __cplusplus 144} 145#endif 146 147#endif /* _SDL_visualtest_action_configparser_h */