1/**
2 * Hints test suite
3 */
4
5#include <stdio.h>
6
7#include "SDL.h"
8#include "SDL_test.h"
9
10
11const int _numHintsEnum = 25;
12char* _HintsEnum[] =
13 {
14 SDL_HINT_ACCELEROMETER_AS_JOYSTICK,
15 SDL_HINT_FRAMEBUFFER_ACCELERATION,
16 SDL_HINT_GAMECONTROLLERCONFIG,
17 SDL_HINT_GRAB_KEYBOARD,
18 SDL_HINT_IDLE_TIMER_DISABLED,
19 SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS,
20 SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK,
21 SDL_HINT_MOUSE_RELATIVE_MODE_WARP,
22 SDL_HINT_ORIENTATIONS,
23 SDL_HINT_RENDER_DIRECT3D_THREADSAFE,
24 SDL_HINT_RENDER_DRIVER,
25 SDL_HINT_RENDER_OPENGL_SHADERS,
26 SDL_HINT_RENDER_SCALE_QUALITY,
27 SDL_HINT_RENDER_VSYNC,
28 SDL_HINT_TIMER_RESOLUTION,
29 SDL_HINT_VIDEO_ALLOW_SCREENSAVER,
30 SDL_HINT_VIDEO_HIGHDPI_DISABLED,
31 SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES,
32 SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS,
33 SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT,
34 SDL_HINT_VIDEO_WIN_D3DCOMPILER,
35 SDL_HINT_VIDEO_X11_XINERAMA,
36 SDL_HINT_VIDEO_X11_XRANDR,
37 SDL_HINT_VIDEO_X11_XVIDMODE,
38 SDL_HINT_XINPUT_ENABLED,
39 };
40char* _HintsVerbose[] =
41 {
42 "SDL_HINT_ACCELEROMETER_AS_JOYSTICK",
43 "SDL_HINT_FRAMEBUFFER_ACCELERATION",
44 "SDL_HINT_GAMECONTROLLERCONFIG",
45 "SDL_HINT_GRAB_KEYBOARD",
46 "SDL_HINT_IDLE_TIMER_DISABLED",
47 "SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS",
48 "SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK",
49 "SDL_HINT_MOUSE_RELATIVE_MODE_WARP",
50 "SDL_HINT_ORIENTATIONS",
51 "SDL_HINT_RENDER_DIRECT3D_THREADSAFE",
52 "SDL_HINT_RENDER_DRIVER",
53 "SDL_HINT_RENDER_OPENGL_SHADERS",
54 "SDL_HINT_RENDER_SCALE_QUALITY",
55 "SDL_HINT_RENDER_VSYNC",
56 "SDL_HINT_TIMER_RESOLUTION",
57 "SDL_HINT_VIDEO_ALLOW_SCREENSAVER",
58 "SDL_HINT_VIDEO_HIGHDPI_DISABLED",
59 "SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES",
60 "SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS",
61 "SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT",
62 "SDL_HINT_VIDEO_WIN_D3DCOMPILER",
63 "SDL_HINT_VIDEO_X11_XINERAMA",
64 "SDL_HINT_VIDEO_X11_XRANDR",
65 "SDL_HINT_VIDEO_X11_XVIDMODE",
66 "SDL_HINT_XINPUT_ENABLED"
67 };
68
69
70/* Test case functions */
71
72/**
73 * @brief Call to SDL_GetHint
74 */
75int
76hints_getHint(void *arg)
77{
78 char *result1;
79 char *result2;
80 int i;
81
82 for (i=0; i<_numHintsEnum; i++) {
83 result1 = (char *)SDL_GetHint((char*)_HintsEnum[i]);
84 SDLTest_AssertPass("Call to SDL_GetHint(%s) - using define definition", (char*)_HintsEnum[i]);
85 result2 = (char *)SDL_GetHint((char *)_HintsVerbose[i]);
86 SDLTest_AssertPass("Call to SDL_GetHint(%s) - using string definition", (char*)_HintsVerbose[i]);
87 SDLTest_AssertCheck(
88 (result1 == NULL && result2 == NULL) || (SDL_strcmp(result1, result2) == 0),
89 "Verify returned values are equal; got: result1='%s' result2='%s",
90 (result1 == NULL) ? "null" : result1,
91 (result2 == NULL) ? "null" : result2);
92 }
93
94 return TEST_COMPLETED;
95}
96
97/**
98 * @brief Call to SDL_SetHint
99 */
100int
101hints_setHint(void *arg)
102{
103 char *originalValue;
104 char *value;
105 char *testValue;
106 SDL_bool result;
107 int i, j;
108
109 /* Create random values to set */
110 value = SDLTest_RandomAsciiStringOfSize(10);
111
112 for (i=0; i<_numHintsEnum; i++) {
113 /* Capture current value */
114 originalValue = (char *)SDL_GetHint((char*)_HintsEnum[i]);
115 SDLTest_AssertPass("Call to SDL_GetHint(%s)", (char*)_HintsEnum[i]);
116
117 /* Set value (twice) */
118 for (j=1; j<=2; j++) {
119 result = SDL_SetHint((char*)_HintsEnum[i], value);
120 SDLTest_AssertPass("Call to SDL_SetHint(%s, %s) (iteration %i)", (char*)_HintsEnum[i], value, j);
121 SDLTest_AssertCheck(
122 result == SDL_TRUE || result == SDL_FALSE,
123 "Verify valid result was returned, got: %i",
124 (int)result);
125 testValue = (char *)SDL_GetHint((char*)_HintsEnum[i]);
126 SDLTest_AssertPass("Call to SDL_GetHint(%s) - using string definition", (char*)_HintsVerbose[i]);
127 SDLTest_AssertCheck(
128 (SDL_strcmp(value, testValue) == 0),
129 "Verify returned value equals set value; got: testValue='%s' value='%s",
130 (testValue == NULL) ? "null" : testValue,
131 value);
132 }
133
134 /* Reset original value */
135 result = SDL_SetHint((char*)_HintsEnum[i], originalValue);
136 SDLTest_AssertPass("Call to SDL_SetHint(%s, originalValue)", (char*)_HintsEnum[i]);
137 SDLTest_AssertCheck(
138 result == SDL_TRUE || result == SDL_FALSE,
139 "Verify valid result was returned, got: %i",
140 (int)result);
141 }
142
143 SDL_free(value);
144
145 return TEST_COMPLETED;
146}
147
148/* ================= Test References ================== */
149
150/* Hints test cases */
151static const SDLTest_TestCaseReference hintsTest1 =
152 { (SDLTest_TestCaseFp)hints_getHint, "hints_getHint", "Call to SDL_GetHint", TEST_ENABLED };
153
154static const SDLTest_TestCaseReference hintsTest2 =
155 { (SDLTest_TestCaseFp)hints_setHint, "hints_setHint", "Call to SDL_SetHint", TEST_ENABLED };
156
157/* Sequence of Hints test cases */
158static const SDLTest_TestCaseReference *hintsTests[] = {
159 &hintsTest1, &hintsTest2, NULL
160};
161
162/* Hints test suite (global) */
163SDLTest_TestSuiteReference hintsTestSuite = {
164 "Hints",
165 NULL,
166 hintsTests,
167 NULL
168};
169