test/testautomation_platform.c
author Ryan C. Gordon <icculus@icculus.org>
Tue, 12 Dec 2017 22:25:39 -0500
changeset 11775 c5ecf88a2ddc
parent 11416 7e7d8a125d6a
permissions -rw-r--r--
windows: Fixed a comment.
aschiffler@6756
     1
/**
aschiffler@6756
     2
 * Original code: automated SDL platform test written by Edgar Simo "bobbens"
aschiffler@6756
     3
 * Extended and updated by aschiffler at ferzkopp dot net
aschiffler@6756
     4
 */
aschiffler@6756
     5
aschiffler@6756
     6
#include <stdio.h>
aschiffler@6756
     7
aschiffler@6756
     8
#include "SDL.h"
aschiffler@6756
     9
#include "SDL_test.h"
aschiffler@6756
    10
aschiffler@6756
    11
/* ================= Test Case Implementation ================== */
aschiffler@6756
    12
aschiffler@6756
    13
/* Helper functions */
aschiffler@6756
    14
aschiffler@6756
    15
/**
aschiffler@6756
    16
 * @brief Compare sizes of types.
aschiffler@6756
    17
 *
aschiffler@6756
    18
 * @note Watcom C flags these as Warning 201: "Unreachable code" if you just
aschiffler@6756
    19
 *  compare them directly, so we push it through a function to keep the
aschiffler@6756
    20
 *  compiler quiet.  --ryan.
aschiffler@6756
    21
 */
aschiffler@6756
    22
static int _compareSizeOfType( size_t sizeoftype, size_t hardcodetype )
aschiffler@6756
    23
{
aschiffler@6756
    24
    return sizeoftype != hardcodetype;
aschiffler@6756
    25
}
aschiffler@6756
    26
aschiffler@6756
    27
/* Test case functions */
aschiffler@6756
    28
aschiffler@6756
    29
/**
aschiffler@6756
    30
 * @brief Tests type sizes.
aschiffler@6756
    31
 */
aschiffler@6756
    32
int platform_testTypes(void *arg)
aschiffler@6756
    33
{
aschiffler@6756
    34
   int ret;
aschiffler@6756
    35
aschiffler@6756
    36
   ret = _compareSizeOfType( sizeof(Uint8), 1 );
aschiffler@9254
    37
   SDLTest_AssertCheck( ret == 0, "sizeof(Uint8) = %lu, expected  1", (unsigned long)sizeof(Uint8) );
aschiffler@6756
    38
aschiffler@6756
    39
   ret = _compareSizeOfType( sizeof(Uint16), 2 );
aschiffler@9254
    40
   SDLTest_AssertCheck( ret == 0, "sizeof(Uint16) = %lu, expected 2", (unsigned long)sizeof(Uint16) );
aschiffler@6756
    41
aschiffler@6756
    42
   ret = _compareSizeOfType( sizeof(Uint32), 4 );
aschiffler@9254
    43
   SDLTest_AssertCheck( ret == 0, "sizeof(Uint32) = %lu, expected 4", (unsigned long)sizeof(Uint32) );
aschiffler@6756
    44
aschiffler@6756
    45
   ret = _compareSizeOfType( sizeof(Uint64), 8 );
aschiffler@9254
    46
   SDLTest_AssertCheck( ret == 0, "sizeof(Uint64) = %lu, expected 8", (unsigned long)sizeof(Uint64) );
aschiffler@6756
    47
aschiffler@6756
    48
   return TEST_COMPLETED;
aschiffler@6756
    49
}
aschiffler@6756
    50
aschiffler@6756
    51
/**
aschiffler@6756
    52
 * @brief Tests platform endianness and SDL_SwapXY functions.
aschiffler@6756
    53
 */
aschiffler@6756
    54
int platform_testEndianessAndSwap(void *arg)
aschiffler@6756
    55
{
aschiffler@6756
    56
    int real_byteorder;
aschiffler@6756
    57
    Uint16 value = 0x1234;
aschiffler@6756
    58
    Uint16 value16 = 0xCDAB;
aschiffler@6756
    59
    Uint16 swapped16 = 0xABCD;
aschiffler@6756
    60
    Uint32 value32 = 0xEFBEADDE;
aschiffler@6756
    61
    Uint32 swapped32 = 0xDEADBEEF;
aschiffler@6756
    62
aschiffler@6756
    63
    Uint64 value64, swapped64;
aschiffler@6756
    64
    value64 = 0xEFBEADDE;
aschiffler@6756
    65
    value64 <<= 32;
aschiffler@6756
    66
    value64 |= 0xCDAB3412;
aschiffler@6756
    67
    swapped64 = 0x1234ABCD;
aschiffler@6756
    68
    swapped64 <<= 32;
aschiffler@6756
    69
    swapped64 |= 0xDEADBEEF;
aschiffler@6756
    70
aschiffler@6756
    71
    if ((*((char *) &value) >> 4) == 0x1) {
aschiffler@6756
    72
        real_byteorder = SDL_BIG_ENDIAN;
aschiffler@6756
    73
    } else {
aschiffler@6756
    74
        real_byteorder = SDL_LIL_ENDIAN;
aschiffler@6756
    75
    }
aschiffler@6756
    76
aschiffler@6756
    77
    /* Test endianness. */
aschiffler@6756
    78
    SDLTest_AssertCheck( real_byteorder == SDL_BYTEORDER,
aschiffler@6756
    79
             "Machine detected as %s endian, appears to be %s endian.",
aschiffler@6756
    80
             (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big",
aschiffler@6756
    81
             (real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big" );
aschiffler@6756
    82
aschiffler@6756
    83
    /* Test 16 swap. */
aschiffler@6756
    84
    SDLTest_AssertCheck( SDL_Swap16(value16) == swapped16,
aschiffler@6756
    85
             "SDL_Swap16(): 16 bit swapped: 0x%X => 0x%X",
aschiffler@6756
    86
             value16, SDL_Swap16(value16) );
aschiffler@6756
    87
aschiffler@6756
    88
    /* Test 32 swap. */
aschiffler@6756
    89
    SDLTest_AssertCheck( SDL_Swap32(value32) == swapped32,
aschiffler@6756
    90
             "SDL_Swap32(): 32 bit swapped: 0x%X => 0x%X",
aschiffler@6756
    91
             value32, SDL_Swap32(value32) );
aschiffler@6756
    92
aschiffler@6756
    93
    /* Test 64 swap. */
aschiffler@6756
    94
    SDLTest_AssertCheck( SDL_Swap64(value64) == swapped64,
urkle@9260
    95
             "SDL_Swap64(): 64 bit swapped: 0x%"SDL_PRIX64" => 0x%"SDL_PRIX64,
aschiffler@6756
    96
             value64, SDL_Swap64(value64) );
aschiffler@6756
    97
aschiffler@6756
    98
   return TEST_COMPLETED;
aschiffler@6756
    99
}
aschiffler@6756
   100
gabomdq@7678
   101
/* !
aschiffler@6756
   102
 * \brief Tests SDL_GetXYZ() functions
aschiffler@6756
   103
 * \sa
aschiffler@6756
   104
 * http://wiki.libsdl.org/moin.cgi/SDL_GetPlatform
aschiffler@6756
   105
 * http://wiki.libsdl.org/moin.cgi/SDL_GetCPUCount
aschiffler@6756
   106
 * http://wiki.libsdl.org/moin.cgi/SDL_GetCPUCacheLineSize
aschiffler@6756
   107
 * http://wiki.libsdl.org/moin.cgi/SDL_GetRevision
aschiffler@6756
   108
 * http://wiki.libsdl.org/moin.cgi/SDL_GetRevisionNumber
aschiffler@6756
   109
 */
aschiffler@6756
   110
int platform_testGetFunctions (void *arg)
aschiffler@6756
   111
{
aschiffler@6756
   112
   char *platform;
aschiffler@6756
   113
   char *revision;
aschiffler@6756
   114
   int ret;
icculus@11416
   115
   size_t len;
aschiffler@6756
   116
aschiffler@6756
   117
   platform = (char *)SDL_GetPlatform();
aschiffler@6756
   118
   SDLTest_AssertPass("SDL_GetPlatform()");
aschiffler@6756
   119
   SDLTest_AssertCheck(platform != NULL, "SDL_GetPlatform() != NULL");
aschiffler@6756
   120
   if (platform != NULL) {
aschiffler@6778
   121
     len = SDL_strlen(platform);
aschiffler@6756
   122
     SDLTest_AssertCheck(len > 0,
aschiffler@6756
   123
             "SDL_GetPlatform(): expected non-empty platform, was platform: '%s', len: %i",
aschiffler@6756
   124
             platform,
icculus@11416
   125
             (int) len);
aschiffler@6756
   126
   }
aschiffler@6756
   127
aschiffler@6756
   128
   ret = SDL_GetCPUCount();
aschiffler@6756
   129
   SDLTest_AssertPass("SDL_GetCPUCount()");
aschiffler@6756
   130
   SDLTest_AssertCheck(ret > 0,
aschiffler@6756
   131
             "SDL_GetCPUCount(): expected count > 0, was: %i",
aschiffler@6756
   132
             ret);
aschiffler@6756
   133
aschiffler@6756
   134
   ret = SDL_GetCPUCacheLineSize();
aschiffler@6756
   135
   SDLTest_AssertPass("SDL_GetCPUCacheLineSize()");
aschiffler@6756
   136
   SDLTest_AssertCheck(ret >= 0,
aschiffler@6756
   137
             "SDL_GetCPUCacheLineSize(): expected size >= 0, was: %i",
aschiffler@6756
   138
             ret);
aschiffler@6756
   139
aschiffler@6756
   140
   revision = (char *)SDL_GetRevision();
aschiffler@6756
   141
   SDLTest_AssertPass("SDL_GetRevision()");
aschiffler@6756
   142
   SDLTest_AssertCheck(revision != NULL, "SDL_GetRevision() != NULL");
aschiffler@6756
   143
aschiffler@6756
   144
   ret = SDL_GetRevisionNumber();
aschiffler@6756
   145
   SDLTest_AssertPass("SDL_GetRevisionNumber()");
aschiffler@6756
   146
aschiffler@6756
   147
   return TEST_COMPLETED;
aschiffler@6756
   148
}
aschiffler@6756
   149
gabomdq@7678
   150
/* !
aschiffler@6756
   151
 * \brief Tests SDL_HasXYZ() functions
aschiffler@6756
   152
 * \sa
aschiffler@6756
   153
 * http://wiki.libsdl.org/moin.cgi/SDL_Has3DNow
aschiffler@6756
   154
 * http://wiki.libsdl.org/moin.cgi/SDL_HasAltiVec
aschiffler@6756
   155
 * http://wiki.libsdl.org/moin.cgi/SDL_HasMMX
aschiffler@6756
   156
 * http://wiki.libsdl.org/moin.cgi/SDL_HasRDTSC
aschiffler@6756
   157
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE
aschiffler@6756
   158
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE2
aschiffler@6756
   159
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE3
aschiffler@6756
   160
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE41
aschiffler@6756
   161
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE42
slouken@8148
   162
 * http://wiki.libsdl.org/moin.cgi/SDL_HasAVX
aschiffler@6756
   163
 */
aschiffler@6756
   164
int platform_testHasFunctions (void *arg)
aschiffler@6756
   165
{
aschiffler@6756
   166
   int ret;
aschiffler@6756
   167
gabomdq@7663
   168
   /* TODO: independently determine and compare values as well */
aschiffler@6756
   169
aschiffler@6756
   170
   ret = SDL_HasRDTSC();
aschiffler@6756
   171
   SDLTest_AssertPass("SDL_HasRDTSC()");
aschiffler@6756
   172
aschiffler@6756
   173
   ret = SDL_HasAltiVec();
aschiffler@6756
   174
   SDLTest_AssertPass("SDL_HasAltiVec()");
aschiffler@6756
   175
aschiffler@6756
   176
   ret = SDL_HasMMX();
aschiffler@6756
   177
   SDLTest_AssertPass("SDL_HasMMX()");
aschiffler@6756
   178
aschiffler@6756
   179
   ret = SDL_Has3DNow();
aschiffler@6756
   180
   SDLTest_AssertPass("SDL_Has3DNow()");
aschiffler@6756
   181
aschiffler@6756
   182
   ret = SDL_HasSSE();
aschiffler@6756
   183
   SDLTest_AssertPass("SDL_HasSSE()");
aschiffler@6756
   184
aschiffler@6756
   185
   ret = SDL_HasSSE2();
aschiffler@6756
   186
   SDLTest_AssertPass("SDL_HasSSE2()");
aschiffler@6756
   187
aschiffler@6756
   188
   ret = SDL_HasSSE3();
aschiffler@6756
   189
   SDLTest_AssertPass("SDL_HasSSE3()");
aschiffler@6756
   190
aschiffler@6756
   191
   ret = SDL_HasSSE41();
aschiffler@6756
   192
   SDLTest_AssertPass("SDL_HasSSE41()");
aschiffler@6756
   193
aschiffler@6756
   194
   ret = SDL_HasSSE42();
aschiffler@6756
   195
   SDLTest_AssertPass("SDL_HasSSE42()");
aschiffler@6756
   196
slouken@8148
   197
   ret = SDL_HasAVX();
slouken@8148
   198
   SDLTest_AssertPass("SDL_HasAVX()");
slouken@8148
   199
aschiffler@6756
   200
   return TEST_COMPLETED;
aschiffler@6756
   201
}
aschiffler@6756
   202
gabomdq@7678
   203
/* !
aschiffler@6756
   204
 * \brief Tests SDL_GetVersion
aschiffler@6756
   205
 * \sa
aschiffler@6756
   206
 * http://wiki.libsdl.org/moin.cgi/SDL_GetVersion
aschiffler@6756
   207
 */
aschiffler@6756
   208
int platform_testGetVersion(void *arg)
aschiffler@6756
   209
{
aschiffler@6756
   210
   SDL_version linked;
aschiffler@6756
   211
   int major = SDL_MAJOR_VERSION;
aschiffler@6756
   212
   int minor = SDL_MINOR_VERSION;
aschiffler@6756
   213
aschiffler@6756
   214
   SDL_GetVersion(&linked);
aschiffler@6756
   215
   SDLTest_AssertCheck( linked.major >= major,
aschiffler@6756
   216
             "SDL_GetVersion(): returned major %i (>= %i)",
aschiffler@6756
   217
             linked.major,
aschiffler@6756
   218
             major);
aschiffler@6756
   219
   SDLTest_AssertCheck( linked.minor >= minor,
aschiffler@6756
   220
             "SDL_GetVersion(): returned minor %i (>= %i)",
aschiffler@6756
   221
             linked.minor,
aschiffler@6756
   222
             minor);
aschiffler@6756
   223
aschiffler@6756
   224
   return TEST_COMPLETED;
aschiffler@6756
   225
}
aschiffler@6756
   226
aschiffler@6756
   227
gabomdq@7678
   228
/* !
aschiffler@6756
   229
 * \brief Tests SDL_VERSION macro
aschiffler@6756
   230
 */
aschiffler@6756
   231
int platform_testSDLVersion(void *arg)
aschiffler@6756
   232
{
aschiffler@6756
   233
   SDL_version compiled;
aschiffler@6756
   234
   int major = SDL_MAJOR_VERSION;
aschiffler@6756
   235
   int minor = SDL_MINOR_VERSION;
aschiffler@6756
   236
aschiffler@6756
   237
   SDL_VERSION(&compiled);
aschiffler@6756
   238
   SDLTest_AssertCheck( compiled.major >= major,
aschiffler@6756
   239
             "SDL_VERSION() returned major %i (>= %i)",
aschiffler@6756
   240
             compiled.major,
aschiffler@6756
   241
             major);
aschiffler@6756
   242
   SDLTest_AssertCheck( compiled.minor >= minor,
aschiffler@6756
   243
             "SDL_VERSION() returned minor %i (>= %i)",
aschiffler@6756
   244
             compiled.minor,
aschiffler@6756
   245
             minor);
aschiffler@6756
   246
aschiffler@6756
   247
   return TEST_COMPLETED;
aschiffler@6756
   248
}
aschiffler@6756
   249
aschiffler@6756
   250
gabomdq@7678
   251
/* !
aschiffler@6756
   252
 * \brief Tests default SDL_Init
aschiffler@6756
   253
 */
aschiffler@6756
   254
int platform_testDefaultInit(void *arg)
aschiffler@6756
   255
{
aschiffler@6756
   256
   int ret;
aschiffler@6756
   257
   int subsystem;
aschiffler@6756
   258
aschiffler@6756
   259
   subsystem = SDL_WasInit(SDL_INIT_EVERYTHING);
aschiffler@6756
   260
   SDLTest_AssertCheck( subsystem != 0,
aschiffler@6756
   261
             "SDL_WasInit(0): returned %i, expected != 0",
aschiffler@6756
   262
             subsystem);
aschiffler@6756
   263
aschiffler@6756
   264
   ret = SDL_Init(SDL_WasInit(SDL_INIT_EVERYTHING));
aschiffler@6756
   265
   SDLTest_AssertCheck( ret == 0,
aschiffler@6756
   266
             "SDL_Init(0): returned %i, expected 0, error: %s",
aschiffler@6756
   267
             ret,
aschiffler@6756
   268
             SDL_GetError());
aschiffler@6756
   269
aschiffler@6756
   270
   return TEST_COMPLETED;
aschiffler@6756
   271
}
aschiffler@6756
   272
gabomdq@7678
   273
/* !
aschiffler@6756
   274
 * \brief Tests SDL_Get/Set/ClearError
aschiffler@6756
   275
 * \sa
aschiffler@6756
   276
 * http://wiki.libsdl.org/moin.cgi/SDL_GetError
aschiffler@6756
   277
 * http://wiki.libsdl.org/moin.cgi/SDL_SetError
aschiffler@6756
   278
 * http://wiki.libsdl.org/moin.cgi/SDL_ClearError
aschiffler@6756
   279
 */
aschiffler@6756
   280
int platform_testGetSetClearError(void *arg)
aschiffler@6756
   281
{
aschiffler@8605
   282
   int result;
aschiffler@6756
   283
   const char *testError = "Testing";
aschiffler@6756
   284
   char *lastError;
icculus@11416
   285
   size_t len;
aschiffler@6756
   286
aschiffler@6756
   287
   SDL_ClearError();
aschiffler@6756
   288
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   289
aschiffler@6756
   290
   lastError = (char *)SDL_GetError();
aschiffler@6756
   291
   SDLTest_AssertPass("SDL_GetError()");
aschiffler@6756
   292
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   293
             "SDL_GetError() != NULL");
aschiffler@6756
   294
   if (lastError != NULL)
aschiffler@6756
   295
   {
aschiffler@6778
   296
     len = SDL_strlen(lastError);
aschiffler@6756
   297
     SDLTest_AssertCheck(len == 0,
icculus@11416
   298
             "SDL_GetError(): no message expected, len: %i", (int) len);
aschiffler@6756
   299
   }
aschiffler@6756
   300
aschiffler@8605
   301
   result = SDL_SetError("%s", testError);
aschiffler@6756
   302
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   303
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   304
   lastError = (char *)SDL_GetError();
aschiffler@6756
   305
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   306
             "SDL_GetError() != NULL");
aschiffler@6756
   307
   if (lastError != NULL)
aschiffler@6756
   308
   {
aschiffler@6778
   309
     len = SDL_strlen(lastError);
aschiffler@6778
   310
     SDLTest_AssertCheck(len == SDL_strlen(testError),
aschiffler@6756
   311
             "SDL_GetError(): expected message len %i, was len: %i",
icculus@10782
   312
             (int) SDL_strlen(testError),
icculus@11416
   313
             (int) len);
aschiffler@6778
   314
     SDLTest_AssertCheck(SDL_strcmp(lastError, testError) == 0,
aschiffler@6756
   315
             "SDL_GetError(): expected message %s, was message: %s",
aschiffler@6756
   316
             testError,
aschiffler@6756
   317
             lastError);
aschiffler@6756
   318
   }
aschiffler@6756
   319
gabomdq@7663
   320
   /* Clean up */
aschiffler@6756
   321
   SDL_ClearError();
aschiffler@6756
   322
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   323
aschiffler@6756
   324
   return TEST_COMPLETED;
aschiffler@6756
   325
}
aschiffler@6756
   326
gabomdq@7678
   327
/* !
aschiffler@6756
   328
 * \brief Tests SDL_SetError with empty input
aschiffler@6756
   329
 * \sa
aschiffler@6756
   330
 * http://wiki.libsdl.org/moin.cgi/SDL_SetError
aschiffler@6756
   331
 */
aschiffler@6756
   332
int platform_testSetErrorEmptyInput(void *arg)
aschiffler@6756
   333
{
aschiffler@8605
   334
   int result;
aschiffler@6756
   335
   const char *testError = "";
aschiffler@6756
   336
   char *lastError;
icculus@11416
   337
   size_t len;
aschiffler@6756
   338
aschiffler@8605
   339
   result = SDL_SetError("%s", testError);
aschiffler@6756
   340
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   341
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   342
   lastError = (char *)SDL_GetError();
aschiffler@6756
   343
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   344
             "SDL_GetError() != NULL");
aschiffler@6756
   345
   if (lastError != NULL)
aschiffler@6756
   346
   {
aschiffler@6778
   347
     len = SDL_strlen(lastError);
aschiffler@6778
   348
     SDLTest_AssertCheck(len == SDL_strlen(testError),
aschiffler@6756
   349
             "SDL_GetError(): expected message len %i, was len: %i",
icculus@10782
   350
             (int) SDL_strlen(testError),
icculus@11416
   351
             (int) len);
aschiffler@6778
   352
     SDLTest_AssertCheck(SDL_strcmp(lastError, testError) == 0,
aschiffler@6756
   353
             "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6756
   354
             testError,
aschiffler@6756
   355
             lastError);
aschiffler@6756
   356
   }
aschiffler@6756
   357
gabomdq@7663
   358
   /* Clean up */
aschiffler@6756
   359
   SDL_ClearError();
aschiffler@6756
   360
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   361
aschiffler@6756
   362
   return TEST_COMPLETED;
aschiffler@6756
   363
}
aschiffler@6756
   364
gabomdq@7678
   365
/* !
aschiffler@6756
   366
 * \brief Tests SDL_SetError with invalid input
aschiffler@6756
   367
 * \sa
aschiffler@6756
   368
 * http://wiki.libsdl.org/moin.cgi/SDL_SetError
aschiffler@6756
   369
 */
aschiffler@6756
   370
int platform_testSetErrorInvalidInput(void *arg)
aschiffler@6756
   371
{
aschiffler@8605
   372
   int result;
aschiffler@8605
   373
   const char *invalidError = NULL;
aschiffler@6756
   374
   const char *probeError = "Testing";
aschiffler@6756
   375
   char *lastError;
icculus@11416
   376
   size_t len;
aschiffler@6756
   377
gabomdq@7663
   378
   /* Reset */
aschiffler@6756
   379
   SDL_ClearError();
aschiffler@6756
   380
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   381
gabomdq@7663
   382
   /* Check for no-op */
icculus@10782
   383
   result = SDL_SetError("%s", invalidError);
aschiffler@6756
   384
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   385
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   386
   lastError = (char *)SDL_GetError();
aschiffler@6756
   387
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   388
             "SDL_GetError() != NULL");
aschiffler@6756
   389
   if (lastError != NULL)
aschiffler@6756
   390
   {
aschiffler@6778
   391
     len = SDL_strlen(lastError);
aschiffler@6756
   392
     SDLTest_AssertCheck(len == 0,
aschiffler@6756
   393
             "SDL_GetError(): expected message len 0, was len: %i",
icculus@11416
   394
             (int) len);
aschiffler@6756
   395
   }
aschiffler@6756
   396
gabomdq@7663
   397
   /* Set */
icculus@10782
   398
   result = SDL_SetError("%s", probeError);
aschiffler@9254
   399
   SDLTest_AssertPass("SDL_SetError('%s')", probeError);
aschiffler@8605
   400
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   401
gabomdq@7663
   402
   /* Check for no-op */
icculus@10782
   403
   result = SDL_SetError("%s", invalidError);
aschiffler@9254
   404
   SDLTest_AssertPass("SDL_SetError(NULL)");
aschiffler@8605
   405
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   406
   lastError = (char *)SDL_GetError();
aschiffler@6756
   407
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   408
             "SDL_GetError() != NULL");
aschiffler@6756
   409
   if (lastError != NULL)
aschiffler@6756
   410
   {
aschiffler@6778
   411
     len = SDL_strlen(lastError);
aschiffler@9254
   412
     SDLTest_AssertCheck(len == 0,
aschiffler@9254
   413
             "SDL_GetError(): expected message len 0, was len: %i",
icculus@11416
   414
             (int) len);
aschiffler@6756
   415
   }
aschiffler@6756
   416
aschiffler@8605
   417
   /* Reset */
aschiffler@8605
   418
   SDL_ClearError();
aschiffler@8605
   419
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@8605
   420
aschiffler@8605
   421
   /* Set and check */
icculus@10782
   422
   result = SDL_SetError("%s", probeError);
aschiffler@8605
   423
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   424
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@8605
   425
   lastError = (char *)SDL_GetError();
aschiffler@8605
   426
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@8605
   427
             "SDL_GetError() != NULL");
aschiffler@8605
   428
   if (lastError != NULL)
aschiffler@8605
   429
   {
aschiffler@8605
   430
     len = SDL_strlen(lastError);
aschiffler@8605
   431
     SDLTest_AssertCheck(len == SDL_strlen(probeError),
aschiffler@8605
   432
             "SDL_GetError(): expected message len %i, was len: %i",
icculus@10782
   433
             (int) SDL_strlen(probeError),
icculus@11416
   434
             (int) len);
aschiffler@8605
   435
     SDLTest_AssertCheck(SDL_strcmp(lastError, probeError) == 0,
aschiffler@8605
   436
             "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@8605
   437
             probeError,
aschiffler@8605
   438
             lastError);
aschiffler@8605
   439
   }
aschiffler@8605
   440
   
gabomdq@7663
   441
   /* Clean up */
aschiffler@6756
   442
   SDL_ClearError();
aschiffler@6756
   443
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   444
aschiffler@6756
   445
   return TEST_COMPLETED;
aschiffler@6756
   446
}
aschiffler@6756
   447
gabomdq@7678
   448
/* !
aschiffler@6756
   449
 * \brief Tests SDL_GetPowerInfo
aschiffler@6756
   450
 * \sa
aschiffler@6756
   451
 * http://wiki.libsdl.org/moin.cgi/SDL_GetPowerInfo
aschiffler@6756
   452
 */
aschiffler@6756
   453
int platform_testGetPowerInfo(void *arg)
aschiffler@6756
   454
{
aschiffler@6756
   455
   SDL_PowerState state;
aschiffler@6756
   456
   SDL_PowerState stateAgain;
aschiffler@6756
   457
   int secs;
aschiffler@6756
   458
   int secsAgain;
aschiffler@6756
   459
   int pct;
aschiffler@6756
   460
   int pctAgain;
aschiffler@6756
   461
aschiffler@6756
   462
   state = SDL_GetPowerInfo(&secs, &pct);
aschiffler@6756
   463
   SDLTest_AssertPass("SDL_GetPowerInfo()");
aschiffler@6756
   464
   SDLTest_AssertCheck(
aschiffler@6756
   465
       state==SDL_POWERSTATE_UNKNOWN ||
aschiffler@6756
   466
       state==SDL_POWERSTATE_ON_BATTERY ||
aschiffler@6756
   467
       state==SDL_POWERSTATE_NO_BATTERY ||
aschiffler@6756
   468
       state==SDL_POWERSTATE_CHARGING ||
aschiffler@6756
   469
       state==SDL_POWERSTATE_CHARGED,
aschiffler@6756
   470
       "SDL_GetPowerInfo(): state %i is one of the expected values",
aschiffler@6756
   471
       (int)state);
aschiffler@6756
   472
aschiffler@6756
   473
   if (state==SDL_POWERSTATE_ON_BATTERY)
aschiffler@6756
   474
   {
aschiffler@6756
   475
      SDLTest_AssertCheck(
aschiffler@6756
   476
         secs >= 0,
aschiffler@6756
   477
         "SDL_GetPowerInfo(): on battery, secs >= 0, was: %i",
aschiffler@6756
   478
         secs);
aschiffler@6756
   479
      SDLTest_AssertCheck(
aschiffler@6756
   480
         (pct >= 0) && (pct <= 100),
aschiffler@6756
   481
         "SDL_GetPowerInfo(): on battery, pct=[0,100], was: %i",
aschiffler@6756
   482
         pct);
aschiffler@6756
   483
   }
aschiffler@6756
   484
aschiffler@6756
   485
   if (state==SDL_POWERSTATE_UNKNOWN ||
aschiffler@6756
   486
       state==SDL_POWERSTATE_NO_BATTERY)
aschiffler@6756
   487
   {
aschiffler@6756
   488
      SDLTest_AssertCheck(
aschiffler@6756
   489
         secs == -1,
aschiffler@6756
   490
         "SDL_GetPowerInfo(): no battery, secs == -1, was: %i",
aschiffler@6756
   491
         secs);
aschiffler@6756
   492
      SDLTest_AssertCheck(
aschiffler@6756
   493
         pct == -1,
aschiffler@6756
   494
         "SDL_GetPowerInfo(): no battery, pct == -1, was: %i",
aschiffler@6756
   495
         pct);
aschiffler@6756
   496
   }
aschiffler@6756
   497
gabomdq@7663
   498
   /* Partial return value variations */
aschiffler@6756
   499
   stateAgain = SDL_GetPowerInfo(&secsAgain, NULL);
aschiffler@6756
   500
   SDLTest_AssertCheck(
aschiffler@6756
   501
        state==stateAgain,
aschiffler@6756
   502
        "State %i returned when only 'secs' requested",
aschiffler@6756
   503
        stateAgain);
aschiffler@6756
   504
   SDLTest_AssertCheck(
aschiffler@6756
   505
        secs==secsAgain,
aschiffler@6756
   506
        "Value %i matches when only 'secs' requested",
aschiffler@6756
   507
        secsAgain);
aschiffler@6756
   508
   stateAgain = SDL_GetPowerInfo(NULL, &pctAgain);
aschiffler@6756
   509
   SDLTest_AssertCheck(
aschiffler@6756
   510
        state==stateAgain,
aschiffler@6756
   511
        "State %i returned when only 'pct' requested",
aschiffler@6756
   512
        stateAgain);
aschiffler@6756
   513
   SDLTest_AssertCheck(
aschiffler@6756
   514
        pct==pctAgain,
aschiffler@6756
   515
        "Value %i matches when only 'pct' requested",
aschiffler@6756
   516
        pctAgain);
aschiffler@6756
   517
   stateAgain = SDL_GetPowerInfo(NULL, NULL);
aschiffler@6756
   518
   SDLTest_AssertCheck(
aschiffler@6756
   519
        state==stateAgain,
aschiffler@6756
   520
        "State %i returned when no value requested",
aschiffler@6756
   521
        stateAgain);
aschiffler@6756
   522
aschiffler@6756
   523
   return TEST_COMPLETED;
aschiffler@6756
   524
}
aschiffler@6756
   525
aschiffler@6756
   526
/* ================= Test References ================== */
aschiffler@6756
   527
aschiffler@6756
   528
/* Platform test cases */
aschiffler@6756
   529
static const SDLTest_TestCaseReference platformTest1 =
slouken@7191
   530
        { (SDLTest_TestCaseFp)platform_testTypes, "platform_testTypes", "Tests predefined types", TEST_ENABLED};
aschiffler@6756
   531
aschiffler@6756
   532
static const SDLTest_TestCaseReference platformTest2 =
slouken@7191
   533
        { (SDLTest_TestCaseFp)platform_testEndianessAndSwap, "platform_testEndianessAndSwap", "Tests endianess and swap functions", TEST_ENABLED};
aschiffler@6756
   534
aschiffler@6756
   535
static const SDLTest_TestCaseReference platformTest3 =
slouken@7191
   536
        { (SDLTest_TestCaseFp)platform_testGetFunctions, "platform_testGetFunctions", "Tests various SDL_GetXYZ functions", TEST_ENABLED};
aschiffler@6756
   537
aschiffler@6756
   538
static const SDLTest_TestCaseReference platformTest4 =
slouken@7191
   539
        { (SDLTest_TestCaseFp)platform_testHasFunctions, "platform_testHasFunctions", "Tests various SDL_HasXYZ functions", TEST_ENABLED};
aschiffler@6756
   540
aschiffler@6756
   541
static const SDLTest_TestCaseReference platformTest5 =
slouken@7191
   542
        { (SDLTest_TestCaseFp)platform_testGetVersion, "platform_testGetVersion", "Tests SDL_GetVersion function", TEST_ENABLED};
aschiffler@6756
   543
aschiffler@6756
   544
static const SDLTest_TestCaseReference platformTest6 =
slouken@7191
   545
        { (SDLTest_TestCaseFp)platform_testSDLVersion, "platform_testSDLVersion", "Tests SDL_VERSION macro", TEST_ENABLED};
aschiffler@6756
   546
aschiffler@6756
   547
static const SDLTest_TestCaseReference platformTest7 =
slouken@7191
   548
        { (SDLTest_TestCaseFp)platform_testDefaultInit, "platform_testDefaultInit", "Tests default SDL_Init", TEST_ENABLED};
aschiffler@6756
   549
aschiffler@6756
   550
static const SDLTest_TestCaseReference platformTest8 =
slouken@7191
   551
        { (SDLTest_TestCaseFp)platform_testGetSetClearError, "platform_testGetSetClearError", "Tests SDL_Get/Set/ClearError", TEST_ENABLED};
aschiffler@6756
   552
aschiffler@6756
   553
static const SDLTest_TestCaseReference platformTest9 =
slouken@7191
   554
        { (SDLTest_TestCaseFp)platform_testSetErrorEmptyInput, "platform_testSetErrorEmptyInput", "Tests SDL_SetError with empty input", TEST_ENABLED};
aschiffler@6756
   555
aschiffler@6756
   556
static const SDLTest_TestCaseReference platformTest10 =
slouken@7191
   557
        { (SDLTest_TestCaseFp)platform_testSetErrorInvalidInput, "platform_testSetErrorInvalidInput", "Tests SDL_SetError with invalid input", TEST_ENABLED};
aschiffler@6756
   558
aschiffler@6756
   559
static const SDLTest_TestCaseReference platformTest11 =
slouken@7191
   560
        { (SDLTest_TestCaseFp)platform_testGetPowerInfo, "platform_testGetPowerInfo", "Tests SDL_GetPowerInfo function", TEST_ENABLED };
aschiffler@6756
   561
aschiffler@6756
   562
/* Sequence of Platform test cases */
aschiffler@6756
   563
static const SDLTest_TestCaseReference *platformTests[] =  {
slouken@7191
   564
    &platformTest1,
slouken@7191
   565
    &platformTest2,
slouken@7191
   566
    &platformTest3,
slouken@7191
   567
    &platformTest4,
slouken@7191
   568
    &platformTest5,
slouken@7191
   569
    &platformTest6,
slouken@7191
   570
    &platformTest7,
slouken@7191
   571
    &platformTest8,
slouken@7191
   572
    &platformTest9,
slouken@7191
   573
    &platformTest10,
slouken@7191
   574
    &platformTest11,
slouken@7191
   575
    NULL
aschiffler@6756
   576
};
aschiffler@6756
   577
aschiffler@6756
   578
/* Platform test suite (global) */
aschiffler@6756
   579
SDLTest_TestSuiteReference platformTestSuite = {
slouken@7191
   580
    "Platform",
slouken@7191
   581
    NULL,
slouken@7191
   582
    platformTests,
slouken@7191
   583
    NULL
aschiffler@6756
   584
};