aschiffler@6800
|
1 |
/**
|
aschiffler@6800
|
2 |
* Video test suite
|
aschiffler@6800
|
3 |
*/
|
aschiffler@6800
|
4 |
|
aschiffler@6800
|
5 |
#include <stdio.h>
|
aschiffler@6800
|
6 |
|
aschiffler@6800
|
7 |
#include "SDL.h"
|
aschiffler@6800
|
8 |
#include "SDL_test.h"
|
aschiffler@6800
|
9 |
|
aschiffler@6921
|
10 |
/* Private helpers */
|
aschiffler@6921
|
11 |
|
aschiffler@6921
|
12 |
/*
|
aschiffler@6921
|
13 |
* Create a test window
|
aschiffler@6921
|
14 |
*/
|
aschiffler@6921
|
15 |
SDL_Window *_createVideoSuiteTestWindow(const char *title)
|
aschiffler@6921
|
16 |
{
|
aschiffler@6921
|
17 |
SDL_Window* window;
|
aschiffler@6921
|
18 |
int x, y, w, h;
|
aschiffler@6921
|
19 |
SDL_WindowFlags flags;
|
aschiffler@6921
|
20 |
|
aschiffler@6921
|
21 |
/* Standard window */
|
aschiffler@6921
|
22 |
x = SDLTest_RandomIntegerInRange(1, 100);
|
aschiffler@6921
|
23 |
y = SDLTest_RandomIntegerInRange(1, 100);
|
aschiffler@6921
|
24 |
w = SDLTest_RandomIntegerInRange(320, 1024);
|
aschiffler@6921
|
25 |
h = SDLTest_RandomIntegerInRange(320, 768);
|
aschiffler@6921
|
26 |
flags = SDL_WINDOW_SHOWN;
|
aschiffler@6921
|
27 |
|
aschiffler@6921
|
28 |
window = SDL_CreateWindow(title, x, y, w, h, flags);
|
aschiffler@6921
|
29 |
SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,%d)", x, y, w, h, flags);
|
aschiffler@6921
|
30 |
SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
|
aschiffler@6921
|
31 |
|
aschiffler@6921
|
32 |
return window;
|
aschiffler@6921
|
33 |
}
|
aschiffler@6921
|
34 |
|
aschiffler@6921
|
35 |
/*
|
aschiffler@6921
|
36 |
* Destroy test window
|
aschiffler@6921
|
37 |
*/
|
aschiffler@6921
|
38 |
void _destroyVideoSuiteTestWindow(SDL_Window *window)
|
aschiffler@6921
|
39 |
{
|
aschiffler@6921
|
40 |
if (window != NULL) {
|
aschiffler@6921
|
41 |
SDL_DestroyWindow(window);
|
aschiffler@6921
|
42 |
window = NULL;
|
aschiffler@6921
|
43 |
SDLTest_AssertPass("Call to SDL_DestroyWindow");
|
aschiffler@6921
|
44 |
}
|
aschiffler@6921
|
45 |
}
|
aschiffler@6921
|
46 |
|
aschiffler@6800
|
47 |
/* Test case functions */
|
aschiffler@6800
|
48 |
|
aschiffler@6800
|
49 |
/**
|
aschiffler@6800
|
50 |
* @brief Enable and disable screensaver while checking state
|
aschiffler@6800
|
51 |
*/
|
aschiffler@6800
|
52 |
int
|
aschiffler@6800
|
53 |
video_enableDisableScreensaver(void *arg)
|
aschiffler@6800
|
54 |
{
|
aschiffler@6800
|
55 |
SDL_bool initialResult;
|
aschiffler@6800
|
56 |
SDL_bool result;
|
aschiffler@6800
|
57 |
|
aschiffler@6800
|
58 |
/* Get current state and proceed according to current state */
|
aschiffler@6800
|
59 |
initialResult = SDL_IsScreenSaverEnabled();
|
aschiffler@6800
|
60 |
SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
|
aschiffler@6800
|
61 |
if (initialResult == SDL_TRUE) {
|
aschiffler@6800
|
62 |
|
aschiffler@6800
|
63 |
/* Currently enabled: disable first, then enable again */
|
aschiffler@6800
|
64 |
|
aschiffler@6800
|
65 |
/* Disable screensaver and check */
|
aschiffler@6800
|
66 |
SDL_DisableScreenSaver();
|
aschiffler@6800
|
67 |
SDLTest_AssertPass("Call to SDL_DisableScreenSaver()");
|
aschiffler@6800
|
68 |
result = SDL_IsScreenSaverEnabled();
|
aschiffler@6800
|
69 |
SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
|
aschiffler@6800
|
70 |
SDLTest_AssertCheck(result == SDL_FALSE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_FALSE, result);
|
aschiffler@6800
|
71 |
|
aschiffler@6800
|
72 |
/* Enable screensaver and check */
|
aschiffler@6800
|
73 |
SDL_EnableScreenSaver();
|
aschiffler@6800
|
74 |
SDLTest_AssertPass("Call to SDL_EnableScreenSaver()");
|
aschiffler@6800
|
75 |
result = SDL_IsScreenSaverEnabled();
|
aschiffler@6800
|
76 |
SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
|
aschiffler@6800
|
77 |
SDLTest_AssertCheck(result == SDL_TRUE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_TRUE, result);
|
aschiffler@6800
|
78 |
|
aschiffler@6800
|
79 |
} else {
|
aschiffler@6800
|
80 |
|
aschiffler@6800
|
81 |
/* Currently disabled: enable first, then disable again */
|
aschiffler@6800
|
82 |
|
aschiffler@6800
|
83 |
/* Enable screensaver and check */
|
aschiffler@6800
|
84 |
SDL_EnableScreenSaver();
|
aschiffler@6800
|
85 |
SDLTest_AssertPass("Call to SDL_EnableScreenSaver()");
|
aschiffler@6800
|
86 |
result = SDL_IsScreenSaverEnabled();
|
aschiffler@6800
|
87 |
SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
|
aschiffler@6800
|
88 |
SDLTest_AssertCheck(result == SDL_TRUE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_TRUE, result);
|
aschiffler@6800
|
89 |
|
aschiffler@6800
|
90 |
/* Disable screensaver and check */
|
aschiffler@6800
|
91 |
SDL_DisableScreenSaver();
|
aschiffler@6800
|
92 |
SDLTest_AssertPass("Call to SDL_DisableScreenSaver()");
|
aschiffler@6800
|
93 |
result = SDL_IsScreenSaverEnabled();
|
aschiffler@6800
|
94 |
SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
|
aschiffler@6800
|
95 |
SDLTest_AssertCheck(result == SDL_FALSE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_FALSE, result);
|
aschiffler@6800
|
96 |
}
|
aschiffler@6800
|
97 |
|
aschiffler@6800
|
98 |
return TEST_COMPLETED;
|
aschiffler@6800
|
99 |
}
|
aschiffler@6800
|
100 |
|
aschiffler@6891
|
101 |
/**
|
aschiffler@6891
|
102 |
* @brief Tests the functionality of the SDL_CreateWindow function using different positions
|
aschiffler@6891
|
103 |
*/
|
aschiffler@6891
|
104 |
int
|
aschiffler@6891
|
105 |
video_createWindowVariousPositions(void *arg)
|
aschiffler@6891
|
106 |
{
|
aschiffler@6891
|
107 |
SDL_Window* window;
|
aschiffler@6891
|
108 |
const char* title = "video_createWindowVariousPositions Test Window";
|
aschiffler@6891
|
109 |
int x, y, w, h;
|
aschiffler@6891
|
110 |
int xVariation, yVariation;
|
aschiffler@6891
|
111 |
|
aschiffler@6891
|
112 |
for (xVariation = 0; xVariation < 6; xVariation++) {
|
aschiffler@6891
|
113 |
for (yVariation = 0; yVariation < 6; yVariation++) {
|
aschiffler@6891
|
114 |
switch(xVariation) {
|
aschiffler@6891
|
115 |
case 0:
|
aschiffler@6891
|
116 |
/* Zero X Position */
|
aschiffler@6891
|
117 |
x = 0;
|
aschiffler@6891
|
118 |
break;
|
aschiffler@6891
|
119 |
case 1:
|
aschiffler@6891
|
120 |
/* Random X position inside screen */
|
aschiffler@6891
|
121 |
x = SDLTest_RandomIntegerInRange(1, 100);
|
aschiffler@6891
|
122 |
break;
|
aschiffler@6891
|
123 |
case 2:
|
aschiffler@6891
|
124 |
/* Random X position outside screen (positive) */
|
aschiffler@6891
|
125 |
x = SDLTest_RandomIntegerInRange(10000, 11000);
|
aschiffler@6891
|
126 |
break;
|
aschiffler@6891
|
127 |
case 3:
|
aschiffler@6891
|
128 |
/* Random X position outside screen (negative) */
|
aschiffler@6891
|
129 |
x = SDLTest_RandomIntegerInRange(-1000, -100);
|
aschiffler@6891
|
130 |
break;
|
aschiffler@6891
|
131 |
case 4:
|
aschiffler@6891
|
132 |
/* Centered X position */
|
aschiffler@6891
|
133 |
x = SDL_WINDOWPOS_CENTERED;
|
aschiffler@6891
|
134 |
break;
|
aschiffler@6891
|
135 |
case 5:
|
aschiffler@6891
|
136 |
/* Undefined X position */
|
aschiffler@6891
|
137 |
x = SDL_WINDOWPOS_UNDEFINED;
|
aschiffler@6891
|
138 |
break;
|
aschiffler@6891
|
139 |
}
|
aschiffler@6891
|
140 |
|
aschiffler@6891
|
141 |
switch(yVariation) {
|
aschiffler@6891
|
142 |
case 0:
|
aschiffler@6891
|
143 |
/* Zero X Position */
|
aschiffler@6891
|
144 |
y = 0;
|
aschiffler@6891
|
145 |
break;
|
aschiffler@6891
|
146 |
case 1:
|
aschiffler@6891
|
147 |
/* Random X position inside screen */
|
aschiffler@6891
|
148 |
y = SDLTest_RandomIntegerInRange(1, 100);
|
aschiffler@6891
|
149 |
break;
|
aschiffler@6891
|
150 |
case 2:
|
aschiffler@6891
|
151 |
/* Random X position outside screen (positive) */
|
aschiffler@6891
|
152 |
y = SDLTest_RandomIntegerInRange(10000, 11000);
|
aschiffler@6891
|
153 |
break;
|
aschiffler@6891
|
154 |
case 3:
|
aschiffler@6891
|
155 |
/* Random Y position outside screen (negative) */
|
aschiffler@6891
|
156 |
y = SDLTest_RandomIntegerInRange(-1000, -100);
|
aschiffler@6891
|
157 |
break;
|
aschiffler@6891
|
158 |
case 4:
|
aschiffler@6891
|
159 |
/* Centered Y position */
|
aschiffler@6891
|
160 |
y = SDL_WINDOWPOS_CENTERED;
|
aschiffler@6891
|
161 |
break;
|
aschiffler@6891
|
162 |
case 5:
|
aschiffler@6891
|
163 |
/* Undefined Y position */
|
aschiffler@6891
|
164 |
y = SDL_WINDOWPOS_UNDEFINED;
|
aschiffler@6891
|
165 |
break;
|
aschiffler@6891
|
166 |
}
|
aschiffler@6891
|
167 |
|
aschiffler@6891
|
168 |
w = SDLTest_RandomIntegerInRange(32, 96);
|
aschiffler@6891
|
169 |
h = SDLTest_RandomIntegerInRange(32, 96);
|
aschiffler@6891
|
170 |
window = SDL_CreateWindow(title, x, y, w, h, SDL_WINDOW_SHOWN);
|
aschiffler@6891
|
171 |
SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,SHOWN)", x, y, w, h);
|
aschiffler@6891
|
172 |
SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
|
aschiffler@6921
|
173 |
|
aschiffler@6921
|
174 |
/* Clean up */
|
aschiffler@6921
|
175 |
_destroyVideoSuiteTestWindow(window);
|
aschiffler@6891
|
176 |
}
|
aschiffler@6891
|
177 |
}
|
aschiffler@6891
|
178 |
|
aschiffler@6891
|
179 |
return TEST_COMPLETED;
|
aschiffler@6891
|
180 |
}
|
aschiffler@6891
|
181 |
|
aschiffler@6891
|
182 |
/**
|
aschiffler@6891
|
183 |
* @brief Tests the functionality of the SDL_CreateWindow function using different sizes
|
aschiffler@6891
|
184 |
*/
|
aschiffler@6891
|
185 |
int
|
aschiffler@6891
|
186 |
video_createWindowVariousSizes(void *arg)
|
aschiffler@6891
|
187 |
{
|
aschiffler@6891
|
188 |
SDL_Window* window;
|
aschiffler@6891
|
189 |
const char* title = "video_createWindowVariousSizes Test Window";
|
aschiffler@6891
|
190 |
int x, y, w, h;
|
aschiffler@6891
|
191 |
int wVariation, hVariation;
|
aschiffler@6891
|
192 |
|
aschiffler@6891
|
193 |
x = SDLTest_RandomIntegerInRange(1, 100);
|
aschiffler@6891
|
194 |
y = SDLTest_RandomIntegerInRange(1, 100);
|
aschiffler@6891
|
195 |
for (wVariation = 0; wVariation < 3; wVariation++) {
|
aschiffler@6891
|
196 |
for (hVariation = 0; hVariation < 3; hVariation++) {
|
aschiffler@6891
|
197 |
switch(wVariation) {
|
aschiffler@6891
|
198 |
case 0:
|
aschiffler@6891
|
199 |
/* Width of 1 */
|
aschiffler@6891
|
200 |
w = 1;
|
aschiffler@6891
|
201 |
break;
|
aschiffler@6891
|
202 |
case 1:
|
aschiffler@6891
|
203 |
/* Random "normal" width */
|
aschiffler@6891
|
204 |
w = SDLTest_RandomIntegerInRange(320, 1920);
|
aschiffler@6891
|
205 |
break;
|
aschiffler@6891
|
206 |
case 2:
|
aschiffler@6891
|
207 |
/* Random "large" width */
|
aschiffler@6891
|
208 |
w = SDLTest_RandomIntegerInRange(2048, 4095);
|
aschiffler@6891
|
209 |
break;
|
aschiffler@6891
|
210 |
}
|
aschiffler@6891
|
211 |
|
aschiffler@6891
|
212 |
switch(hVariation) {
|
aschiffler@6891
|
213 |
case 0:
|
aschiffler@6891
|
214 |
/* Height of 1 */
|
aschiffler@6891
|
215 |
h = 1;
|
aschiffler@6891
|
216 |
break;
|
aschiffler@6891
|
217 |
case 1:
|
aschiffler@6891
|
218 |
/* Random "normal" height */
|
aschiffler@6891
|
219 |
h = SDLTest_RandomIntegerInRange(320, 1080);
|
aschiffler@6891
|
220 |
break;
|
aschiffler@6891
|
221 |
case 2:
|
aschiffler@6891
|
222 |
/* Random "large" height */
|
aschiffler@6891
|
223 |
h = SDLTest_RandomIntegerInRange(2048, 4095);
|
aschiffler@6891
|
224 |
break;
|
aschiffler@6891
|
225 |
}
|
aschiffler@6891
|
226 |
|
aschiffler@6891
|
227 |
window = SDL_CreateWindow(title, x, y, w, h, SDL_WINDOW_SHOWN);
|
aschiffler@6891
|
228 |
SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,SHOWN)", x, y, w, h);
|
aschiffler@6891
|
229 |
SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
|
aschiffler@6921
|
230 |
|
aschiffler@6921
|
231 |
/* Clean up */
|
aschiffler@6921
|
232 |
_destroyVideoSuiteTestWindow(window);
|
aschiffler@6891
|
233 |
}
|
aschiffler@6891
|
234 |
}
|
aschiffler@6891
|
235 |
|
aschiffler@6891
|
236 |
return TEST_COMPLETED;
|
aschiffler@6891
|
237 |
}
|
aschiffler@6891
|
238 |
|
aschiffler@6891
|
239 |
/**
|
aschiffler@6891
|
240 |
* @brief Tests the functionality of the SDL_CreateWindow function using different flags
|
aschiffler@6891
|
241 |
*/
|
aschiffler@6891
|
242 |
int
|
aschiffler@6891
|
243 |
video_createWindowVariousFlags(void *arg)
|
aschiffler@6891
|
244 |
{
|
aschiffler@6891
|
245 |
SDL_Window* window;
|
aschiffler@6891
|
246 |
const char* title = "video_createWindowVariousFlags Test Window";
|
aschiffler@6891
|
247 |
int x, y, w, h;
|
aschiffler@6891
|
248 |
int fVariation;
|
aschiffler@6891
|
249 |
SDL_WindowFlags flags;
|
aschiffler@6891
|
250 |
|
aschiffler@6891
|
251 |
/* Standard window */
|
aschiffler@6891
|
252 |
x = SDLTest_RandomIntegerInRange(1, 100);
|
aschiffler@6891
|
253 |
y = SDLTest_RandomIntegerInRange(1, 100);
|
aschiffler@6891
|
254 |
w = SDLTest_RandomIntegerInRange(320, 1024);
|
aschiffler@6891
|
255 |
h = SDLTest_RandomIntegerInRange(320, 768);
|
aschiffler@6891
|
256 |
|
aschiffler@6891
|
257 |
for (fVariation = 0; fVariation < 13; fVariation++) {
|
aschiffler@6891
|
258 |
switch(fVariation) {
|
aschiffler@6891
|
259 |
case 0:
|
aschiffler@6891
|
260 |
flags = SDL_WINDOW_FULLSCREEN;
|
aschiffler@6891
|
261 |
/* Skip - blanks screen; comment out next line to run test */
|
aschiffler@6891
|
262 |
continue;
|
aschiffler@6891
|
263 |
break;
|
aschiffler@6891
|
264 |
case 1:
|
aschiffler@6891
|
265 |
flags = SDL_WINDOW_FULLSCREEN_DESKTOP;
|
aschiffler@6891
|
266 |
/* Skip - blanks screen; comment out next line to run test */
|
aschiffler@6891
|
267 |
continue;
|
aschiffler@6891
|
268 |
break;
|
aschiffler@6891
|
269 |
case 2:
|
aschiffler@6891
|
270 |
flags = SDL_WINDOW_OPENGL;
|
aschiffler@6891
|
271 |
break;
|
aschiffler@6891
|
272 |
case 3:
|
aschiffler@6891
|
273 |
flags = SDL_WINDOW_SHOWN;
|
aschiffler@6891
|
274 |
break;
|
aschiffler@6891
|
275 |
case 4:
|
aschiffler@6891
|
276 |
flags = SDL_WINDOW_HIDDEN;
|
aschiffler@6891
|
277 |
break;
|
aschiffler@6891
|
278 |
case 5:
|
aschiffler@6891
|
279 |
flags = SDL_WINDOW_BORDERLESS;
|
aschiffler@6891
|
280 |
break;
|
aschiffler@6891
|
281 |
case 6:
|
aschiffler@6891
|
282 |
flags = SDL_WINDOW_RESIZABLE;
|
aschiffler@6891
|
283 |
break;
|
aschiffler@6891
|
284 |
case 7:
|
aschiffler@6891
|
285 |
flags = SDL_WINDOW_MINIMIZED;
|
aschiffler@6891
|
286 |
break;
|
aschiffler@6891
|
287 |
case 8:
|
aschiffler@6891
|
288 |
flags = SDL_WINDOW_MAXIMIZED;
|
aschiffler@6891
|
289 |
break;
|
aschiffler@6891
|
290 |
case 9:
|
aschiffler@6891
|
291 |
flags = SDL_WINDOW_INPUT_GRABBED;
|
aschiffler@6891
|
292 |
break;
|
aschiffler@6891
|
293 |
case 10:
|
aschiffler@6891
|
294 |
flags = SDL_WINDOW_INPUT_FOCUS;
|
aschiffler@6891
|
295 |
break;
|
aschiffler@6891
|
296 |
case 11:
|
aschiffler@6891
|
297 |
flags = SDL_WINDOW_MOUSE_FOCUS;
|
aschiffler@6891
|
298 |
break;
|
aschiffler@6891
|
299 |
case 12:
|
aschiffler@6891
|
300 |
flags = SDL_WINDOW_FOREIGN;
|
aschiffler@6891
|
301 |
break;
|
aschiffler@6891
|
302 |
}
|
aschiffler@6891
|
303 |
|
aschiffler@6891
|
304 |
window = SDL_CreateWindow(title, x, y, w, h, flags);
|
aschiffler@6891
|
305 |
SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,%d)", x, y, w, h, flags);
|
aschiffler@6891
|
306 |
SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
|
aschiffler@6921
|
307 |
|
aschiffler@6921
|
308 |
|
aschiffler@6921
|
309 |
/* Clean up */
|
aschiffler@6921
|
310 |
_destroyVideoSuiteTestWindow(window);
|
aschiffler@6891
|
311 |
}
|
aschiffler@6891
|
312 |
|
aschiffler@6891
|
313 |
return TEST_COMPLETED;
|
aschiffler@6891
|
314 |
}
|
aschiffler@6891
|
315 |
|
aschiffler@6921
|
316 |
|
aschiffler@6891
|
317 |
/**
|
aschiffler@6891
|
318 |
* @brief Tests the functionality of the SDL_GetWindowFlags function
|
aschiffler@6891
|
319 |
*/
|
aschiffler@6891
|
320 |
int
|
aschiffler@6891
|
321 |
video_getWindowFlags(void *arg)
|
aschiffler@6891
|
322 |
{
|
aschiffler@6891
|
323 |
SDL_Window* window;
|
aschiffler@6891
|
324 |
const char* title = "video_getWindowFlags Test Window";
|
aschiffler@6891
|
325 |
SDL_WindowFlags flags;
|
aschiffler@6891
|
326 |
Uint32 actualFlags;
|
aschiffler@6891
|
327 |
|
aschiffler@6921
|
328 |
/* Reliable flag set always set in test window */
|
aschiffler@6891
|
329 |
flags = SDL_WINDOW_SHOWN;
|
aschiffler@6891
|
330 |
|
aschiffler@6921
|
331 |
/* Call against new test window */
|
aschiffler@6921
|
332 |
window = _createVideoSuiteTestWindow(title);
|
aschiffler@6891
|
333 |
if (window != NULL) {
|
aschiffler@6891
|
334 |
actualFlags = SDL_GetWindowFlags(window);
|
aschiffler@6891
|
335 |
SDLTest_AssertPass("Call to SDL_GetWindowFlags");
|
aschiffler@6891
|
336 |
SDLTest_AssertCheck((flags & actualFlags) == flags, "Verify returned value has flags %d set, got: %d", flags, actualFlags);
|
aschiffler@6891
|
337 |
}
|
aschiffler@6891
|
338 |
|
aschiffler@6921
|
339 |
/* Clean up */
|
aschiffler@6921
|
340 |
_destroyVideoSuiteTestWindow(window);
|
aschiffler@6921
|
341 |
|
aschiffler@6921
|
342 |
return TEST_COMPLETED;
|
aschiffler@6921
|
343 |
}
|
aschiffler@6921
|
344 |
|
aschiffler@6921
|
345 |
/**
|
aschiffler@6921
|
346 |
* @brief Tests the functionality of the SDL_GetNumDisplayModes function
|
aschiffler@6921
|
347 |
*/
|
aschiffler@6921
|
348 |
int
|
aschiffler@6921
|
349 |
video_getNumDisplayModes(void *arg)
|
aschiffler@6921
|
350 |
{
|
aschiffler@6921
|
351 |
int result;
|
aschiffler@6921
|
352 |
int displayNum;
|
aschiffler@6921
|
353 |
int i;
|
aschiffler@6921
|
354 |
|
aschiffler@6921
|
355 |
/* Get number of displays */
|
aschiffler@6921
|
356 |
displayNum = SDL_GetNumVideoDisplays();
|
aschiffler@6921
|
357 |
SDLTest_AssertPass("Call to SDL_GetNumVideoDisplays");
|
aschiffler@6921
|
358 |
|
aschiffler@6921
|
359 |
/* Make call for each display */
|
aschiffler@6921
|
360 |
for (i=0; i<displayNum; i++) {
|
aschiffler@6921
|
361 |
result = SDL_GetNumDisplayModes(i);
|
aschiffler@6921
|
362 |
SDLTest_AssertPass("Call to SDL_GetNumDisplayModes(%d)", i);
|
aschiffler@6921
|
363 |
SDLTest_AssertCheck(result >= 1, "Validate returned value from function; expected: >=1; got: %d", result);
|
aschiffler@6921
|
364 |
}
|
aschiffler@6921
|
365 |
|
aschiffler@6921
|
366 |
return TEST_COMPLETED;
|
aschiffler@6921
|
367 |
}
|
aschiffler@6921
|
368 |
|
aschiffler@6921
|
369 |
/**
|
aschiffler@6921
|
370 |
* @brief Tests negative call to SDL_GetNumDisplayModes function
|
aschiffler@6921
|
371 |
*/
|
aschiffler@6921
|
372 |
int
|
aschiffler@6921
|
373 |
video_getNumDisplayModesNegative(void *arg)
|
aschiffler@6921
|
374 |
{
|
aschiffler@6921
|
375 |
int result;
|
aschiffler@6921
|
376 |
int displayNum;
|
aschiffler@6921
|
377 |
int displayIndex;
|
aschiffler@6921
|
378 |
|
aschiffler@6921
|
379 |
/* Get number of displays */
|
aschiffler@6921
|
380 |
displayNum = SDL_GetNumVideoDisplays();
|
aschiffler@6921
|
381 |
SDLTest_AssertPass("Call to SDL_GetNumVideoDisplays");
|
aschiffler@6921
|
382 |
|
aschiffler@6921
|
383 |
/* Invalid boundary values */
|
aschiffler@6921
|
384 |
displayIndex = SDLTest_RandomSint32BoundaryValue(0, displayNum, SDL_FALSE);
|
aschiffler@6921
|
385 |
result = SDL_GetNumDisplayModes(displayIndex);
|
aschiffler@6921
|
386 |
SDLTest_AssertPass("Call to SDL_GetNumDisplayModes(%d=out-of-bounds/boundary)", displayIndex);
|
aschiffler@6921
|
387 |
SDLTest_AssertCheck(result < 0, "Validate returned value from function; expected: <0; got: %d", result);
|
aschiffler@6921
|
388 |
|
aschiffler@6921
|
389 |
/* Large (out-of-bounds) display index */
|
aschiffler@6921
|
390 |
displayIndex = SDLTest_RandomIntegerInRange(-2000, -1000);
|
aschiffler@6921
|
391 |
result = SDL_GetNumDisplayModes(displayIndex);
|
aschiffler@6921
|
392 |
SDLTest_AssertPass("Call to SDL_GetNumDisplayModes(%d=out-of-bounds/large negative)", displayIndex);
|
aschiffler@6921
|
393 |
SDLTest_AssertCheck(result < 0, "Validate returned value from function; expected: <0; got: %d", result);
|
aschiffler@6921
|
394 |
|
aschiffler@6921
|
395 |
displayIndex = SDLTest_RandomIntegerInRange(1000, 2000);
|
aschiffler@6921
|
396 |
result = SDL_GetNumDisplayModes(displayIndex);
|
aschiffler@6921
|
397 |
SDLTest_AssertPass("Call to SDL_GetNumDisplayModes(%d=out-of-bounds/large positive)", displayIndex);
|
aschiffler@6921
|
398 |
SDLTest_AssertCheck(result < 0, "Validate returned value from function; expected: <0; got: %d", result);
|
aschiffler@6921
|
399 |
|
aschiffler@6921
|
400 |
return TEST_COMPLETED;
|
aschiffler@6921
|
401 |
}
|
aschiffler@6921
|
402 |
|
aschiffler@6921
|
403 |
/**
|
aschiffler@6921
|
404 |
* @brief Tests the functionality of the SDL_GetClosestDisplayMode function against current resolution
|
aschiffler@6921
|
405 |
*/
|
aschiffler@6921
|
406 |
int
|
aschiffler@6921
|
407 |
video_getClosestDisplayModeCurrentResolution(void *arg)
|
aschiffler@6921
|
408 |
{
|
aschiffler@6921
|
409 |
int result;
|
aschiffler@6921
|
410 |
SDL_DisplayMode current;
|
aschiffler@6921
|
411 |
SDL_DisplayMode target;
|
aschiffler@6921
|
412 |
SDL_DisplayMode closest;
|
aschiffler@6921
|
413 |
SDL_DisplayMode* dResult;
|
aschiffler@6921
|
414 |
int displayNum;
|
aschiffler@6921
|
415 |
int i;
|
aschiffler@6921
|
416 |
int variation;
|
aschiffler@6921
|
417 |
|
aschiffler@6921
|
418 |
/* Get number of displays */
|
aschiffler@6921
|
419 |
displayNum = SDL_GetNumVideoDisplays();
|
aschiffler@6921
|
420 |
SDLTest_AssertPass("Call to SDL_GetNumVideoDisplays");
|
aschiffler@6921
|
421 |
|
aschiffler@6921
|
422 |
/* Make calls for each display */
|
aschiffler@6921
|
423 |
for (i=0; i<displayNum; i++) {
|
aschiffler@6921
|
424 |
SDLTest_Log("Testing against display: %d", i);
|
aschiffler@6921
|
425 |
|
aschiffler@6921
|
426 |
/* Get first display mode to get a sane resolution; this should always work */
|
aschiffler@6921
|
427 |
result = SDL_GetDisplayMode(i, 0, ¤t);
|
aschiffler@6921
|
428 |
SDLTest_AssertPass("Call to SDL_GetDisplayMode");
|
aschiffler@6921
|
429 |
SDLTest_AssertCheck(result == 0, "Verify return value, expected: 0, got: %d", result);
|
aschiffler@6921
|
430 |
if (result != 0) {
|
aschiffler@6921
|
431 |
return TEST_ABORTED;
|
aschiffler@6921
|
432 |
}
|
aschiffler@6921
|
433 |
|
aschiffler@6921
|
434 |
/* Set the desired resolution equals to current resolution */
|
aschiffler@6921
|
435 |
target.w = current.w;
|
aschiffler@6921
|
436 |
target.h = current.h;
|
aschiffler@6921
|
437 |
for (variation = 0; variation < 8; variation ++) {
|
aschiffler@6921
|
438 |
/* Vary constraints on other query parameters */
|
aschiffler@6921
|
439 |
target.format = (variation & 1) ? current.format : 0;
|
aschiffler@6921
|
440 |
target.refresh_rate = (variation & 2) ? current.refresh_rate : 0;
|
aschiffler@6921
|
441 |
target.driverdata = (variation & 4) ? current.driverdata : 0;
|
aschiffler@6921
|
442 |
|
aschiffler@6921
|
443 |
/* Make call */
|
aschiffler@6921
|
444 |
dResult = SDL_GetClosestDisplayMode(i, &target, &closest);
|
aschiffler@6921
|
445 |
SDLTest_AssertPass("Call to SDL_GetClosestDisplayMode(target=current/variation%d)", variation);
|
aschiffler@6921
|
446 |
SDLTest_AssertCheck(dResult != NULL, "Verify returned value is not NULL");
|
aschiffler@6921
|
447 |
|
aschiffler@6921
|
448 |
/* Check that one gets the current resolution back again */
|
aschiffler@6921
|
449 |
SDLTest_AssertCheck(closest.w == current.w, "Verify returned width matches current width; expected: %d, got: %d", current.w, closest.w);
|
aschiffler@6921
|
450 |
SDLTest_AssertCheck(closest.h == current.h, "Verify returned height matches current height; expected: %d, got: %d", current.h, closest.h);
|
aschiffler@6921
|
451 |
SDLTest_AssertCheck(closest.w == dResult->w, "Verify return value matches assigned value; expected: %d, got: %d", closest.w, dResult->w);
|
aschiffler@6921
|
452 |
SDLTest_AssertCheck(closest.h == dResult->h, "Verify return value matches assigned value; expected: %d, got: %d", closest.h, dResult->h);
|
aschiffler@6921
|
453 |
}
|
aschiffler@6921
|
454 |
}
|
aschiffler@6921
|
455 |
|
aschiffler@6921
|
456 |
return TEST_COMPLETED;
|
aschiffler@6921
|
457 |
}
|
aschiffler@6921
|
458 |
|
aschiffler@6921
|
459 |
/**
|
aschiffler@6921
|
460 |
* @brief Tests the functionality of the SDL_GetClosestDisplayMode function against random resolution
|
aschiffler@6921
|
461 |
*/
|
aschiffler@6921
|
462 |
int
|
aschiffler@6921
|
463 |
video_getClosestDisplayModeRandomResolution(void *arg)
|
aschiffler@6921
|
464 |
{
|
aschiffler@6921
|
465 |
SDL_DisplayMode target;
|
aschiffler@6921
|
466 |
SDL_DisplayMode closest;
|
aschiffler@6921
|
467 |
SDL_DisplayMode* dResult;
|
aschiffler@6921
|
468 |
int displayNum;
|
aschiffler@6921
|
469 |
int i;
|
aschiffler@6921
|
470 |
int variation;
|
aschiffler@6921
|
471 |
|
aschiffler@6921
|
472 |
/* Get number of displays */
|
aschiffler@6921
|
473 |
displayNum = SDL_GetNumVideoDisplays();
|
aschiffler@6921
|
474 |
SDLTest_AssertPass("Call to SDL_GetNumVideoDisplays");
|
aschiffler@6921
|
475 |
|
aschiffler@6921
|
476 |
/* Make calls for each display */
|
aschiffler@6921
|
477 |
for (i=0; i<displayNum; i++) {
|
aschiffler@6921
|
478 |
SDLTest_Log("Testing against display: %d", i);
|
aschiffler@6921
|
479 |
|
aschiffler@6921
|
480 |
for (variation = 0; variation < 16; variation ++) {
|
aschiffler@6921
|
481 |
|
aschiffler@6921
|
482 |
/* Set random constraints */
|
aschiffler@6921
|
483 |
target.w = (variation & 1) ? SDLTest_RandomIntegerInRange(1, 4096) : 0;
|
aschiffler@6921
|
484 |
target.h = (variation & 2) ? SDLTest_RandomIntegerInRange(1, 4096) : 0;
|
aschiffler@6921
|
485 |
target.format = (variation & 4) ? SDLTest_RandomIntegerInRange(1, 10) : 0;
|
aschiffler@6921
|
486 |
target.refresh_rate = (variation & 8) ? SDLTest_RandomIntegerInRange(25, 120) : 0;
|
aschiffler@6921
|
487 |
target.driverdata = 0;
|
aschiffler@6921
|
488 |
|
aschiffler@6921
|
489 |
/* Make call; may or may not find anything, so don't validate any further */
|
aschiffler@6921
|
490 |
dResult = SDL_GetClosestDisplayMode(i, &target, &closest);
|
aschiffler@6921
|
491 |
SDLTest_AssertPass("Call to SDL_GetClosestDisplayMode(target=random/variation%d)", variation);
|
aschiffler@6921
|
492 |
}
|
aschiffler@6921
|
493 |
}
|
aschiffler@6921
|
494 |
|
aschiffler@6921
|
495 |
return TEST_COMPLETED;
|
aschiffler@6921
|
496 |
}
|
aschiffler@6921
|
497 |
|
aschiffler@6921
|
498 |
/**
|
aschiffler@6921
|
499 |
* @brief Tests call to SDL_GetWindowBrightness
|
aschiffler@6921
|
500 |
*/
|
aschiffler@6921
|
501 |
int
|
aschiffler@6921
|
502 |
video_getWindowBrightness(void *arg)
|
aschiffler@6921
|
503 |
{
|
aschiffler@6921
|
504 |
SDL_Window* window;
|
aschiffler@6921
|
505 |
const char* title = "video_getWindowBrightness Test Window";
|
aschiffler@6921
|
506 |
float result;
|
aschiffler@6921
|
507 |
|
aschiffler@6921
|
508 |
/* Call against new test window */
|
aschiffler@6921
|
509 |
window = _createVideoSuiteTestWindow(title);
|
aschiffler@6921
|
510 |
if (window != NULL) {
|
aschiffler@6921
|
511 |
result = SDL_GetWindowBrightness(window);
|
aschiffler@6921
|
512 |
SDLTest_AssertPass("Call to SDL_GetWindowBrightness");
|
aschiffler@6921
|
513 |
SDLTest_AssertCheck(result >= 0.0 && result <= 1.0, "Validate range of result value; expected: [0.0, 1.0], got: %f", result);
|
aschiffler@6921
|
514 |
}
|
aschiffler@6921
|
515 |
|
aschiffler@6921
|
516 |
/* Clean up */
|
aschiffler@6921
|
517 |
_destroyVideoSuiteTestWindow(window);
|
aschiffler@6921
|
518 |
|
aschiffler@6891
|
519 |
return TEST_COMPLETED;
|
aschiffler@6891
|
520 |
}
|
aschiffler@6891
|
521 |
|
aschiffler@6800
|
522 |
/* ================= Test References ================== */
|
aschiffler@6800
|
523 |
|
aschiffler@6800
|
524 |
/* Video test cases */
|
aschiffler@6800
|
525 |
static const SDLTest_TestCaseReference videoTest1 =
|
aschiffler@6800
|
526 |
{ (SDLTest_TestCaseFp)video_enableDisableScreensaver, "video_enableDisableScreensaver", "Enable and disable screenaver while checking state", TEST_ENABLED };
|
aschiffler@6800
|
527 |
|
aschiffler@6891
|
528 |
static const SDLTest_TestCaseReference videoTest2 =
|
aschiffler@6891
|
529 |
{ (SDLTest_TestCaseFp)video_createWindowVariousPositions, "video_createWindowVariousPositions", "Create windows at various locations", TEST_ENABLED };
|
aschiffler@6891
|
530 |
|
aschiffler@6891
|
531 |
static const SDLTest_TestCaseReference videoTest3 =
|
aschiffler@6891
|
532 |
{ (SDLTest_TestCaseFp)video_createWindowVariousSizes, "video_createWindowVariousSizes", "Create windows with various sizes", TEST_ENABLED };
|
aschiffler@6891
|
533 |
|
aschiffler@6891
|
534 |
static const SDLTest_TestCaseReference videoTest4 =
|
aschiffler@6891
|
535 |
{ (SDLTest_TestCaseFp)video_createWindowVariousFlags, "video_createWindowVariousFlags", "Create windows using various flags", TEST_ENABLED };
|
aschiffler@6891
|
536 |
|
aschiffler@6891
|
537 |
static const SDLTest_TestCaseReference videoTest5 =
|
aschiffler@6921
|
538 |
{ (SDLTest_TestCaseFp)video_getWindowFlags, "video_getWindowFlags", "Get window flags set during SDL_CreateWindow", TEST_ENABLED };
|
aschiffler@6921
|
539 |
|
aschiffler@6921
|
540 |
static const SDLTest_TestCaseReference videoTest6 =
|
aschiffler@6921
|
541 |
{ (SDLTest_TestCaseFp)video_getNumDisplayModes, "video_getNumDisplayModes", "Use SDL_GetNumDisplayModes function to get number of display modes", TEST_ENABLED };
|
aschiffler@6921
|
542 |
|
aschiffler@6921
|
543 |
static const SDLTest_TestCaseReference videoTest7 =
|
aschiffler@6921
|
544 |
{ (SDLTest_TestCaseFp)video_getNumDisplayModesNegative, "video_getNumDisplayModesNegative", "Negative tests for SDL_GetNumDisplayModes", TEST_ENABLED };
|
aschiffler@6921
|
545 |
|
aschiffler@6921
|
546 |
static const SDLTest_TestCaseReference videoTest8 =
|
aschiffler@6921
|
547 |
{ (SDLTest_TestCaseFp)video_getClosestDisplayModeCurrentResolution, "video_getClosestDisplayModeCurrentResolution", "Use function to get closes match to requested display mode for current resolution", TEST_ENABLED };
|
aschiffler@6921
|
548 |
|
aschiffler@6921
|
549 |
static const SDLTest_TestCaseReference videoTest9 =
|
aschiffler@6921
|
550 |
{ (SDLTest_TestCaseFp)video_getClosestDisplayModeRandomResolution, "video_getClosestDisplayModeRandomResolution", "Use function to get closes match to requested display mode for random resolution", TEST_ENABLED };
|
aschiffler@6921
|
551 |
|
aschiffler@6921
|
552 |
static const SDLTest_TestCaseReference videoTest10 =
|
aschiffler@6921
|
553 |
{ (SDLTest_TestCaseFp)video_getWindowBrightness, "video_getWindowBrightness", "Get window brightness", TEST_ENABLED };
|
aschiffler@6891
|
554 |
|
aschiffler@6800
|
555 |
/* Sequence of Video test cases */
|
aschiffler@6800
|
556 |
static const SDLTest_TestCaseReference *videoTests[] = {
|
aschiffler@6921
|
557 |
&videoTest1, &videoTest2, &videoTest3, &videoTest4, &videoTest5, &videoTest6,
|
aschiffler@6921
|
558 |
&videoTest7, &videoTest8, &videoTest9, &videoTest10, NULL
|
aschiffler@6800
|
559 |
};
|
aschiffler@6800
|
560 |
|
aschiffler@6800
|
561 |
/* Video test suite (global) */
|
aschiffler@6800
|
562 |
SDLTest_TestSuiteReference videoTestSuite = {
|
aschiffler@6800
|
563 |
"Video",
|
aschiffler@6800
|
564 |
NULL,
|
aschiffler@6800
|
565 |
videoTests,
|
aschiffler@6800
|
566 |
NULL
|
aschiffler@6800
|
567 |
};
|