sdl

FORK: Simple Directmedia Layer
git clone https://git.neptards.moe/neptards/sdl.git
Log | Files | Refs

testautomation_hints.c (5125B)


      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 };