You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
5.0 KiB
168 lines
5.0 KiB
/** |
|
* Hints test suite |
|
*/ |
|
|
|
#include <stdio.h> |
|
|
|
#include "SDL.h" |
|
#include "SDL_test.h" |
|
|
|
|
|
const int _numHintsEnum = 25; |
|
char* _HintsEnum[] = |
|
{ |
|
SDL_HINT_ACCELEROMETER_AS_JOYSTICK, |
|
SDL_HINT_FRAMEBUFFER_ACCELERATION, |
|
SDL_HINT_GAMECONTROLLERCONFIG, |
|
SDL_HINT_GRAB_KEYBOARD, |
|
SDL_HINT_IDLE_TIMER_DISABLED, |
|
SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, |
|
SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK, |
|
SDL_HINT_MOUSE_RELATIVE_MODE_WARP, |
|
SDL_HINT_ORIENTATIONS, |
|
SDL_HINT_RENDER_DIRECT3D_THREADSAFE, |
|
SDL_HINT_RENDER_DRIVER, |
|
SDL_HINT_RENDER_OPENGL_SHADERS, |
|
SDL_HINT_RENDER_SCALE_QUALITY, |
|
SDL_HINT_RENDER_VSYNC, |
|
SDL_HINT_TIMER_RESOLUTION, |
|
SDL_HINT_VIDEO_ALLOW_SCREENSAVER, |
|
SDL_HINT_VIDEO_HIGHDPI_DISABLED, |
|
SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES, |
|
SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, |
|
SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT, |
|
SDL_HINT_VIDEO_WIN_D3DCOMPILER, |
|
SDL_HINT_VIDEO_X11_XINERAMA, |
|
SDL_HINT_VIDEO_X11_XRANDR, |
|
SDL_HINT_VIDEO_X11_XVIDMODE, |
|
SDL_HINT_XINPUT_ENABLED, |
|
}; |
|
char* _HintsVerbose[] = |
|
{ |
|
"SDL_HINT_ACCELEROMETER_AS_JOYSTICK", |
|
"SDL_HINT_FRAMEBUFFER_ACCELERATION", |
|
"SDL_HINT_GAMECONTROLLERCONFIG", |
|
"SDL_HINT_GRAB_KEYBOARD", |
|
"SDL_HINT_IDLE_TIMER_DISABLED", |
|
"SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS", |
|
"SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK", |
|
"SDL_HINT_MOUSE_RELATIVE_MODE_WARP", |
|
"SDL_HINT_ORIENTATIONS", |
|
"SDL_HINT_RENDER_DIRECT3D_THREADSAFE", |
|
"SDL_HINT_RENDER_DRIVER", |
|
"SDL_HINT_RENDER_OPENGL_SHADERS", |
|
"SDL_HINT_RENDER_SCALE_QUALITY", |
|
"SDL_HINT_RENDER_VSYNC", |
|
"SDL_HINT_TIMER_RESOLUTION", |
|
"SDL_HINT_VIDEO_ALLOW_SCREENSAVER", |
|
"SDL_HINT_VIDEO_HIGHDPI_DISABLED", |
|
"SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES", |
|
"SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS", |
|
"SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT", |
|
"SDL_HINT_VIDEO_WIN_D3DCOMPILER", |
|
"SDL_HINT_VIDEO_X11_XINERAMA", |
|
"SDL_HINT_VIDEO_X11_XRANDR", |
|
"SDL_HINT_VIDEO_X11_XVIDMODE", |
|
"SDL_HINT_XINPUT_ENABLED" |
|
}; |
|
|
|
|
|
/* Test case functions */ |
|
|
|
/** |
|
* @brief Call to SDL_GetHint |
|
*/ |
|
int |
|
hints_getHint(void *arg) |
|
{ |
|
char *result1; |
|
char *result2; |
|
int i; |
|
|
|
for (i=0; i<_numHintsEnum; i++) { |
|
result1 = (char *)SDL_GetHint((char*)_HintsEnum[i]); |
|
SDLTest_AssertPass("Call to SDL_GetHint(%s) - using define definition", (char*)_HintsEnum[i]); |
|
result2 = (char *)SDL_GetHint((char *)_HintsVerbose[i]); |
|
SDLTest_AssertPass("Call to SDL_GetHint(%s) - using string definition", (char*)_HintsVerbose[i]); |
|
SDLTest_AssertCheck( |
|
(result1 == NULL && result2 == NULL) || (SDL_strcmp(result1, result2) == 0), |
|
"Verify returned values are equal; got: result1='%s' result2='%s", |
|
(result1 == NULL) ? "null" : result1, |
|
(result2 == NULL) ? "null" : result2); |
|
} |
|
|
|
return TEST_COMPLETED; |
|
} |
|
|
|
/** |
|
* @brief Call to SDL_SetHint |
|
*/ |
|
int |
|
hints_setHint(void *arg) |
|
{ |
|
char *originalValue; |
|
char *value; |
|
char *testValue; |
|
SDL_bool result; |
|
int i, j; |
|
|
|
/* Create random values to set */ |
|
value = SDLTest_RandomAsciiStringOfSize(10); |
|
|
|
for (i=0; i<_numHintsEnum; i++) { |
|
/* Capture current value */ |
|
originalValue = (char *)SDL_GetHint((char*)_HintsEnum[i]); |
|
SDLTest_AssertPass("Call to SDL_GetHint(%s)", (char*)_HintsEnum[i]); |
|
|
|
/* Set value (twice) */ |
|
for (j=1; j<=2; j++) { |
|
result = SDL_SetHint((char*)_HintsEnum[i], value); |
|
SDLTest_AssertPass("Call to SDL_SetHint(%s, %s) (iteration %i)", (char*)_HintsEnum[i], value, j); |
|
SDLTest_AssertCheck( |
|
result == SDL_TRUE || result == SDL_FALSE, |
|
"Verify valid result was returned, got: %i", |
|
(int)result); |
|
testValue = (char *)SDL_GetHint((char*)_HintsEnum[i]); |
|
SDLTest_AssertPass("Call to SDL_GetHint(%s) - using string definition", (char*)_HintsVerbose[i]); |
|
SDLTest_AssertCheck( |
|
(SDL_strcmp(value, testValue) == 0), |
|
"Verify returned value equals set value; got: testValue='%s' value='%s", |
|
(testValue == NULL) ? "null" : testValue, |
|
value); |
|
} |
|
|
|
/* Reset original value */ |
|
result = SDL_SetHint((char*)_HintsEnum[i], originalValue); |
|
SDLTest_AssertPass("Call to SDL_SetHint(%s, originalValue)", (char*)_HintsEnum[i]); |
|
SDLTest_AssertCheck( |
|
result == SDL_TRUE || result == SDL_FALSE, |
|
"Verify valid result was returned, got: %i", |
|
(int)result); |
|
} |
|
|
|
SDL_free(value); |
|
|
|
return TEST_COMPLETED; |
|
} |
|
|
|
/* ================= Test References ================== */ |
|
|
|
/* Hints test cases */ |
|
static const SDLTest_TestCaseReference hintsTest1 = |
|
{ (SDLTest_TestCaseFp)hints_getHint, "hints_getHint", "Call to SDL_GetHint", TEST_ENABLED }; |
|
|
|
static const SDLTest_TestCaseReference hintsTest2 = |
|
{ (SDLTest_TestCaseFp)hints_setHint, "hints_setHint", "Call to SDL_SetHint", TEST_ENABLED }; |
|
|
|
/* Sequence of Hints test cases */ |
|
static const SDLTest_TestCaseReference *hintsTests[] = { |
|
&hintsTest1, &hintsTest2, NULL |
|
}; |
|
|
|
/* Hints test suite (global) */ |
|
SDLTest_TestSuiteReference hintsTestSuite = { |
|
"Hints", |
|
NULL, |
|
hintsTests, |
|
NULL |
|
};
|
|
|