• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
16 extern "C" {
17 #endif
18 
19 /**
20  * Type of the action.
21  */
22 typedef 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  */
40 typedef 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  */
62 typedef 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  */
73 typedef 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  */
89 int 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  */
97 int SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue* queue);
98 
99 /**
100  * Initialize the action queue pointed to by \c queue.
101  */
102 void 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  */
110 SDLVisualTest_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  */
117 int SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue* queue);
118 
119 /**
120  * Dequeues all the elements in the queque pointed to by \c queue.
121  */
122 void 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  */
131 int 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  */
140 int 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 */