123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- /**
- * Hints test suite
- */
- #include <stdio.h>
- #include "SDL.h"
- #include "SDL_test.h"
- const 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_XRANDR,
- SDL_HINT_XINPUT_ENABLED,
- };
- const char *_HintsVerbose[] = {
- "SDL_ACCELEROMETER_AS_JOYSTICK",
- "SDL_FRAMEBUFFER_ACCELERATION",
- "SDL_GAMECONTROLLERCONFIG",
- "SDL_GRAB_KEYBOARD",
- "SDL_IDLE_TIMER_DISABLED",
- "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS",
- "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK",
- "SDL_MOUSE_RELATIVE_MODE_WARP",
- "SDL_ORIENTATIONS",
- "SDL_RENDER_DIRECT3D_THREADSAFE",
- "SDL_RENDER_DRIVER",
- "SDL_RENDER_OPENGL_SHADERS",
- "SDL_RENDER_SCALE_QUALITY",
- "SDL_RENDER_VSYNC",
- "SDL_TIMER_RESOLUTION",
- "SDL_VIDEO_ALLOW_SCREENSAVER",
- "SDL_VIDEO_HIGHDPI_DISABLED",
- "SDL_VIDEO_MAC_FULLSCREEN_SPACES",
- "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS",
- "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT",
- "SDL_VIDEO_WIN_D3DCOMPILER",
- "SDL_VIDEO_X11_XRANDR",
- "SDL_XINPUT_ENABLED"
- };
- SDL_COMPILE_TIME_ASSERT(HintsEnum, SDL_arraysize(_HintsEnum) == SDL_arraysize(_HintsVerbose));
- const int _numHintsEnum = SDL_arraysize(_HintsEnum);
- /* Test case functions */
- /**
- * @brief Call to SDL_GetHint
- */
- int hints_getHint(void *arg)
- {
- const char *result1;
- const char *result2;
- int i;
- for (i = 0; i < _numHintsEnum; i++) {
- result1 = SDL_GetHint(_HintsEnum[i]);
- SDLTest_AssertPass("Call to SDL_GetHint(%s) - using define definition", (char *)_HintsEnum[i]);
- result2 = SDL_GetHint(_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;
- }
- static void SDLCALL hints_testHintChanged(void *userdata, const char *name, const char *oldValue, const char *hint)
- {
- *(char **)userdata = hint ? SDL_strdup(hint) : NULL;
- }
- /**
- * @brief Call to SDL_SetHint
- */
- int hints_setHint(void *arg)
- {
- const char *testHint = "SDL_AUTOMATED_TEST_HINT";
- const char *originalValue;
- char *value;
- const char *testValue;
- char *callbackValue;
- 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 = SDL_GetHint(_HintsEnum[i]);
- SDLTest_AssertPass("Call to SDL_GetHint(%s)", _HintsEnum[i]);
- /* Copy the original value, since it will be freed when we set it again */
- originalValue = originalValue ? SDL_strdup(originalValue) : NULL;
- /* Set value (twice) */
- for (j = 1; j <= 2; j++) {
- result = SDL_SetHint(_HintsEnum[i], value);
- SDLTest_AssertPass("Call to SDL_SetHint(%s, %s) (iteration %i)", _HintsEnum[i], value, j);
- SDLTest_AssertCheck(
- result == SDL_TRUE || result == SDL_FALSE,
- "Verify valid result was returned, got: %i",
- (int)result);
- testValue = SDL_GetHint(_HintsEnum[i]);
- SDLTest_AssertPass("Call to SDL_GetHint(%s) - using string definition", _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(_HintsEnum[i], originalValue);
- SDLTest_AssertPass("Call to SDL_SetHint(%s, originalValue)", _HintsEnum[i]);
- SDLTest_AssertCheck(
- result == SDL_TRUE || result == SDL_FALSE,
- "Verify valid result was returned, got: %i",
- (int)result);
- SDL_free((void *)originalValue);
- }
- SDL_free(value);
- /* Set default value in environment */
- SDL_setenv(testHint, "original", 1);
- SDLTest_AssertPass("Call to SDL_GetHint() after saving and restoring hint");
- originalValue = SDL_GetHint(testHint);
- value = (originalValue == NULL) ? NULL : SDL_strdup(originalValue);
- SDL_SetHint(testHint, "temp");
- SDL_SetHint(testHint, value);
- SDL_free(value);
- testValue = SDL_GetHint(testHint);
- SDLTest_AssertCheck(
- testValue && SDL_strcmp(testValue, "original") == 0,
- "testValue = %s, expected \"original\"",
- testValue);
- SDLTest_AssertPass("Call to SDL_SetHintWithPriority(NULL, SDL_HINT_DEFAULT)");
- SDL_SetHintWithPriority(testHint, NULL, SDL_HINT_DEFAULT);
- testValue = SDL_GetHint(testHint);
- SDLTest_AssertCheck(
- testValue && SDL_strcmp(testValue, "original") == 0,
- "testValue = %s, expected \"original\"",
- testValue);
- SDLTest_AssertPass("Call to SDL_SetHintWithPriority(\"temp\", SDL_HINT_OVERRIDE)");
- SDL_SetHintWithPriority(testHint, "temp", SDL_HINT_OVERRIDE);
- testValue = SDL_GetHint(testHint);
- SDLTest_AssertCheck(
- testValue && SDL_strcmp(testValue, "temp") == 0,
- "testValue = %s, expected \"temp\"",
- testValue);
- SDLTest_AssertPass("Call to SDL_SetHintWithPriority(NULL, SDL_HINT_OVERRIDE)");
- SDL_SetHintWithPriority(testHint, NULL, SDL_HINT_OVERRIDE);
- testValue = SDL_GetHint(testHint);
- SDLTest_AssertCheck(
- testValue == NULL,
- "testValue = %s, expected NULL",
- testValue);
- SDLTest_AssertPass("Call to SDL_ResetHint()");
- SDL_ResetHint(testHint);
- testValue = SDL_GetHint(testHint);
- SDLTest_AssertCheck(
- testValue && SDL_strcmp(testValue, "original") == 0,
- "testValue = %s, expected \"original\"",
- testValue);
- /* Make sure callback functionality works past a reset */
- SDLTest_AssertPass("Call to SDL_AddHintCallback()");
- callbackValue = NULL;
- SDL_AddHintCallback(testHint, hints_testHintChanged, &callbackValue);
- SDLTest_AssertCheck(
- callbackValue && SDL_strcmp(callbackValue, "original") == 0,
- "callbackValue = %s, expected \"original\"",
- callbackValue);
- SDL_free(callbackValue);
- SDLTest_AssertPass("Call to SDL_SetHintWithPriority(\"temp\", SDL_HINT_OVERRIDE), using callback");
- callbackValue = NULL;
- SDL_SetHintWithPriority(testHint, "temp", SDL_HINT_OVERRIDE);
- SDLTest_AssertCheck(
- callbackValue && SDL_strcmp(callbackValue, "temp") == 0,
- "callbackValue = %s, expected \"temp\"",
- callbackValue);
- SDL_free(callbackValue);
- SDLTest_AssertPass("Call to SDL_ResetHint(), using callback");
- callbackValue = NULL;
- SDL_ResetHint(testHint);
- SDLTest_AssertCheck(
- callbackValue && SDL_strcmp(callbackValue, "original") == 0,
- "callbackValue = %s, expected \"original\"",
- callbackValue);
- SDLTest_AssertPass("Call to SDL_SetHintWithPriority(\"temp\", SDL_HINT_OVERRIDE), using callback after reset");
- callbackValue = NULL;
- SDL_SetHintWithPriority(testHint, "temp", SDL_HINT_OVERRIDE);
- SDLTest_AssertCheck(
- callbackValue && SDL_strcmp(callbackValue, "temp") == 0,
- "callbackValue = %s, expected \"temp\"",
- callbackValue);
- SDL_free(callbackValue);
- SDLTest_AssertPass("Call to SDL_ResetHint(), after clearing callback");
- callbackValue = NULL;
- SDL_DelHintCallback(testHint, hints_testHintChanged, &callbackValue);
- SDL_ResetHint(testHint);
- SDLTest_AssertCheck(
- callbackValue == NULL,
- "callbackValue = %s, expected \"(null)\"",
- callbackValue);
- 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
- };
|