test/testautomation_sdltest.c
author Sam Lantinga <slouken@libsdl.org>
Fri, 28 Nov 2014 04:51:33 -0800
changeset 9246 a761913e5e91
parent 8605 57faccca4fab
child 9254 6c469ea796e4
permissions -rw-r--r--
Fixed bug 2786 - "UCS-2-INTERNAL" iconv encoding is not supported everywhere, use UTF-16LE instead

Jonas Kulla

src/main/windows/SDL_windows_main.c:137:
cmdline = SDL_iconv_string("UTF-8", "UCS-2-INTERNAL", (char *)(text), (SDL_wcslen(text)+1)*sizeof(WCHAR));

I'm trying to compile an SDL2 application for windows using the mingw-w64 32bit toolchain provided by my distro (Fedora 19). However, even the simplest test program that does nothing at all fails to startup with a "Fatal error - out of memory" message because the mingw iconv library provided by my distro does not support the "UCS-2-INTERNAL" encoding and the conversion returns null.

From my little bit of research, it turns out that even though this encoding is supported by the external GNU libiconv library, some glibc versions (?) don't support it with their internal iconv routines, and will instead provide the native endian encoding when "UCS-2" is specified.

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