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