1 | /** |
2 | * Hints test suite |
3 | */ |
4 | |
5 | #include <stdio.h> |
6 | |
7 | #include "SDL.h" |
8 | #include "SDL_test.h" |
9 | |
10 | |
11 | const int _numHintsEnum = 25; |
12 | char* _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 | }; |
40 | char* _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 | */ |
75 | int |
76 | hints_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 | */ |
100 | int |
101 | hints_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 */ |
151 | static const SDLTest_TestCaseReference hintsTest1 = |
152 | { (SDLTest_TestCaseFp)hints_getHint, "hints_getHint" , "Call to SDL_GetHint" , TEST_ENABLED }; |
153 | |
154 | static const SDLTest_TestCaseReference hintsTest2 = |
155 | { (SDLTest_TestCaseFp)hints_setHint, "hints_setHint" , "Call to SDL_SetHint" , TEST_ENABLED }; |
156 | |
157 | /* Sequence of Hints test cases */ |
158 | static const SDLTest_TestCaseReference *hintsTests[] = { |
159 | &hintsTest1, &hintsTest2, NULL |
160 | }; |
161 | |
162 | /* Hints test suite (global) */ |
163 | SDLTest_TestSuiteReference hintsTestSuite = { |
164 | "Hints" , |
165 | NULL, |
166 | hintsTests, |
167 | NULL |
168 | }; |
169 | |