Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Add input validation to SDL_getenv/SDL_setenv; update Stdlib testsuit…
…e; add Hints testsuite
- Loading branch information
Showing
with
351 additions
and 5 deletions.
- +4 −0 VisualC/tests/testautomation/testautomation_VS2008.vcproj
- +1 −0 VisualC/tests/testautomation/testautomation_vs2010.vcxproj
- +1 −0 VisualC/tests/testautomation/testautomation_vs2012.vcxproj
- +1 −0 VisualC/tests/testautomation/testautomation_vs2013.vcxproj
- +33 −2 src/stdlib/SDL_getenv.c
- +2 −1 test/Makefile.in
- +168 −0 test/testautomation_hints.c
- +139 −2 test/testautomation_stdlib.c
- +2 −0 test/testautomation_suites.h
@@ -0,0 +1,168 @@ | ||
/** | ||
* 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 | ||
}; |
Oops, something went wrong.