test/testautomation_platform.c
author Sam Lantinga <slouken@libsdl.org>
Thu, 07 Dec 2017 16:08:09 -0800
changeset 11730 ac6c607e065c
parent 11416 7e7d8a125d6a
permissions -rw-r--r--
Enable building the Metal renderer by default, and weak link the Metal framework so the SDL library is safe to use on older Macs
Also generate iOS versions of the Metal shaders
aschiffler@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
};