cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

testautomation_mouse.c (19762B)


      1/**
      2 * Mouse test suite
      3 */
      4
      5#include <stdio.h>
      6#include <limits.h>
      7
      8#include "SDL.h"
      9#include "SDL_test.h"
     10
     11/* ================= Test Case Implementation ================== */
     12
     13/* Test case functions */
     14
     15/* Helper to evaluate state returned from SDL_GetMouseState */
     16int _mouseStateCheck(Uint32 state)
     17{
     18  return (state == 0) ||
     19         (state == SDL_BUTTON(SDL_BUTTON_LEFT)) ||
     20         (state == SDL_BUTTON(SDL_BUTTON_MIDDLE)) ||
     21         (state == SDL_BUTTON(SDL_BUTTON_RIGHT)) ||
     22         (state == SDL_BUTTON(SDL_BUTTON_X1)) ||
     23         (state == SDL_BUTTON(SDL_BUTTON_X2));
     24}
     25
     26/**
     27 * @brief Check call to SDL_GetMouseState
     28 *
     29 */
     30int
     31mouse_getMouseState(void *arg)
     32{
     33   int x;
     34   int y;
     35   Uint32 state;
     36
     37   /* Pump some events to update mouse state */
     38   SDL_PumpEvents();
     39   SDLTest_AssertPass("Call to SDL_PumpEvents()");
     40
     41   /* Case where x, y pointer is NULL */
     42   state = SDL_GetMouseState(NULL, NULL);
     43   SDLTest_AssertPass("Call to SDL_GetMouseState(NULL, NULL)");
     44   SDLTest_AssertCheck(_mouseStateCheck(state), "Validate state returned from function, got: %i", state);
     45
     46   /* Case where x pointer is not NULL */
     47   x = INT_MIN;
     48   state = SDL_GetMouseState(&x, NULL);
     49   SDLTest_AssertPass("Call to SDL_GetMouseState(&x, NULL)");
     50   SDLTest_AssertCheck(x > INT_MIN, "Validate that value of x is > INT_MIN, got: %i", x);
     51   SDLTest_AssertCheck(_mouseStateCheck(state), "Validate state returned from function, got: %i", state);
     52
     53   /* Case where y pointer is not NULL */
     54   y = INT_MIN;
     55   state = SDL_GetMouseState(NULL, &y);
     56   SDLTest_AssertPass("Call to SDL_GetMouseState(NULL, &y)");
     57   SDLTest_AssertCheck(y > INT_MIN, "Validate that value of y is > INT_MIN, got: %i", y);
     58   SDLTest_AssertCheck(_mouseStateCheck(state), "Validate state returned from function, got: %i", state);
     59
     60   /* Case where x and y pointer is not NULL */
     61   x = INT_MIN;
     62   y = INT_MIN;
     63   state = SDL_GetMouseState(&x, &y);
     64   SDLTest_AssertPass("Call to SDL_GetMouseState(&x, &y)");
     65   SDLTest_AssertCheck(x > INT_MIN, "Validate that value of x is > INT_MIN, got: %i", x);
     66   SDLTest_AssertCheck(y > INT_MIN, "Validate that value of y is > INT_MIN, got: %i", y);
     67   SDLTest_AssertCheck(_mouseStateCheck(state), "Validate state returned from function, got: %i", state);
     68
     69   return TEST_COMPLETED;
     70}
     71
     72/**
     73 * @brief Check call to SDL_GetRelativeMouseState
     74 *
     75 */
     76int
     77mouse_getRelativeMouseState(void *arg)
     78{
     79   int x;
     80   int y;
     81   Uint32 state;
     82
     83   /* Pump some events to update mouse state */
     84   SDL_PumpEvents();
     85   SDLTest_AssertPass("Call to SDL_PumpEvents()");
     86
     87   /* Case where x, y pointer is NULL */
     88   state = SDL_GetRelativeMouseState(NULL, NULL);
     89   SDLTest_AssertPass("Call to SDL_GetRelativeMouseState(NULL, NULL)");
     90   SDLTest_AssertCheck(_mouseStateCheck(state), "Validate state returned from function, got: %i", state);
     91
     92   /* Case where x pointer is not NULL */
     93   x = INT_MIN;
     94   state = SDL_GetRelativeMouseState(&x, NULL);
     95   SDLTest_AssertPass("Call to SDL_GetRelativeMouseState(&x, NULL)");
     96   SDLTest_AssertCheck(x > INT_MIN, "Validate that value of x is > INT_MIN, got: %i", x);
     97   SDLTest_AssertCheck(_mouseStateCheck(state), "Validate state returned from function, got: %i", state);
     98
     99   /* Case where y pointer is not NULL */
    100   y = INT_MIN;
    101   state = SDL_GetRelativeMouseState(NULL, &y);
    102   SDLTest_AssertPass("Call to SDL_GetRelativeMouseState(NULL, &y)");
    103   SDLTest_AssertCheck(y > INT_MIN, "Validate that value of y is > INT_MIN, got: %i", y);
    104   SDLTest_AssertCheck(_mouseStateCheck(state), "Validate state returned from function, got: %i", state);
    105
    106   /* Case where x and y pointer is not NULL */
    107   x = INT_MIN;
    108   y = INT_MIN;
    109   state = SDL_GetRelativeMouseState(&x, &y);
    110   SDLTest_AssertPass("Call to SDL_GetRelativeMouseState(&x, &y)");
    111   SDLTest_AssertCheck(x > INT_MIN, "Validate that value of x is > INT_MIN, got: %i", x);
    112   SDLTest_AssertCheck(y > INT_MIN, "Validate that value of y is > INT_MIN, got: %i", y);
    113   SDLTest_AssertCheck(_mouseStateCheck(state), "Validate state returned from function, got: %i", state);
    114
    115   return TEST_COMPLETED;
    116}
    117
    118
    119/* XPM definition of mouse Cursor */
    120static const char *_mouseArrowData[] = {
    121  /* pixels */
    122  "X                               ",
    123  "XX                              ",
    124  "X.X                             ",
    125  "X..X                            ",
    126  "X...X                           ",
    127  "X....X                          ",
    128  "X.....X                         ",
    129  "X......X                        ",
    130  "X.......X                       ",
    131  "X........X                      ",
    132  "X.....XXXXX                     ",
    133  "X..X..X                         ",
    134  "X.X X..X                        ",
    135  "XX  X..X                        ",
    136  "X    X..X                       ",
    137  "     X..X                       ",
    138  "      X..X                      ",
    139  "      X..X                      ",
    140  "       XX                       ",
    141  "                                ",
    142  "                                ",
    143  "                                ",
    144  "                                ",
    145  "                                ",
    146  "                                ",
    147  "                                ",
    148  "                                ",
    149  "                                ",
    150  "                                ",
    151  "                                ",
    152  "                                ",
    153  "                                "
    154};
    155
    156/* Helper that creates a new mouse cursor from an XPM */
    157static SDL_Cursor *_initArrowCursor(const char *image[])
    158{
    159  SDL_Cursor *cursor;
    160  int i, row, col;
    161  Uint8 data[4*32];
    162  Uint8 mask[4*32];
    163
    164  i = -1;
    165  for ( row=0; row<32; ++row ) {
    166    for ( col=0; col<32; ++col ) {
    167      if ( col % 8 ) {
    168        data[i] <<= 1;
    169        mask[i] <<= 1;
    170      } else {
    171        ++i;
    172        data[i] = mask[i] = 0;
    173      }
    174      switch (image[row][col]) {
    175        case 'X':
    176          data[i] |= 0x01;
    177          mask[i] |= 0x01;
    178          break;
    179        case '.':
    180          mask[i] |= 0x01;
    181          break;
    182        case ' ':
    183          break;
    184      }
    185    }
    186  }
    187
    188  cursor = SDL_CreateCursor(data, mask, 32, 32, 0, 0);
    189  return cursor;
    190}
    191
    192/**
    193 * @brief Check call to SDL_CreateCursor and SDL_FreeCursor
    194 *
    195 * @sa http://wiki.libsdl.org/moin.cgi/SDL_CreateCursor
    196 * @sa http://wiki.libsdl.org/moin.cgi/SDL_FreeCursor
    197 */
    198int
    199mouse_createFreeCursor(void *arg)
    200{
    201    SDL_Cursor *cursor;
    202
    203    /* Create a cursor */
    204    cursor = _initArrowCursor(_mouseArrowData);
    205        SDLTest_AssertPass("Call to SDL_CreateCursor()");
    206        SDLTest_AssertCheck(cursor != NULL, "Validate result from SDL_CreateCursor() is not NULL");
    207    if (cursor == NULL) {
    208        return TEST_ABORTED;
    209    }
    210
    211    /* Free cursor again */
    212    SDL_FreeCursor(cursor);
    213    SDLTest_AssertPass("Call to SDL_FreeCursor()");
    214
    215    return TEST_COMPLETED;
    216}
    217
    218/**
    219 * @brief Check call to SDL_CreateColorCursor and SDL_FreeCursor
    220 *
    221 * @sa http://wiki.libsdl.org/moin.cgi/SDL_CreateColorCursor
    222 * @sa http://wiki.libsdl.org/moin.cgi/SDL_FreeCursor
    223 */
    224int
    225mouse_createFreeColorCursor(void *arg)
    226{
    227    SDL_Surface *face;
    228    SDL_Cursor *cursor;
    229
    230    /* Get sample surface */
    231    face = SDLTest_ImageFace();
    232    SDLTest_AssertCheck(face != NULL, "Validate sample input image is not NULL");
    233    if (face == NULL) return TEST_ABORTED;
    234
    235    /* Create a color cursor from surface */
    236    cursor = SDL_CreateColorCursor(face, 0, 0);
    237        SDLTest_AssertPass("Call to SDL_CreateColorCursor()");
    238        SDLTest_AssertCheck(cursor != NULL, "Validate result from SDL_CreateColorCursor() is not NULL");
    239    if (cursor == NULL) {
    240        SDL_FreeSurface(face);
    241        return TEST_ABORTED;
    242    }
    243
    244    /* Free cursor again */
    245    SDL_FreeCursor(cursor);
    246    SDLTest_AssertPass("Call to SDL_FreeCursor()");
    247
    248    /* Clean up */
    249    SDL_FreeSurface(face);
    250
    251    return TEST_COMPLETED;
    252}
    253
    254/* Helper that changes cursor visibility */
    255void _changeCursorVisibility(int state)
    256{
    257    int oldState;
    258    int newState;
    259    int result;
    260
    261        oldState = SDL_ShowCursor(SDL_QUERY);
    262    SDLTest_AssertPass("Call to SDL_ShowCursor(SDL_QUERY)");
    263
    264        result = SDL_ShowCursor(state);
    265    SDLTest_AssertPass("Call to SDL_ShowCursor(%s)", (state == SDL_ENABLE) ? "SDL_ENABLE" : "SDL_DISABLE");
    266    SDLTest_AssertCheck(result == oldState, "Validate result from SDL_ShowCursor(%s), expected: %i, got: %i",
    267        (state == SDL_ENABLE) ? "SDL_ENABLE" : "SDL_DISABLE", oldState, result);
    268
    269    newState = SDL_ShowCursor(SDL_QUERY);
    270    SDLTest_AssertPass("Call to SDL_ShowCursor(SDL_QUERY)");
    271    SDLTest_AssertCheck(state == newState, "Validate new state, expected: %i, got: %i",
    272        state, newState);
    273}
    274
    275/**
    276 * @brief Check call to SDL_ShowCursor
    277 *
    278 * @sa http://wiki.libsdl.org/moin.cgi/SDL_ShowCursor
    279 */
    280int
    281mouse_showCursor(void *arg)
    282{
    283    int currentState;
    284
    285    /* Get current state */
    286    currentState = SDL_ShowCursor(SDL_QUERY);
    287    SDLTest_AssertPass("Call to SDL_ShowCursor(SDL_QUERY)");
    288    SDLTest_AssertCheck(currentState == SDL_DISABLE || currentState == SDL_ENABLE,
    289        "Validate result is %i or %i, got: %i", SDL_DISABLE, SDL_ENABLE, currentState);
    290    if (currentState == SDL_DISABLE) {
    291        /* Show the cursor, then hide it again */
    292        _changeCursorVisibility(SDL_ENABLE);
    293        _changeCursorVisibility(SDL_DISABLE);
    294    } else if (currentState == SDL_ENABLE) {
    295        /* Hide the cursor, then show it again */
    296        _changeCursorVisibility(SDL_DISABLE);
    297        _changeCursorVisibility(SDL_ENABLE);
    298    } else {
    299        return TEST_ABORTED;
    300    }
    301
    302    return TEST_COMPLETED;
    303}
    304
    305/**
    306 * @brief Check call to SDL_SetCursor
    307 *
    308 * @sa http://wiki.libsdl.org/moin.cgi/SDL_SetCursor
    309 */
    310int
    311mouse_setCursor(void *arg)
    312{
    313    SDL_Cursor *cursor;
    314
    315    /* Create a cursor */
    316    cursor = _initArrowCursor(_mouseArrowData);
    317        SDLTest_AssertPass("Call to SDL_CreateCursor()");
    318        SDLTest_AssertCheck(cursor != NULL, "Validate result from SDL_CreateCursor() is not NULL");
    319    if (cursor == NULL) {
    320        return TEST_ABORTED;
    321    }
    322
    323    /* Set the arrow cursor */
    324    SDL_SetCursor(cursor);
    325    SDLTest_AssertPass("Call to SDL_SetCursor(cursor)");
    326
    327    /* Force redraw */
    328    SDL_SetCursor(NULL);
    329    SDLTest_AssertPass("Call to SDL_SetCursor(NULL)");
    330
    331    /* Free cursor again */
    332    SDL_FreeCursor(cursor);
    333    SDLTest_AssertPass("Call to SDL_FreeCursor()");
    334
    335    return TEST_COMPLETED;
    336}
    337
    338/**
    339 * @brief Check call to SDL_GetCursor
    340 *
    341 * @sa http://wiki.libsdl.org/moin.cgi/SDL_GetCursor
    342 */
    343int
    344mouse_getCursor(void *arg)
    345{
    346    SDL_Cursor *cursor;
    347
    348    /* Get current cursor */
    349    cursor = SDL_GetCursor();
    350        SDLTest_AssertPass("Call to SDL_GetCursor()");
    351        SDLTest_AssertCheck(cursor != NULL, "Validate result from SDL_GetCursor() is not NULL");
    352
    353    return TEST_COMPLETED;
    354}
    355
    356/**
    357 * @brief Check call to SDL_GetRelativeMouseMode and SDL_SetRelativeMouseMode
    358 *
    359 * @sa http://wiki.libsdl.org/moin.cgi/SDL_GetRelativeMouseMode
    360 * @sa http://wiki.libsdl.org/moin.cgi/SDL_SetRelativeMouseMode
    361 */
    362int
    363mouse_getSetRelativeMouseMode(void *arg)
    364{
    365    int result;
    366        int i;
    367    SDL_bool initialState;
    368    SDL_bool currentState;
    369
    370    /* Capture original state so we can revert back to it later */
    371    initialState = SDL_GetRelativeMouseMode();
    372        SDLTest_AssertPass("Call to SDL_GetRelativeMouseMode()");
    373
    374        /* Repeat twice to check D->D transition */
    375        for (i=0; i<2; i++) {
    376      /* Disable - should always be supported */
    377          result = SDL_SetRelativeMouseMode(SDL_FALSE);
    378          SDLTest_AssertPass("Call to SDL_SetRelativeMouseMode(FALSE)");
    379          SDLTest_AssertCheck(result == 0, "Validate result value from SDL_SetRelativeMouseMode, expected: 0, got: %i", result);
    380      currentState = SDL_GetRelativeMouseMode();
    381          SDLTest_AssertPass("Call to SDL_GetRelativeMouseMode()");
    382          SDLTest_AssertCheck(currentState == SDL_FALSE, "Validate current state is FALSE, got: %i", currentState);
    383        }
    384
    385        /* Repeat twice to check D->E->E transition */
    386        for (i=0; i<2; i++) {
    387      /* Enable - may not be supported */
    388          result = SDL_SetRelativeMouseMode(SDL_TRUE);
    389          SDLTest_AssertPass("Call to SDL_SetRelativeMouseMode(TRUE)");
    390          if (result != -1) {
    391            SDLTest_AssertCheck(result == 0, "Validate result value from SDL_SetRelativeMouseMode, expected: 0, got: %i", result);
    392        currentState = SDL_GetRelativeMouseMode();
    393            SDLTest_AssertPass("Call to SDL_GetRelativeMouseMode()");
    394            SDLTest_AssertCheck(currentState == SDL_TRUE, "Validate current state is TRUE, got: %i", currentState);
    395          }
    396        }
    397
    398    /* Disable to check E->D transition */
    399        result = SDL_SetRelativeMouseMode(SDL_FALSE);
    400        SDLTest_AssertPass("Call to SDL_SetRelativeMouseMode(FALSE)");
    401        SDLTest_AssertCheck(result == 0, "Validate result value from SDL_SetRelativeMouseMode, expected: 0, got: %i", result);
    402    currentState = SDL_GetRelativeMouseMode();
    403        SDLTest_AssertPass("Call to SDL_GetRelativeMouseMode()");
    404        SDLTest_AssertCheck(currentState == SDL_FALSE, "Validate current state is FALSE, got: %i", currentState);
    405
    406        /* Revert to original state - ignore result */
    407        result = SDL_SetRelativeMouseMode(initialState);
    408
    409    return TEST_COMPLETED;
    410}
    411
    412#define MOUSE_TESTWINDOW_WIDTH  320
    413#define MOUSE_TESTWINDOW_HEIGHT 200
    414
    415/**
    416 * Creates a test window
    417 */
    418SDL_Window *_createMouseSuiteTestWindow()
    419{
    420  int posX = 100, posY = 100, width = MOUSE_TESTWINDOW_WIDTH, height = MOUSE_TESTWINDOW_HEIGHT;
    421  SDL_Window *window;
    422  window = SDL_CreateWindow("mouse_createMouseSuiteTestWindow", posX, posY, width, height, 0);
    423  SDLTest_AssertPass("SDL_CreateWindow()");
    424  SDLTest_AssertCheck(window != NULL, "Check SDL_CreateWindow result");
    425  return window;
    426}
    427
    428/*
    429 * Destroy test window
    430 */
    431void _destroyMouseSuiteTestWindow(SDL_Window *window)
    432{
    433  if (window != NULL) {
    434     SDL_DestroyWindow(window);
    435     window = NULL;
    436     SDLTest_AssertPass("SDL_DestroyWindow()");
    437  }
    438}
    439
    440/**
    441 * @brief Check call to SDL_WarpMouseInWindow
    442 *
    443 * @sa http://wiki.libsdl.org/moin.cgi/SDL_WarpMouseInWindow
    444 */
    445int
    446mouse_warpMouseInWindow(void *arg)
    447{
    448    const int w = MOUSE_TESTWINDOW_WIDTH, h = MOUSE_TESTWINDOW_HEIGHT;
    449    int numPositions = 6;
    450    int xPositions[] = {-1, 0, 1, w-1, w, w+1 };
    451    int yPositions[] = {-1, 0, 1, h-1, h, h+1 };
    452    int x, y, i, j;
    453    SDL_Window *window;
    454
    455    /* Create test window */
    456    window = _createMouseSuiteTestWindow();
    457    if (window == NULL) return TEST_ABORTED;
    458
    459    /* Mouse to random position inside window */
    460    x = SDLTest_RandomIntegerInRange(1, w-1);
    461    y = SDLTest_RandomIntegerInRange(1, h-1);
    462    SDL_WarpMouseInWindow(window, x, y);
    463    SDLTest_AssertPass("SDL_WarpMouseInWindow(...,%i,%i)", x, y);
    464
    465        /* Same position again */
    466    SDL_WarpMouseInWindow(window, x, y);
    467    SDLTest_AssertPass("SDL_WarpMouseInWindow(...,%i,%i)", x, y);
    468
    469    /* Mouse to various boundary positions */
    470    for (i=0; i<numPositions; i++) {
    471      for (j=0; j<numPositions; j++) {
    472        x = xPositions[i];
    473        y = yPositions[j];
    474        SDL_WarpMouseInWindow(window, x, y);
    475        SDLTest_AssertPass("SDL_WarpMouseInWindow(...,%i,%i)", x, y);
    476
    477        /* TODO: add tracking of events and check that each call generates a mouse motion event */
    478        SDL_PumpEvents();
    479        SDLTest_AssertPass("SDL_PumpEvents()");
    480      }
    481    }
    482
    483
    484        /* Clean up test window */
    485    _destroyMouseSuiteTestWindow(window);
    486
    487    return TEST_COMPLETED;
    488}
    489
    490/**
    491 * @brief Check call to SDL_GetMouseFocus
    492 *
    493 * @sa http://wiki.libsdl.org/moin.cgi/SDL_GetMouseFocus
    494 */
    495int
    496mouse_getMouseFocus(void *arg)
    497{
    498    const int w = MOUSE_TESTWINDOW_WIDTH, h = MOUSE_TESTWINDOW_HEIGHT;
    499    int x, y;
    500    SDL_Window *window;
    501    SDL_Window *focusWindow;
    502
    503    /* Get focus - focus non-deterministic */
    504    focusWindow = SDL_GetMouseFocus();
    505    SDLTest_AssertPass("SDL_GetMouseFocus()");
    506
    507        /* Create test window */
    508    window = _createMouseSuiteTestWindow();
    509    if (window == NULL) return TEST_ABORTED;
    510
    511    /* Mouse to random position inside window */
    512    x = SDLTest_RandomIntegerInRange(1, w-1);
    513    y = SDLTest_RandomIntegerInRange(1, h-1);
    514    SDL_WarpMouseInWindow(window, x, y);
    515    SDLTest_AssertPass("SDL_WarpMouseInWindow(...,%i,%i)", x, y);
    516
    517    /* Pump events to update focus state */
    518    SDL_PumpEvents();
    519    SDLTest_AssertPass("SDL_PumpEvents()");
    520
    521        /* Get focus with explicit window setup - focus deterministic */
    522    focusWindow = SDL_GetMouseFocus();
    523    SDLTest_AssertPass("SDL_GetMouseFocus()");
    524    SDLTest_AssertCheck (focusWindow != NULL, "Check returned window value is not NULL");
    525    SDLTest_AssertCheck (focusWindow == window, "Check returned window value is test window");
    526
    527    /* Mouse to random position outside window */
    528    x = SDLTest_RandomIntegerInRange(-9, -1);
    529    y = SDLTest_RandomIntegerInRange(-9, -1);
    530    SDL_WarpMouseInWindow(window, x, y);
    531    SDLTest_AssertPass("SDL_WarpMouseInWindow(...,%i,%i)", x, y);
    532
    533        /* Clean up test window */
    534    _destroyMouseSuiteTestWindow(window);
    535
    536    /* Pump events to update focus state */
    537    SDL_PumpEvents();
    538    SDLTest_AssertPass("SDL_PumpEvents()");
    539
    540        /* Get focus for non-existing window */
    541    focusWindow = SDL_GetMouseFocus();
    542    SDLTest_AssertPass("SDL_GetMouseFocus()");
    543    SDLTest_AssertCheck (focusWindow == NULL, "Check returned window value is NULL");
    544
    545
    546    return TEST_COMPLETED;
    547}
    548
    549/* ================= Test References ================== */
    550
    551/* Mouse test cases */
    552static const SDLTest_TestCaseReference mouseTest1 =
    553        { (SDLTest_TestCaseFp)mouse_getMouseState, "mouse_getMouseState", "Check call to SDL_GetMouseState", TEST_ENABLED };
    554
    555static const SDLTest_TestCaseReference mouseTest2 =
    556        { (SDLTest_TestCaseFp)mouse_getRelativeMouseState, "mouse_getRelativeMouseState", "Check call to SDL_GetRelativeMouseState", TEST_ENABLED };
    557
    558static const SDLTest_TestCaseReference mouseTest3 =
    559        { (SDLTest_TestCaseFp)mouse_createFreeCursor, "mouse_createFreeCursor", "Check call to SDL_CreateCursor and SDL_FreeCursor", TEST_ENABLED };
    560
    561static const SDLTest_TestCaseReference mouseTest4 =
    562        { (SDLTest_TestCaseFp)mouse_showCursor, "mouse_showCursor", "Check call to SDL_ShowCursor", TEST_ENABLED };
    563
    564static const SDLTest_TestCaseReference mouseTest5 =
    565        { (SDLTest_TestCaseFp)mouse_setCursor, "mouse_setCursor", "Check call to SDL_SetCursor", TEST_ENABLED };
    566
    567static const SDLTest_TestCaseReference mouseTest6 =
    568        { (SDLTest_TestCaseFp)mouse_getCursor, "mouse_getCursor", "Check call to SDL_GetCursor", TEST_ENABLED };
    569
    570static const SDLTest_TestCaseReference mouseTest7 =
    571        { (SDLTest_TestCaseFp)mouse_warpMouseInWindow, "mouse_warpMouseInWindow", "Check call to SDL_WarpMouseInWindow", TEST_ENABLED };
    572
    573static const SDLTest_TestCaseReference mouseTest8 =
    574        { (SDLTest_TestCaseFp)mouse_getMouseFocus, "mouse_getMouseFocus", "Check call to SDL_getMouseFocus", TEST_ENABLED };
    575
    576static const SDLTest_TestCaseReference mouseTest9 =
    577        { (SDLTest_TestCaseFp)mouse_createFreeColorCursor, "mouse_createFreeColorCursor", "Check call to SDL_CreateColorCursor and SDL_FreeCursor", TEST_ENABLED };
    578
    579static const SDLTest_TestCaseReference mouseTest10 =
    580        { (SDLTest_TestCaseFp)mouse_getSetRelativeMouseMode, "mouse_getSetRelativeMouseMode", "Check call to SDL_GetRelativeMouseMode and SDL_SetRelativeMouseMode", TEST_ENABLED };
    581
    582/* Sequence of Mouse test cases */
    583static const SDLTest_TestCaseReference *mouseTests[] =  {
    584    &mouseTest1, &mouseTest2, &mouseTest3, &mouseTest4, &mouseTest5, &mouseTest6,
    585    &mouseTest7, &mouseTest8, &mouseTest9, &mouseTest10, NULL
    586};
    587
    588/* Mouse test suite (global) */
    589SDLTest_TestSuiteReference mouseTestSuite = {
    590    "Mouse",
    591    NULL,
    592    mouseTests,
    593    NULL
    594};