cscg22-gearboy

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

testautomation_sdltest.c (59458B)


      1/**
      2 * SDL_test test suite
      3 */
      4
      5/* Visual Studio 2008 doesn't have stdint.h */
      6#if defined(_MSC_VER) && _MSC_VER <= 1500
      7#define UINT8_MAX   ~(Uint8)0
      8#define UINT16_MAX  ~(Uint16)0
      9#define UINT32_MAX  ~(Uint32)0
     10#define UINT64_MAX  ~(Uint64)0
     11#else
     12#include <stdint.h>
     13#endif
     14#include <stdio.h>
     15#include <limits.h>
     16#include <float.h>
     17#include <ctype.h>
     18
     19#include "SDL.h"
     20#include "SDL_test.h"
     21
     22/* Test case functions */
     23
     24/* Forward declarations for internal harness functions */
     25extern char *SDLTest_GenerateRunSeed(const int length);
     26
     27/**
     28 * @brief Calls to SDLTest_GenerateRunSeed()
     29 */
     30int
     31sdltest_generateRunSeed(void *arg)
     32{
     33  char* result;
     34  int i, l;
     35  
     36  for (i = 1; i <= 10; i += 3) {   
     37     result = SDLTest_GenerateRunSeed((const int)i);
     38     SDLTest_AssertPass("Call to SDLTest_GenerateRunSeed()");
     39     SDLTest_AssertCheck(result != NULL, "Verify returned value is not NULL");
     40     if (result != NULL) {
     41       l = SDL_strlen(result);
     42       SDLTest_AssertCheck(l == i, "Verify length of returned value is %d, got: %d", i, l);
     43       SDL_free(result);
     44     }
     45  }
     46
     47  /* Negative cases */
     48  for (i = -2; i <= 0; i++) {   
     49     result = SDLTest_GenerateRunSeed((const int)i);
     50     SDLTest_AssertPass("Call to SDLTest_GenerateRunSeed()");
     51     SDLTest_AssertCheck(result == NULL, "Verify returned value is not NULL");
     52  }
     53  
     54  return TEST_COMPLETED;
     55}
     56
     57/**
     58 * @brief Calls to SDLTest_GetFuzzerInvocationCount()
     59 */
     60int
     61sdltest_getFuzzerInvocationCount(void *arg)
     62{
     63  Uint8 result;
     64  int fuzzerCount1, fuzzerCount2;
     65
     66  fuzzerCount1 = SDLTest_GetFuzzerInvocationCount();
     67  SDLTest_AssertPass("Call to SDLTest_GetFuzzerInvocationCount()");
     68  SDLTest_AssertCheck(fuzzerCount1 >= 0, "Verify returned value, expected: >=0, got: %d", fuzzerCount1);
     69
     70  result = SDLTest_RandomUint8();
     71  SDLTest_AssertPass("Call to SDLTest_RandomUint8(), returned %d", result);
     72
     73  fuzzerCount2 = SDLTest_GetFuzzerInvocationCount();
     74  SDLTest_AssertPass("Call to SDLTest_GetFuzzerInvocationCount()");
     75  SDLTest_AssertCheck(fuzzerCount2 > fuzzerCount1, "Verify returned value, expected: >%d, got: %d", fuzzerCount1, fuzzerCount2);
     76
     77  return TEST_COMPLETED;
     78}
     79
     80
     81/**
     82 * @brief Calls to random number generators
     83 */
     84int
     85sdltest_randomNumber(void *arg)
     86{
     87  Sint64 result;
     88  Uint64 uresult;
     89  double dresult;
     90  Uint64 umax;
     91  Sint64 min, max;
     92
     93  result = (Sint64)SDLTest_RandomUint8();
     94  umax = (1 << 8) - 1;
     95  SDLTest_AssertPass("Call to SDLTest_RandomUint8");
     96  SDLTest_AssertCheck(result >= 0 && result <= (Sint64)umax, "Verify result value, expected: [0,%llu], got: %lld", umax, result);
     97
     98  result = (Sint64)SDLTest_RandomSint8();
     99  min = 0 - (1 << 7);
    100  max =     (1 << 7) - 1;
    101  SDLTest_AssertPass("Call to SDLTest_RandomSint8");
    102  SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%lld,%lld], got: %lld", min, max, result);
    103
    104  result = (Sint64)SDLTest_RandomUint16();
    105  umax = (1 << 16) - 1;
    106  SDLTest_AssertPass("Call to SDLTest_RandomUint16");
    107  SDLTest_AssertCheck(result >= 0 && result <= (Sint64)umax, "Verify result value, expected: [0,%llu], got: %lld", umax, result);
    108
    109  result = (Sint64)SDLTest_RandomSint16();
    110  min = 0 - (1 << 15);
    111  max =     (1 << 15) - 1;
    112  SDLTest_AssertPass("Call to SDLTest_RandomSint16");
    113  SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%lld,%lld], got: %lld", min, max, result);
    114
    115  result = (Sint64)SDLTest_RandomUint32();
    116  umax = ((Uint64)1 << 32) - 1;
    117  SDLTest_AssertPass("Call to SDLTest_RandomUint32");
    118  SDLTest_AssertCheck(result >= 0 && result <= (Sint64)umax, "Verify result value, expected: [0,%llu], got: %lld", umax, result);
    119
    120  result = (Sint64)SDLTest_RandomSint32();
    121  min = 0 - ((Sint64)1 << 31);
    122  max =     ((Sint64)1 << 31) - 1;
    123  SDLTest_AssertPass("Call to SDLTest_RandomSint32");
    124  SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%lld,%lld], got: %lld", min, max, result);
    125
    126  uresult = SDLTest_RandomUint64();
    127  SDLTest_AssertPass("Call to SDLTest_RandomUint64");
    128
    129  result = SDLTest_RandomSint64();
    130  SDLTest_AssertPass("Call to SDLTest_RandomSint64");
    131
    132  dresult = (double)SDLTest_RandomUnitFloat();
    133  SDLTest_AssertPass("Call to SDLTest_RandomUnitFloat");
    134  SDLTest_AssertCheck(dresult >= 0.0 && dresult < 1.0, "Verify result value, expected: [0.0,1.0[, got: %e", dresult);
    135
    136  dresult = (double)SDLTest_RandomFloat();
    137  SDLTest_AssertPass("Call to SDLTest_RandomFloat");
    138  SDLTest_AssertCheck(dresult >= (double)(-FLT_MAX) && dresult <= (double)FLT_MAX, "Verify result value, expected: [%e,%e], got: %e", (double)(-FLT_MAX), (double)FLT_MAX, dresult);
    139
    140  dresult = (double)SDLTest_RandomUnitDouble();
    141  SDLTest_AssertPass("Call to SDLTest_RandomUnitDouble");
    142  SDLTest_AssertCheck(dresult >= 0.0 && dresult < 1.0, "Verify result value, expected: [0.0,1.0[, got: %e", dresult);
    143
    144  dresult = SDLTest_RandomDouble();
    145  SDLTest_AssertPass("Call to SDLTest_RandomDouble");
    146
    147  return TEST_COMPLETED;
    148}
    149
    150/*
    151 * @brief Calls to random boundary number generators for Uint8
    152 */
    153int
    154sdltest_randomBoundaryNumberUint8(void *arg)
    155{
    156  const char *expectedError = "That operation is not supported";
    157  char *lastError;
    158  Uint64 uresult;
    159
    160  /* Clean error messages */
    161  SDL_ClearError();
    162  SDLTest_AssertPass("SDL_ClearError()");
    163
    164  /* RandomUintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
    165  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 10, SDL_TRUE);
    166  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    167  SDLTest_AssertCheck(
    168    uresult == 10,
    169    "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %lld", uresult);
    170
    171  /* RandomUintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
    172  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 11, SDL_TRUE);
    173  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    174  SDLTest_AssertCheck(
    175    uresult == 10 || uresult == 11,
    176    "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %lld", uresult);
    177
    178  /* RandomUintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
    179  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 12, SDL_TRUE);
    180  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    181  SDLTest_AssertCheck(
    182    uresult == 10 || uresult == 11 || uresult == 12,
    183    "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %lld", uresult);
    184
    185  /* RandomUintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
    186  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 13, SDL_TRUE);
    187  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    188  SDLTest_AssertCheck(
    189    uresult == 10 || uresult == 11 || uresult == 12 || uresult == 13,
    190    "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %lld", uresult);
    191
    192  /* RandomUintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
    193  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 20, SDL_TRUE);
    194  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    195  SDLTest_AssertCheck(
    196    uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
    197    "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %lld", uresult);
    198
    199  /* RandomUintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
    200  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(20, 10, SDL_TRUE);
    201  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    202  SDLTest_AssertCheck(
    203    uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
    204    "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %lld", uresult);
    205
    206  /* RandomUintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
    207  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(1, 20, SDL_FALSE);
    208  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    209  SDLTest_AssertCheck(
    210    uresult == 0 || uresult == 21,
    211    "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %lld", uresult);
    212
    213  /* RandomUintXBoundaryValue(0, 99, SDL_FALSE) returns 100 */
    214  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(0, 99, SDL_FALSE);
    215  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    216  SDLTest_AssertCheck(
    217    uresult == 100,
    218    "Validate result value for parameters (0,99,SDL_FALSE); expected: 100, got: %lld", uresult);
    219
    220  /* RandomUintXBoundaryValue(1, 0xff, SDL_FALSE) returns 0 (no error) */
    221  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(1, 255, SDL_FALSE);
    222  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    223  SDLTest_AssertCheck(
    224    uresult == 0,
    225    "Validate result value for parameters (1,255,SDL_FALSE); expected: 0, got: %lld", uresult);
    226  lastError = (char *)SDL_GetError();
    227  SDLTest_AssertPass("SDL_GetError()");
    228  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    229
    230  /* RandomUintXBoundaryValue(0, 0xfe, SDL_FALSE) returns 0xff (no error) */
    231  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(0, 254, SDL_FALSE);
    232  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    233  SDLTest_AssertCheck(
    234    uresult == 0xff,
    235    "Validate result value for parameters (0,254,SDL_FALSE); expected: 0xff, got: %lld", uresult);
    236  lastError = (char *)SDL_GetError();
    237  SDLTest_AssertPass("SDL_GetError()");
    238  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    239
    240  /* RandomUintXBoundaryValue(0, 0xff, SDL_FALSE) returns 0 (sets error) */
    241  uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(0, 255, SDL_FALSE);
    242  SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
    243  SDLTest_AssertCheck(
    244    uresult == 0,
    245    "Validate result value for parameters(0,255,SDL_FALSE); expected: 0, got: %lld", uresult);
    246  lastError = (char *)SDL_GetError();
    247  SDLTest_AssertPass("SDL_GetError()");
    248  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
    249             "SDL_GetError(): expected message '%s', was message: '%s'",
    250             expectedError,
    251             lastError);
    252
    253  /* Clear error messages */
    254  SDL_ClearError();
    255  SDLTest_AssertPass("SDL_ClearError()");
    256
    257  return TEST_COMPLETED;
    258}
    259
    260/*
    261 * @brief Calls to random boundary number generators for Uint16
    262 */
    263int
    264sdltest_randomBoundaryNumberUint16(void *arg)
    265{
    266  const char *expectedError = "That operation is not supported";
    267  char *lastError;
    268  Uint64 uresult;
    269
    270  /* Clean error messages */
    271  SDL_ClearError();
    272  SDLTest_AssertPass("SDL_ClearError()");
    273
    274  /* RandomUintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
    275  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 10, SDL_TRUE);
    276  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    277  SDLTest_AssertCheck(
    278    uresult == 10,
    279    "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %lld", uresult);
    280
    281  /* RandomUintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
    282  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 11, SDL_TRUE);
    283  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    284  SDLTest_AssertCheck(
    285    uresult == 10 || uresult == 11,
    286    "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %lld", uresult);
    287
    288  /* RandomUintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
    289  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 12, SDL_TRUE);
    290  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    291  SDLTest_AssertCheck(
    292    uresult == 10 || uresult == 11 || uresult == 12,
    293    "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %lld", uresult);
    294
    295  /* RandomUintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
    296  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 13, SDL_TRUE);
    297  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    298  SDLTest_AssertCheck(
    299    uresult == 10 || uresult == 11 || uresult == 12 || uresult == 13,
    300    "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %lld", uresult);
    301
    302  /* RandomUintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
    303  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 20, SDL_TRUE);
    304  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    305  SDLTest_AssertCheck(
    306    uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
    307    "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %lld", uresult);
    308
    309  /* RandomUintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
    310  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(20, 10, SDL_TRUE);
    311  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    312  SDLTest_AssertCheck(
    313    uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
    314    "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %lld", uresult);
    315
    316  /* RandomUintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
    317  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(1, 20, SDL_FALSE);
    318  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    319  SDLTest_AssertCheck(
    320    uresult == 0 || uresult == 21,
    321    "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %lld", uresult);
    322
    323  /* RandomUintXBoundaryValue(0, 99, SDL_FALSE) returns 100 */
    324  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(0, 99, SDL_FALSE);
    325  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    326  SDLTest_AssertCheck(
    327    uresult == 100,
    328    "Validate result value for parameters (0,99,SDL_FALSE); expected: 100, got: %lld", uresult);
    329
    330  /* RandomUintXBoundaryValue(1, 0xffff, SDL_FALSE) returns 0 (no error) */
    331  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(1, 0xffff, SDL_FALSE);
    332  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    333  SDLTest_AssertCheck(
    334    uresult == 0,
    335    "Validate result value for parameters (1,0xffff,SDL_FALSE); expected: 0, got: %lld", uresult);
    336  lastError = (char *)SDL_GetError();
    337  SDLTest_AssertPass("SDL_GetError()");
    338  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    339
    340  /* RandomUintXBoundaryValue(0, 0xfffe, SDL_FALSE) returns 0xffff (no error) */
    341  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(0, 0xfffe, SDL_FALSE);
    342  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    343  SDLTest_AssertCheck(
    344    uresult == 0xffff,
    345    "Validate result value for parameters (0,0xfffe,SDL_FALSE); expected: 0xffff, got: %lld", uresult);
    346  lastError = (char *)SDL_GetError();
    347  SDLTest_AssertPass("SDL_GetError()");
    348  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    349
    350  /* RandomUintXBoundaryValue(0, 0xffff, SDL_FALSE) returns 0 (sets error) */
    351  uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(0, 0xffff, SDL_FALSE);
    352  SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
    353  SDLTest_AssertCheck(
    354    uresult == 0,
    355    "Validate result value for parameters(0,0xffff,SDL_FALSE); expected: 0, got: %lld", uresult);
    356  lastError = (char *)SDL_GetError();
    357  SDLTest_AssertPass("SDL_GetError()");
    358  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
    359             "SDL_GetError(): expected message '%s', was message: '%s'",
    360             expectedError,
    361             lastError);
    362
    363  /* Clear error messages */
    364  SDL_ClearError();
    365  SDLTest_AssertPass("SDL_ClearError()");
    366
    367  return TEST_COMPLETED;
    368}
    369
    370/*
    371 * @brief Calls to random boundary number generators for Uint32
    372 */
    373int
    374sdltest_randomBoundaryNumberUint32(void *arg)
    375{
    376  const char *expectedError = "That operation is not supported";
    377  char *lastError;
    378  Uint64 uresult;
    379
    380  /* Clean error messages */
    381  SDL_ClearError();
    382  SDLTest_AssertPass("SDL_ClearError()");
    383
    384  /* RandomUintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
    385  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 10, SDL_TRUE);
    386  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    387  SDLTest_AssertCheck(
    388    uresult == 10,
    389    "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %lld", uresult);
    390
    391  /* RandomUintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
    392  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 11, SDL_TRUE);
    393  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    394  SDLTest_AssertCheck(
    395    uresult == 10 || uresult == 11,
    396    "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %lld", uresult);
    397
    398  /* RandomUintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
    399  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 12, SDL_TRUE);
    400  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    401  SDLTest_AssertCheck(
    402    uresult == 10 || uresult == 11 || uresult == 12,
    403    "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %lld", uresult);
    404
    405  /* RandomUintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
    406  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 13, SDL_TRUE);
    407  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    408  SDLTest_AssertCheck(
    409    uresult == 10 || uresult == 11 || uresult == 12 || uresult == 13,
    410    "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %lld", uresult);
    411
    412  /* RandomUintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
    413  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 20, SDL_TRUE);
    414  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    415  SDLTest_AssertCheck(
    416    uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
    417    "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %lld", uresult);
    418
    419  /* RandomUintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
    420  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(20, 10, SDL_TRUE);
    421  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    422  SDLTest_AssertCheck(
    423    uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
    424    "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %lld", uresult);
    425
    426  /* RandomUintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
    427  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(1, 20, SDL_FALSE);
    428  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    429  SDLTest_AssertCheck(
    430    uresult == 0 || uresult == 21,
    431    "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %lld", uresult);
    432
    433  /* RandomUintXBoundaryValue(0, 99, SDL_FALSE) returns 100 */
    434  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(0, 99, SDL_FALSE);
    435  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    436  SDLTest_AssertCheck(
    437    uresult == 100,
    438    "Validate result value for parameters (0,99,SDL_FALSE); expected: 100, got: %lld", uresult);
    439
    440  /* RandomUintXBoundaryValue(1, 0xffffffff, SDL_FALSE) returns 0 (no error) */
    441  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(1, 0xffffffff, SDL_FALSE);
    442  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    443  SDLTest_AssertCheck(
    444    uresult == 0,
    445    "Validate result value for parameters (1,0xffffffff,SDL_FALSE); expected: 0, got: %lld", uresult);
    446  lastError = (char *)SDL_GetError();
    447  SDLTest_AssertPass("SDL_GetError()");
    448  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    449
    450  /* RandomUintXBoundaryValue(0, 0xfffffffe, SDL_FALSE) returns 0xffffffff (no error) */
    451  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(0, 0xfffffffe, SDL_FALSE);
    452  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    453  SDLTest_AssertCheck(
    454    uresult == 0xffffffff,
    455    "Validate result value for parameters (0,0xfffffffe,SDL_FALSE); expected: 0xffffffff, got: %lld", uresult);
    456  lastError = (char *)SDL_GetError();
    457  SDLTest_AssertPass("SDL_GetError()");
    458  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    459
    460  /* RandomUintXBoundaryValue(0, 0xffffffff, SDL_FALSE) returns 0 (sets error) */
    461  uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(0, 0xffffffff, SDL_FALSE);
    462  SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
    463  SDLTest_AssertCheck(
    464    uresult == 0,
    465    "Validate result value for parameters(0,0xffffffff,SDL_FALSE); expected: 0, got: %lld", uresult);
    466  lastError = (char *)SDL_GetError();
    467  SDLTest_AssertPass("SDL_GetError()");
    468  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
    469             "SDL_GetError(): expected message '%s', was message: '%s'",
    470             expectedError,
    471             lastError);
    472
    473  /* Clear error messages */
    474  SDL_ClearError();
    475  SDLTest_AssertPass("SDL_ClearError()");
    476
    477  return TEST_COMPLETED;
    478}
    479
    480/*
    481 * @brief Calls to random boundary number generators for Uint64
    482 */
    483int
    484sdltest_randomBoundaryNumberUint64(void *arg)
    485{
    486  const char *expectedError = "That operation is not supported";
    487  char *lastError;
    488  Uint64 uresult;
    489
    490  /* Clean error messages */
    491  SDL_ClearError();
    492  SDLTest_AssertPass("SDL_ClearError()");
    493
    494  /* RandomUintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
    495  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 10, SDL_TRUE);
    496  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    497  SDLTest_AssertCheck(
    498    uresult == 10,
    499    "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %lld", uresult);
    500
    501  /* RandomUintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
    502  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 11, SDL_TRUE);
    503  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    504  SDLTest_AssertCheck(
    505    uresult == 10 || uresult == 11,
    506    "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %lld", uresult);
    507
    508  /* RandomUintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
    509  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 12, SDL_TRUE);
    510  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    511  SDLTest_AssertCheck(
    512    uresult == 10 || uresult == 11 || uresult == 12,
    513    "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %lld", uresult);
    514
    515  /* RandomUintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
    516  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 13, SDL_TRUE);
    517  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    518  SDLTest_AssertCheck(
    519    uresult == 10 || uresult == 11 || uresult == 12 || uresult == 13,
    520    "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %lld", uresult);
    521
    522  /* RandomUintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
    523  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 20, SDL_TRUE);
    524  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    525  SDLTest_AssertCheck(
    526    uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
    527    "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %lld", uresult);
    528
    529  /* RandomUintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
    530  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(20, 10, SDL_TRUE);
    531  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    532  SDLTest_AssertCheck(
    533    uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
    534    "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %lld", uresult);
    535
    536  /* RandomUintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
    537  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(1, 20, SDL_FALSE);
    538  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    539  SDLTest_AssertCheck(
    540    uresult == 0 || uresult == 21,
    541    "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %lld", uresult);
    542
    543  /* RandomUintXBoundaryValue(0, 99, SDL_FALSE) returns 100 */
    544  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(0, 99, SDL_FALSE);
    545  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    546  SDLTest_AssertCheck(
    547    uresult == 100,
    548    "Validate result value for parameters (0,99,SDL_FALSE); expected: 100, got: %lld", uresult);
    549
    550  /* RandomUintXBoundaryValue(1, 0xffffffffffffffff, SDL_FALSE) returns 0 (no error) */
    551  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(1, (Uint64)0xffffffffffffffffULL, SDL_FALSE);
    552  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    553  SDLTest_AssertCheck(
    554    uresult == 0,
    555    "Validate result value for parameters (1,0xffffffffffffffff,SDL_FALSE); expected: 0, got: %lld", uresult);
    556  lastError = (char *)SDL_GetError();
    557  SDLTest_AssertPass("SDL_GetError()");
    558  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    559
    560  /* RandomUintXBoundaryValue(0, 0xfffffffffffffffe, SDL_FALSE) returns 0xffffffffffffffff (no error) */
    561  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(0, (Uint64)0xfffffffffffffffeULL, SDL_FALSE);
    562  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    563  SDLTest_AssertCheck(
    564    uresult == (Uint64)0xffffffffffffffffULL,
    565    "Validate result value for parameters (0,0xfffffffffffffffe,SDL_FALSE); expected: 0xffffffffffffffff, got: %lld", uresult);
    566  lastError = (char *)SDL_GetError();
    567  SDLTest_AssertPass("SDL_GetError()");
    568  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    569
    570  /* RandomUintXBoundaryValue(0, 0xffffffffffffffff, SDL_FALSE) returns 0 (sets error) */
    571  uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(0, (Uint64)0xffffffffffffffffULL, SDL_FALSE);
    572  SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
    573  SDLTest_AssertCheck(
    574    uresult == 0,
    575    "Validate result value for parameters(0,0xffffffffffffffff,SDL_FALSE); expected: 0, got: %lld", uresult);
    576  lastError = (char *)SDL_GetError();
    577  SDLTest_AssertPass("SDL_GetError()");
    578  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
    579             "SDL_GetError(): expected message '%s', was message: '%s'",
    580             expectedError,
    581             lastError);
    582
    583  /* Clear error messages */
    584  SDL_ClearError();
    585  SDLTest_AssertPass("SDL_ClearError()");
    586
    587  return TEST_COMPLETED;
    588}
    589
    590/*
    591 * @brief Calls to random boundary number generators for Sint8
    592 */
    593int
    594sdltest_randomBoundaryNumberSint8(void *arg)
    595{
    596  const char *expectedError = "That operation is not supported";
    597  char *lastError;
    598  Sint64 sresult;
    599
    600  /* Clean error messages */
    601  SDL_ClearError();
    602  SDLTest_AssertPass("SDL_ClearError()");
    603
    604  /* RandomSintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
    605  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 10, SDL_TRUE);
    606  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    607  SDLTest_AssertCheck(
    608    sresult == 10,
    609    "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %lld", sresult);
    610
    611  /* RandomSintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
    612  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 11, SDL_TRUE);
    613  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    614  SDLTest_AssertCheck(
    615    sresult == 10 || sresult == 11,
    616    "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %lld", sresult);
    617
    618  /* RandomSintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
    619  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 12, SDL_TRUE);
    620  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    621  SDLTest_AssertCheck(
    622    sresult == 10 || sresult == 11 || sresult == 12,
    623    "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %lld", sresult);
    624
    625  /* RandomSintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
    626  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 13, SDL_TRUE);
    627  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    628  SDLTest_AssertCheck(
    629    sresult == 10 || sresult == 11 || sresult == 12 || sresult == 13,
    630    "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %lld", sresult);
    631
    632  /* RandomSintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
    633  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 20, SDL_TRUE);
    634  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    635  SDLTest_AssertCheck(
    636    sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
    637    "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %lld", sresult);
    638
    639  /* RandomSintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
    640  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(20, 10, SDL_TRUE);
    641  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    642  SDLTest_AssertCheck(
    643    sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
    644    "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %lld", sresult);
    645
    646  /* RandomSintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
    647  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(1, 20, SDL_FALSE);
    648  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    649  SDLTest_AssertCheck(
    650    sresult == 0 || sresult == 21,
    651    "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %lld", sresult);
    652
    653  /* RandomSintXBoundaryValue(SCHAR_MIN, 99, SDL_FALSE) returns 100 */
    654  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(SCHAR_MIN, 99, SDL_FALSE);
    655  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    656  SDLTest_AssertCheck(
    657    sresult == 100,
    658    "Validate result value for parameters (SCHAR_MIN,99,SDL_FALSE); expected: 100, got: %lld", sresult);
    659
    660  /* RandomSintXBoundaryValue(SCHAR_MIN + 1, SCHAR_MAX, SDL_FALSE) returns SCHAR_MIN (no error) */
    661  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(SCHAR_MIN + 1, SCHAR_MAX, SDL_FALSE);
    662  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    663  SDLTest_AssertCheck(
    664    sresult == SCHAR_MIN,
    665    "Validate result value for parameters (SCHAR_MIN + 1,SCHAR_MAX,SDL_FALSE); expected: %d, got: %lld", SCHAR_MIN, sresult);
    666  lastError = (char *)SDL_GetError();
    667  SDLTest_AssertPass("SDL_GetError()");
    668  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    669
    670  /* RandomSintXBoundaryValue(SCHAR_MIN, SCHAR_MAX - 1, SDL_FALSE) returns SCHAR_MAX (no error) */
    671  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(SCHAR_MIN, SCHAR_MAX -1, SDL_FALSE);
    672  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    673  SDLTest_AssertCheck(
    674    sresult == SCHAR_MAX,
    675    "Validate result value for parameters (SCHAR_MIN,SCHAR_MAX - 1,SDL_FALSE); expected: %d, got: %lld", SCHAR_MAX, sresult);
    676  lastError = (char *)SDL_GetError();
    677  SDLTest_AssertPass("SDL_GetError()");
    678  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    679
    680  /* RandomSintXBoundaryValue(SCHAR_MIN, SCHAR_MAX, SDL_FALSE) returns SCHAR_MIN (sets error) */
    681  sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(SCHAR_MIN, SCHAR_MAX, SDL_FALSE);
    682  SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
    683  SDLTest_AssertCheck(
    684    sresult == SCHAR_MIN,
    685    "Validate result value for parameters(SCHAR_MIN,SCHAR_MAX,SDL_FALSE); expected: %d, got: %lld", SCHAR_MIN, sresult);
    686  lastError = (char *)SDL_GetError();
    687  SDLTest_AssertPass("SDL_GetError()");
    688  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
    689             "SDL_GetError(): expected message '%s', was message: '%s'",
    690             expectedError,
    691             lastError);
    692
    693  /* Clear error messages */
    694  SDL_ClearError();
    695  SDLTest_AssertPass("SDL_ClearError()");
    696
    697  return TEST_COMPLETED;
    698}
    699
    700/*
    701 * @brief Calls to random boundary number generators for Sint16
    702 */
    703int
    704sdltest_randomBoundaryNumberSint16(void *arg)
    705{
    706  const char *expectedError = "That operation is not supported";
    707  char *lastError;
    708  Sint64 sresult;
    709
    710  /* Clean error messages */
    711  SDL_ClearError();
    712  SDLTest_AssertPass("SDL_ClearError()");
    713
    714  /* RandomSintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
    715  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 10, SDL_TRUE);
    716  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    717  SDLTest_AssertCheck(
    718    sresult == 10,
    719    "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %lld", sresult);
    720
    721  /* RandomSintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
    722  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 11, SDL_TRUE);
    723  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    724  SDLTest_AssertCheck(
    725    sresult == 10 || sresult == 11,
    726    "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %lld", sresult);
    727
    728  /* RandomSintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
    729  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 12, SDL_TRUE);
    730  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    731  SDLTest_AssertCheck(
    732    sresult == 10 || sresult == 11 || sresult == 12,
    733    "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %lld", sresult);
    734
    735  /* RandomSintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
    736  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 13, SDL_TRUE);
    737  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    738  SDLTest_AssertCheck(
    739    sresult == 10 || sresult == 11 || sresult == 12 || sresult == 13,
    740    "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %lld", sresult);
    741
    742  /* RandomSintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
    743  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 20, SDL_TRUE);
    744  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    745  SDLTest_AssertCheck(
    746    sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
    747    "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %lld", sresult);
    748
    749  /* RandomSintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
    750  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(20, 10, SDL_TRUE);
    751  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    752  SDLTest_AssertCheck(
    753    sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
    754    "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %lld", sresult);
    755
    756  /* RandomSintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
    757  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(1, 20, SDL_FALSE);
    758  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    759  SDLTest_AssertCheck(
    760    sresult == 0 || sresult == 21,
    761    "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %lld", sresult);
    762
    763  /* RandomSintXBoundaryValue(SHRT_MIN, 99, SDL_FALSE) returns 100 */
    764  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(SHRT_MIN, 99, SDL_FALSE);
    765  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    766  SDLTest_AssertCheck(
    767    sresult == 100,
    768    "Validate result value for parameters (SHRT_MIN,99,SDL_FALSE); expected: 100, got: %lld", sresult);
    769
    770  /* RandomSintXBoundaryValue(SHRT_MIN + 1, SHRT_MAX, SDL_FALSE) returns SHRT_MIN (no error) */
    771  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(SHRT_MIN + 1, SHRT_MAX, SDL_FALSE);
    772  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    773  SDLTest_AssertCheck(
    774    sresult == SHRT_MIN,
    775    "Validate result value for parameters (SHRT_MIN+1,SHRT_MAX,SDL_FALSE); expected: %d, got: %lld", SHRT_MIN, sresult);
    776  lastError = (char *)SDL_GetError();
    777  SDLTest_AssertPass("SDL_GetError()");
    778  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    779
    780  /* RandomSintXBoundaryValue(SHRT_MIN, SHRT_MAX - 1, SDL_FALSE) returns SHRT_MAX (no error) */
    781  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(SHRT_MIN, SHRT_MAX - 1, SDL_FALSE);
    782  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    783  SDLTest_AssertCheck(
    784    sresult == SHRT_MAX,
    785    "Validate result value for parameters (SHRT_MIN,SHRT_MAX - 1,SDL_FALSE); expected: %d, got: %lld", SHRT_MAX, sresult);
    786  lastError = (char *)SDL_GetError();
    787  SDLTest_AssertPass("SDL_GetError()");
    788  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    789
    790  /* RandomSintXBoundaryValue(SHRT_MIN, SHRT_MAX, SDL_FALSE) returns 0 (sets error) */
    791  sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(SHRT_MIN, SHRT_MAX, SDL_FALSE);
    792  SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
    793  SDLTest_AssertCheck(
    794    sresult == SHRT_MIN,
    795    "Validate result value for parameters(SHRT_MIN,SHRT_MAX,SDL_FALSE); expected: %d, got: %lld", SHRT_MIN, sresult);
    796  lastError = (char *)SDL_GetError();
    797  SDLTest_AssertPass("SDL_GetError()");
    798  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
    799             "SDL_GetError(): expected message '%s', was message: '%s'",
    800             expectedError,
    801             lastError);
    802
    803  /* Clear error messages */
    804  SDL_ClearError();
    805  SDLTest_AssertPass("SDL_ClearError()");
    806
    807  return TEST_COMPLETED;
    808}
    809
    810/*
    811 * @brief Calls to random boundary number generators for Sint32
    812 */
    813int
    814sdltest_randomBoundaryNumberSint32(void *arg)
    815{
    816  const char *expectedError = "That operation is not supported";
    817  char *lastError;
    818  Sint64 sresult;
    819#if ((ULONG_MAX) == (UINT_MAX))
    820  Sint32 long_min = LONG_MIN;
    821  Sint32 long_max = LONG_MAX;
    822#else
    823  Sint32 long_min = INT_MIN;
    824  Sint32 long_max = INT_MAX;
    825#endif
    826
    827  /* Clean error messages */
    828  SDL_ClearError();
    829  SDLTest_AssertPass("SDL_ClearError()");
    830
    831  /* RandomSintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
    832  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 10, SDL_TRUE);
    833  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    834  SDLTest_AssertCheck(
    835    sresult == 10,
    836    "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %lld", sresult);
    837
    838  /* RandomSintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
    839  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 11, SDL_TRUE);
    840  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    841  SDLTest_AssertCheck(
    842    sresult == 10 || sresult == 11,
    843    "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %lld", sresult);
    844
    845  /* RandomSintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
    846  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 12, SDL_TRUE);
    847  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    848  SDLTest_AssertCheck(
    849    sresult == 10 || sresult == 11 || sresult == 12,
    850    "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %lld", sresult);
    851
    852  /* RandomSintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
    853  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 13, SDL_TRUE);
    854  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    855  SDLTest_AssertCheck(
    856    sresult == 10 || sresult == 11 || sresult == 12 || sresult == 13,
    857    "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %lld", sresult);
    858
    859  /* RandomSintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
    860  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 20, SDL_TRUE);
    861  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    862  SDLTest_AssertCheck(
    863    sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
    864    "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %lld", sresult);
    865
    866  /* RandomSintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
    867  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(20, 10, SDL_TRUE);
    868  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    869  SDLTest_AssertCheck(
    870    sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
    871    "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %lld", sresult);
    872
    873  /* RandomSintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
    874  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(1, 20, SDL_FALSE);
    875  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    876  SDLTest_AssertCheck(
    877    sresult == 0 || sresult == 21,
    878    "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %lld", sresult);
    879
    880  /* RandomSintXBoundaryValue(LONG_MIN, 99, SDL_FALSE) returns 100 */
    881  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(long_min, 99, SDL_FALSE);
    882  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    883  SDLTest_AssertCheck(
    884    sresult == 100,
    885    "Validate result value for parameters (LONG_MIN,99,SDL_FALSE); expected: 100, got: %lld", sresult);
    886
    887  /* RandomSintXBoundaryValue(LONG_MIN + 1, LONG_MAX, SDL_FALSE) returns LONG_MIN (no error) */
    888  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(long_min + 1, long_max, SDL_FALSE);
    889  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    890  SDLTest_AssertCheck(
    891    sresult == long_min,
    892    "Validate result value for parameters (LONG_MIN+1,LONG_MAX,SDL_FALSE); expected: %d, got: %lld", long_min, sresult);
    893  lastError = (char *)SDL_GetError();
    894  SDLTest_AssertPass("SDL_GetError()");
    895  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    896
    897  /* RandomSintXBoundaryValue(LONG_MIN, LONG_MAX - 1, SDL_FALSE) returns LONG_MAX (no error) */
    898  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(long_min, long_max - 1, SDL_FALSE);
    899  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    900  SDLTest_AssertCheck(
    901    sresult == long_max,
    902    "Validate result value for parameters (LONG_MIN,LONG_MAX - 1,SDL_FALSE); expected: %d, got: %lld", long_max, sresult);
    903  lastError = (char *)SDL_GetError();
    904  SDLTest_AssertPass("SDL_GetError()");
    905  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
    906
    907  /* RandomSintXBoundaryValue(LONG_MIN, LONG_MAX, SDL_FALSE) returns 0 (sets error) */
    908  sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(long_min, long_max, SDL_FALSE);
    909  SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
    910  SDLTest_AssertCheck(
    911    sresult == long_min,
    912    "Validate result value for parameters(LONG_MIN,LONG_MAX,SDL_FALSE); expected: %d, got: %lld", long_min, sresult);
    913  lastError = (char *)SDL_GetError();
    914  SDLTest_AssertPass("SDL_GetError()");
    915  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
    916             "SDL_GetError(): expected message '%s', was message: '%s'",
    917             expectedError,
    918             lastError);
    919
    920  /* Clear error messages */
    921  SDL_ClearError();
    922  SDLTest_AssertPass("SDL_ClearError()");
    923
    924  return TEST_COMPLETED;
    925}
    926
    927/*
    928 * @brief Calls to random boundary number generators for Sint64
    929 */
    930int
    931sdltest_randomBoundaryNumberSint64(void *arg)
    932{
    933  const char *expectedError = "That operation is not supported";
    934  char *lastError;
    935  Sint64 sresult;
    936
    937  /* Clean error messages */
    938  SDL_ClearError();
    939  SDLTest_AssertPass("SDL_ClearError()");
    940
    941  /* RandomSintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
    942  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 10, SDL_TRUE);
    943  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
    944  SDLTest_AssertCheck(
    945    sresult == 10,
    946    "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %lld", sresult);
    947
    948  /* RandomSintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
    949  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 11, SDL_TRUE);
    950  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
    951  SDLTest_AssertCheck(
    952    sresult == 10 || sresult == 11,
    953    "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %lld", sresult);
    954
    955  /* RandomSintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
    956  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 12, SDL_TRUE);
    957  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
    958  SDLTest_AssertCheck(
    959    sresult == 10 || sresult == 11 || sresult == 12,
    960    "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %lld", sresult);
    961
    962  /* RandomSintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
    963  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 13, SDL_TRUE);
    964  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
    965  SDLTest_AssertCheck(
    966    sresult == 10 || sresult == 11 || sresult == 12 || sresult == 13,
    967    "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %lld", sresult);
    968
    969  /* RandomSintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
    970  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 20, SDL_TRUE);
    971  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
    972  SDLTest_AssertCheck(
    973    sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
    974    "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %lld", sresult);
    975
    976  /* RandomSintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
    977  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(20, 10, SDL_TRUE);
    978  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
    979  SDLTest_AssertCheck(
    980    sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
    981    "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %lld", sresult);
    982
    983  /* RandomSintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
    984  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(1, 20, SDL_FALSE);
    985  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
    986  SDLTest_AssertCheck(
    987    sresult == 0 || sresult == 21,
    988    "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %lld", sresult);
    989
    990  /* RandomSintXBoundaryValue(LLONG_MIN, 99, SDL_FALSE) returns 100 */
    991  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(LLONG_MIN, 99, SDL_FALSE);
    992  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
    993  SDLTest_AssertCheck(
    994    sresult == 100,
    995    "Validate result value for parameters (LLONG_MIN,99,SDL_FALSE); expected: 100, got: %lld", sresult);
    996
    997  /* RandomSintXBoundaryValue(LLONG_MIN + 1, LLONG_MAX, SDL_FALSE) returns LLONG_MIN (no error) */
    998  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(LLONG_MIN + 1, LLONG_MAX, SDL_FALSE);
    999  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
   1000  SDLTest_AssertCheck(
   1001    sresult == LLONG_MIN,
   1002    "Validate result value for parameters (LLONG_MIN+1,LLONG_MAX,SDL_FALSE); expected: %lld, got: %lld", LLONG_MIN, sresult);
   1003  lastError = (char *)SDL_GetError();
   1004  SDLTest_AssertPass("SDL_GetError()");
   1005  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
   1006
   1007  /* RandomSintXBoundaryValue(LLONG_MIN, LLONG_MAX - 1, SDL_FALSE) returns LLONG_MAX (no error) */
   1008  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(LLONG_MIN, LLONG_MAX - 1, SDL_FALSE);
   1009  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
   1010  SDLTest_AssertCheck(
   1011    sresult == LLONG_MAX,
   1012    "Validate result value for parameters (LLONG_MIN,LLONG_MAX - 1,SDL_FALSE); expected: %lld, got: %lld", LLONG_MAX, sresult);
   1013  lastError = (char *)SDL_GetError();
   1014  SDLTest_AssertPass("SDL_GetError()");
   1015  SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
   1016
   1017  /* RandomSintXBoundaryValue(LLONG_MIN, LLONG_MAX, SDL_FALSE) returns 0 (sets error) */
   1018  sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(LLONG_MIN, LLONG_MAX, SDL_FALSE);
   1019  SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
   1020  SDLTest_AssertCheck(
   1021    sresult == LLONG_MIN,
   1022    "Validate result value for parameters(LLONG_MIN,LLONG_MAX,SDL_FALSE); expected: %lld, got: %lld", LLONG_MIN, sresult);
   1023  lastError = (char *)SDL_GetError();
   1024  SDLTest_AssertPass("SDL_GetError()");
   1025  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
   1026             "SDL_GetError(): expected message '%s', was message: '%s'",
   1027             expectedError,
   1028             lastError);
   1029
   1030  /* Clear error messages */
   1031  SDL_ClearError();
   1032  SDLTest_AssertPass("SDL_ClearError()");
   1033
   1034  return TEST_COMPLETED;
   1035}
   1036
   1037/**
   1038 * @brief Calls to SDLTest_RandomIntegerInRange
   1039 */
   1040int
   1041sdltest_randomIntegerInRange(void *arg)
   1042{
   1043  Sint32 min, max;
   1044  Sint32 result;
   1045#if ((ULONG_MAX) == (UINT_MAX))
   1046  Sint32 long_min = LONG_MIN;
   1047  Sint32 long_max = LONG_MAX;
   1048#else
   1049  Sint32 long_min = INT_MIN;
   1050  Sint32 long_max = INT_MAX;
   1051#endif
   1052
   1053  /* Standard range */
   1054  min = (Sint32)SDLTest_RandomSint16();
   1055  max = min + (Sint32)SDLTest_RandomUint8() + 2;
   1056  result = SDLTest_RandomIntegerInRange(min, max);
   1057  SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(min,max)");
   1058  SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%d,%d], got: %d", min, max, result);
   1059
   1060  /* One Range */
   1061  min = (Sint32)SDLTest_RandomSint16();
   1062  max = min + 1;
   1063  result = SDLTest_RandomIntegerInRange(min, max);
   1064  SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(min,min+1)");
   1065  SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%d,%d], got: %d", min, max, result);
   1066
   1067  /* Zero range */
   1068  min = (Sint32)SDLTest_RandomSint16();
   1069  max = min;
   1070  result = SDLTest_RandomIntegerInRange(min, max);
   1071  SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(min,min)");
   1072  SDLTest_AssertCheck(min == result, "Validated returned value; expected: %d, got: %d", min, result);
   1073
   1074  /* Zero range at zero */
   1075  min = 0;
   1076  max = 0;
   1077  result = SDLTest_RandomIntegerInRange(min, max);
   1078  SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(0,0)");
   1079  SDLTest_AssertCheck(result == 0, "Validated returned value; expected: 0, got: %d", min, max, result);
   1080
   1081  /* Swapped min-max */
   1082  min = (Sint32)SDLTest_RandomSint16();
   1083  max = min + (Sint32)SDLTest_RandomUint8() + 2;
   1084  result = SDLTest_RandomIntegerInRange(max, min);
   1085  SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(max,min)");
   1086  SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%d,%d], got: %d", min, max, result);
   1087
   1088  /* Range with min at integer limit */
   1089  min = long_min;
   1090  max = long_max + (Sint32)SDLTest_RandomSint16();
   1091  result = SDLTest_RandomIntegerInRange(min, max);
   1092  SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(SINT32_MIN,...)");
   1093  SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%d,%d], got: %d", min, max, result);
   1094
   1095  /* Range with max at integer limit */
   1096  min = long_min - (Sint32)SDLTest_RandomSint16();;
   1097  max = long_max;
   1098  result = SDLTest_RandomIntegerInRange(min, max);
   1099  SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(...,SINT32_MAX)");
   1100  SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%d,%d], got: %d", min, max, result);
   1101
   1102  /* Full integer range */
   1103  min = long_min;
   1104  max = long_max;
   1105  result = SDLTest_RandomIntegerInRange(min, max);
   1106  SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(SINT32_MIN,SINT32_MAX)");
   1107  SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%d,%d], got: %d", min, max, result);
   1108
   1109  return TEST_COMPLETED;
   1110}
   1111
   1112/**
   1113 * @brief Calls to SDLTest_RandomAsciiString
   1114 */
   1115int
   1116sdltest_randomAsciiString(void *arg)
   1117{
   1118  char* result;
   1119  int len;
   1120  int nonAsciiCharacters;
   1121  int i;
   1122
   1123  result = SDLTest_RandomAsciiString();
   1124  SDLTest_AssertPass("Call to SDLTest_RandomAsciiString()");
   1125  SDLTest_AssertCheck(result != NULL, "Validate that result is not NULL");
   1126  if (result != NULL) {
   1127     len = SDL_strlen(result);
   1128     SDLTest_AssertCheck(len >= 0 && len <= 255, "Validate that result length; expected: len=[1,255], got: %d", len);
   1129     nonAsciiCharacters = 0;
   1130     for (i=0; i<len; i++) {
   1131       if (iscntrl(result[i])) {
   1132         nonAsciiCharacters++;
   1133       }
   1134     }
   1135     SDLTest_AssertCheck(nonAsciiCharacters == 0, "Validate that result does not contain non-Ascii characters, got: %d", nonAsciiCharacters);
   1136     if (nonAsciiCharacters) {
   1137        SDLTest_LogError("Invalid result from generator: '%s'", result);
   1138     }
   1139     SDL_free(result);
   1140  }
   1141
   1142  return TEST_COMPLETED;
   1143}
   1144
   1145
   1146/**
   1147 * @brief Calls to SDLTest_RandomAsciiStringWithMaximumLength
   1148 */
   1149int
   1150sdltest_randomAsciiStringWithMaximumLength(void *arg)
   1151{
   1152  const char* expectedError = "Parameter 'maxLength' is invalid";
   1153  char* lastError;
   1154  char* result;
   1155  int targetLen;
   1156  int len;
   1157  int nonAsciiCharacters;
   1158  int i;
   1159
   1160  targetLen = 16 + SDLTest_RandomUint8();
   1161  result = SDLTest_RandomAsciiStringWithMaximumLength(targetLen);
   1162  SDLTest_AssertPass("Call to SDLTest_RandomAsciiStringWithMaximumLength(%d)", targetLen);
   1163  SDLTest_AssertCheck(result != NULL, "Validate that result is not NULL");
   1164  if (result != NULL) {
   1165     len = SDL_strlen(result);
   1166     SDLTest_AssertCheck(len >= 0 && len <= targetLen, "Validate that result length; expected: len=[1,%d], got: %d", targetLen, len);
   1167     nonAsciiCharacters = 0;
   1168     for (i=0; i<len; i++) {
   1169       if (iscntrl(result[i])) {
   1170         nonAsciiCharacters++;
   1171       }
   1172     }
   1173     SDLTest_AssertCheck(nonAsciiCharacters == 0, "Validate that result does not contain non-Ascii characters, got: %d", nonAsciiCharacters);
   1174     if (nonAsciiCharacters) {
   1175        SDLTest_LogError("Invalid result from generator: '%s'", result);
   1176     }
   1177     SDL_free(result);
   1178  }
   1179
   1180  /* Negative test */
   1181  targetLen = 0;
   1182  result = SDLTest_RandomAsciiStringWithMaximumLength(targetLen);
   1183  SDLTest_AssertPass("Call to SDLTest_RandomAsciiStringWithMaximumLength(%d)", targetLen);
   1184  SDLTest_AssertCheck(result == NULL, "Validate that result is NULL");
   1185  lastError = (char *)SDL_GetError();
   1186  SDLTest_AssertPass("SDL_GetError()");
   1187  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
   1188             "SDL_GetError(): expected message '%s', was message: '%s'",
   1189             expectedError,
   1190             lastError);
   1191
   1192  /* Clear error messages */
   1193  SDL_ClearError();
   1194  SDLTest_AssertPass("SDL_ClearError()");
   1195
   1196  return TEST_COMPLETED;
   1197}
   1198
   1199/**
   1200 * @brief Calls to SDLTest_RandomAsciiStringOfSize
   1201 */
   1202int
   1203sdltest_randomAsciiStringOfSize(void *arg)
   1204{
   1205  const char* expectedError = "Parameter 'size' is invalid";
   1206  char* lastError;
   1207  char* result;
   1208  int targetLen;
   1209  int len;
   1210  int nonAsciiCharacters;
   1211  int i;
   1212
   1213  /* Positive test */
   1214  targetLen = 16 + SDLTest_RandomUint8();
   1215  result = SDLTest_RandomAsciiStringOfSize(targetLen);
   1216  SDLTest_AssertPass("Call to SDLTest_RandomAsciiStringOfSize(%d)", targetLen);
   1217  SDLTest_AssertCheck(result != NULL, "Validate that result is not NULL");
   1218  if (result != NULL) {
   1219     len = SDL_strlen(result);
   1220     SDLTest_AssertCheck(len == targetLen, "Validate that result length; expected: len=%d, got: %d", targetLen, len);
   1221     nonAsciiCharacters = 0;
   1222     for (i=0; i<len; i++) {
   1223       if (iscntrl(result[i])) {
   1224         nonAsciiCharacters++;
   1225       }
   1226     }
   1227     SDLTest_AssertCheck(nonAsciiCharacters == 0, "Validate that result does not contain non-ASCII characters, got: %d", nonAsciiCharacters);
   1228     if (nonAsciiCharacters) {
   1229        SDLTest_LogError("Invalid result from generator: '%s'", result);
   1230     }
   1231     SDL_free(result);
   1232  }
   1233
   1234  /* Negative test */
   1235  targetLen = 0;
   1236  result = SDLTest_RandomAsciiStringOfSize(targetLen);
   1237  SDLTest_AssertPass("Call to SDLTest_RandomAsciiStringOfSize(%d)", targetLen);
   1238  SDLTest_AssertCheck(result == NULL, "Validate that result is NULL");
   1239  lastError = (char *)SDL_GetError();
   1240  SDLTest_AssertPass("SDL_GetError()");
   1241  SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
   1242             "SDL_GetError(): expected message '%s', was message: '%s'",
   1243             expectedError,
   1244             lastError);
   1245
   1246  /* Clear error messages */
   1247  SDL_ClearError();
   1248  SDLTest_AssertPass("SDL_ClearError()");
   1249
   1250  return TEST_COMPLETED;
   1251}
   1252
   1253
   1254/* ================= Test References ================== */
   1255
   1256/* SDL_test test cases */
   1257static const SDLTest_TestCaseReference sdltestTest1 =
   1258        { (SDLTest_TestCaseFp)sdltest_getFuzzerInvocationCount, "sdltest_getFuzzerInvocationCount", "Call to sdltest_GetFuzzerInvocationCount", TEST_ENABLED };
   1259
   1260static const SDLTest_TestCaseReference sdltestTest2 =
   1261        { (SDLTest_TestCaseFp)sdltest_randomNumber, "sdltest_randomNumber", "Calls to random number generators", TEST_ENABLED };
   1262
   1263static const SDLTest_TestCaseReference sdltestTest3 =
   1264        { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberUint8, "sdltest_randomBoundaryNumberUint8", "Calls to random boundary number generators for Uint8", TEST_ENABLED };
   1265
   1266static const SDLTest_TestCaseReference sdltestTest4 =
   1267        { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberUint16, "sdltest_randomBoundaryNumberUint16", "Calls to random boundary number generators for Uint16", TEST_ENABLED };
   1268
   1269static const SDLTest_TestCaseReference sdltestTest5 =
   1270        { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberUint32, "sdltest_randomBoundaryNumberUint32", "Calls to random boundary number generators for Uint32", TEST_ENABLED };
   1271
   1272static const SDLTest_TestCaseReference sdltestTest6 =
   1273        { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberUint64, "sdltest_randomBoundaryNumberUint64", "Calls to random boundary number generators for Uint64", TEST_ENABLED };
   1274
   1275static const SDLTest_TestCaseReference sdltestTest7 =
   1276        { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberSint8, "sdltest_randomBoundaryNumberSint8", "Calls to random boundary number generators for Sint8", TEST_ENABLED };
   1277
   1278static const SDLTest_TestCaseReference sdltestTest8 =
   1279        { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberSint16, "sdltest_randomBoundaryNumberSint16", "Calls to random boundary number generators for Sint16", TEST_ENABLED };
   1280
   1281static const SDLTest_TestCaseReference sdltestTest9 =
   1282        { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberSint32, "sdltest_randomBoundaryNumberSint32", "Calls to random boundary number generators for Sint32", TEST_ENABLED };
   1283
   1284static const SDLTest_TestCaseReference sdltestTest10 =
   1285        { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberSint64, "sdltest_randomBoundaryNumberSint64", "Calls to random boundary number generators for Sint64", TEST_ENABLED };
   1286
   1287static const SDLTest_TestCaseReference sdltestTest11 =
   1288        { (SDLTest_TestCaseFp)sdltest_randomIntegerInRange, "sdltest_randomIntegerInRange", "Calls to ranged random number generator", TEST_ENABLED };
   1289
   1290static const SDLTest_TestCaseReference sdltestTest12 =
   1291        { (SDLTest_TestCaseFp)sdltest_randomAsciiString, "sdltest_randomAsciiString", "Calls to default ASCII string generator", TEST_ENABLED };
   1292
   1293static const SDLTest_TestCaseReference sdltestTest13 =
   1294        { (SDLTest_TestCaseFp)sdltest_randomAsciiStringWithMaximumLength, "sdltest_randomAsciiStringWithMaximumLength", "Calls to random maximum length ASCII string generator", TEST_ENABLED };
   1295
   1296static const SDLTest_TestCaseReference sdltestTest14 =
   1297        { (SDLTest_TestCaseFp)sdltest_randomAsciiStringOfSize, "sdltest_randomAsciiStringOfSize", "Calls to fixed size ASCII string generator", TEST_ENABLED };
   1298
   1299static const SDLTest_TestCaseReference sdltestTest15 =
   1300        { (SDLTest_TestCaseFp)sdltest_generateRunSeed, "sdltest_generateRunSeed", "Checks internal harness function SDLTest_GenerateRunSeed", TEST_ENABLED };
   1301
   1302/* Sequence of SDL_test test cases */
   1303static const SDLTest_TestCaseReference *sdltestTests[] =  {
   1304    &sdltestTest1, &sdltestTest2, &sdltestTest3, &sdltestTest4, &sdltestTest5, &sdltestTest6,
   1305    &sdltestTest7, &sdltestTest8, &sdltestTest9, &sdltestTest10, &sdltestTest11, &sdltestTest12,
   1306    &sdltestTest13, &sdltestTest14, &sdltestTest15, NULL
   1307};
   1308
   1309/* SDL_test test suite (global) */
   1310SDLTest_TestSuiteReference sdltestTestSuite = {
   1311    "SDLtest",
   1312    NULL,
   1313    sdltestTests,
   1314    NULL
   1315};