test/testautomation_platform.c
author Sam Lantinga <slouken@libsdl.org>
Sat, 18 May 2013 14:17:52 -0700
changeset 7191 75360622e65f
parent 6778 d57d273d74f9
child 7663 53fe1b64eb2d
permissions -rw-r--r--
File style cleanup for the SDL 2.0 release
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@6756
    37
   SDLTest_AssertCheck( ret == 0, "sizeof(Uint8) = %lu, expected  1", sizeof(Uint8) );
aschiffler@6756
    38
aschiffler@6756
    39
   ret = _compareSizeOfType( sizeof(Uint16), 2 );
aschiffler@6756
    40
   SDLTest_AssertCheck( ret == 0, "sizeof(Uint16) = %lu, expected 2", sizeof(Uint16) );
aschiffler@6756
    41
aschiffler@6756
    42
   ret = _compareSizeOfType( sizeof(Uint32), 4 );
aschiffler@6756
    43
   SDLTest_AssertCheck( ret == 0, "sizeof(Uint32) = %lu, expected 4", sizeof(Uint32) );
aschiffler@6756
    44
aschiffler@6756
    45
   ret = _compareSizeOfType( sizeof(Uint64), 8 );
aschiffler@6756
    46
   SDLTest_AssertCheck( ret == 0, "sizeof(Uint64) = %lu, expected 8", 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,
aschiffler@6756
    95
#ifdef _MSC_VER
aschiffler@6756
    96
             "SDL_Swap64(): 64 bit swapped: 0x%I64X => 0x%I64X",
aschiffler@6756
    97
#else
aschiffler@6756
    98
             "SDL_Swap64(): 64 bit swapped: 0x%llX => 0x%llX",
aschiffler@6756
    99
#endif
aschiffler@6756
   100
             value64, SDL_Swap64(value64) );
aschiffler@6756
   101
aschiffler@6756
   102
   return TEST_COMPLETED;
aschiffler@6756
   103
}
aschiffler@6756
   104
aschiffler@6756
   105
/*!
aschiffler@6756
   106
 * \brief Tests SDL_GetXYZ() functions
aschiffler@6756
   107
 * \sa
aschiffler@6756
   108
 * http://wiki.libsdl.org/moin.cgi/SDL_GetPlatform
aschiffler@6756
   109
 * http://wiki.libsdl.org/moin.cgi/SDL_GetCPUCount
aschiffler@6756
   110
 * http://wiki.libsdl.org/moin.cgi/SDL_GetCPUCacheLineSize
aschiffler@6756
   111
 * http://wiki.libsdl.org/moin.cgi/SDL_GetRevision
aschiffler@6756
   112
 * http://wiki.libsdl.org/moin.cgi/SDL_GetRevisionNumber
aschiffler@6756
   113
 */
aschiffler@6756
   114
int platform_testGetFunctions (void *arg)
aschiffler@6756
   115
{
aschiffler@6756
   116
   char *platform;
aschiffler@6756
   117
   char *revision;
aschiffler@6756
   118
   int ret;
aschiffler@6756
   119
   int len;
aschiffler@6756
   120
aschiffler@6756
   121
   platform = (char *)SDL_GetPlatform();
aschiffler@6756
   122
   SDLTest_AssertPass("SDL_GetPlatform()");
aschiffler@6756
   123
   SDLTest_AssertCheck(platform != NULL, "SDL_GetPlatform() != NULL");
aschiffler@6756
   124
   if (platform != NULL) {
aschiffler@6778
   125
     len = SDL_strlen(platform);
aschiffler@6756
   126
     SDLTest_AssertCheck(len > 0,
aschiffler@6756
   127
             "SDL_GetPlatform(): expected non-empty platform, was platform: '%s', len: %i",
aschiffler@6756
   128
             platform,
aschiffler@6756
   129
             len);
aschiffler@6756
   130
   }
aschiffler@6756
   131
aschiffler@6756
   132
   ret = SDL_GetCPUCount();
aschiffler@6756
   133
   SDLTest_AssertPass("SDL_GetCPUCount()");
aschiffler@6756
   134
   SDLTest_AssertCheck(ret > 0,
aschiffler@6756
   135
             "SDL_GetCPUCount(): expected count > 0, was: %i",
aschiffler@6756
   136
             ret);
aschiffler@6756
   137
aschiffler@6756
   138
   ret = SDL_GetCPUCacheLineSize();
aschiffler@6756
   139
   SDLTest_AssertPass("SDL_GetCPUCacheLineSize()");
aschiffler@6756
   140
   SDLTest_AssertCheck(ret >= 0,
aschiffler@6756
   141
             "SDL_GetCPUCacheLineSize(): expected size >= 0, was: %i",
aschiffler@6756
   142
             ret);
aschiffler@6756
   143
aschiffler@6756
   144
   revision = (char *)SDL_GetRevision();
aschiffler@6756
   145
   SDLTest_AssertPass("SDL_GetRevision()");
aschiffler@6756
   146
   SDLTest_AssertCheck(revision != NULL, "SDL_GetRevision() != NULL");
aschiffler@6756
   147
aschiffler@6756
   148
   ret = SDL_GetRevisionNumber();
aschiffler@6756
   149
   SDLTest_AssertPass("SDL_GetRevisionNumber()");
aschiffler@6756
   150
aschiffler@6756
   151
   return TEST_COMPLETED;
aschiffler@6756
   152
}
aschiffler@6756
   153
aschiffler@6756
   154
/*!
aschiffler@6756
   155
 * \brief Tests SDL_HasXYZ() functions
aschiffler@6756
   156
 * \sa
aschiffler@6756
   157
 * http://wiki.libsdl.org/moin.cgi/SDL_Has3DNow
aschiffler@6756
   158
 * http://wiki.libsdl.org/moin.cgi/SDL_HasAltiVec
aschiffler@6756
   159
 * http://wiki.libsdl.org/moin.cgi/SDL_HasMMX
aschiffler@6756
   160
 * http://wiki.libsdl.org/moin.cgi/SDL_HasRDTSC
aschiffler@6756
   161
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE
aschiffler@6756
   162
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE2
aschiffler@6756
   163
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE3
aschiffler@6756
   164
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE41
aschiffler@6756
   165
 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE42
aschiffler@6756
   166
 */
aschiffler@6756
   167
int platform_testHasFunctions (void *arg)
aschiffler@6756
   168
{
aschiffler@6756
   169
   int ret;
aschiffler@6756
   170
aschiffler@6756
   171
   // TODO: independently determine and compare values as well
aschiffler@6756
   172
aschiffler@6756
   173
   ret = SDL_HasRDTSC();
aschiffler@6756
   174
   SDLTest_AssertPass("SDL_HasRDTSC()");
aschiffler@6756
   175
aschiffler@6756
   176
   ret = SDL_HasAltiVec();
aschiffler@6756
   177
   SDLTest_AssertPass("SDL_HasAltiVec()");
aschiffler@6756
   178
aschiffler@6756
   179
   ret = SDL_HasMMX();
aschiffler@6756
   180
   SDLTest_AssertPass("SDL_HasMMX()");
aschiffler@6756
   181
aschiffler@6756
   182
   ret = SDL_Has3DNow();
aschiffler@6756
   183
   SDLTest_AssertPass("SDL_Has3DNow()");
aschiffler@6756
   184
aschiffler@6756
   185
   ret = SDL_HasSSE();
aschiffler@6756
   186
   SDLTest_AssertPass("SDL_HasSSE()");
aschiffler@6756
   187
aschiffler@6756
   188
   ret = SDL_HasSSE2();
aschiffler@6756
   189
   SDLTest_AssertPass("SDL_HasSSE2()");
aschiffler@6756
   190
aschiffler@6756
   191
   ret = SDL_HasSSE3();
aschiffler@6756
   192
   SDLTest_AssertPass("SDL_HasSSE3()");
aschiffler@6756
   193
aschiffler@6756
   194
   ret = SDL_HasSSE41();
aschiffler@6756
   195
   SDLTest_AssertPass("SDL_HasSSE41()");
aschiffler@6756
   196
aschiffler@6756
   197
   ret = SDL_HasSSE42();
aschiffler@6756
   198
   SDLTest_AssertPass("SDL_HasSSE42()");
aschiffler@6756
   199
aschiffler@6756
   200
   return TEST_COMPLETED;
aschiffler@6756
   201
}
aschiffler@6756
   202
aschiffler@6756
   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
aschiffler@6756
   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
aschiffler@6756
   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
aschiffler@6756
   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@6756
   282
   const char *testError = "Testing";
aschiffler@6756
   283
   char *lastError;
aschiffler@6756
   284
   int len;
aschiffler@6756
   285
aschiffler@6756
   286
   SDL_ClearError();
aschiffler@6756
   287
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   288
aschiffler@6756
   289
   lastError = (char *)SDL_GetError();
aschiffler@6756
   290
   SDLTest_AssertPass("SDL_GetError()");
aschiffler@6756
   291
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   292
             "SDL_GetError() != NULL");
aschiffler@6756
   293
   if (lastError != NULL)
aschiffler@6756
   294
   {
aschiffler@6778
   295
     len = SDL_strlen(lastError);
aschiffler@6756
   296
     SDLTest_AssertCheck(len == 0,
aschiffler@6756
   297
             "SDL_GetError(): no message expected, len: %i", len);
aschiffler@6756
   298
   }
aschiffler@6756
   299
aschiffler@6756
   300
   SDL_SetError("%s", testError);
aschiffler@6756
   301
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@6756
   302
   lastError = (char *)SDL_GetError();
aschiffler@6756
   303
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   304
             "SDL_GetError() != NULL");
aschiffler@6756
   305
   if (lastError != NULL)
aschiffler@6756
   306
   {
aschiffler@6778
   307
     len = SDL_strlen(lastError);
aschiffler@6778
   308
     SDLTest_AssertCheck(len == SDL_strlen(testError),
aschiffler@6756
   309
             "SDL_GetError(): expected message len %i, was len: %i",
aschiffler@6778
   310
             SDL_strlen(testError),
aschiffler@6756
   311
             len);
aschiffler@6778
   312
     SDLTest_AssertCheck(SDL_strcmp(lastError, testError) == 0,
aschiffler@6756
   313
             "SDL_GetError(): expected message %s, was message: %s",
aschiffler@6756
   314
             testError,
aschiffler@6756
   315
             lastError);
aschiffler@6756
   316
   }
aschiffler@6756
   317
aschiffler@6756
   318
   // Clean up
aschiffler@6756
   319
   SDL_ClearError();
aschiffler@6756
   320
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   321
aschiffler@6756
   322
   return TEST_COMPLETED;
aschiffler@6756
   323
}
aschiffler@6756
   324
aschiffler@6756
   325
/*!
aschiffler@6756
   326
 * \brief Tests SDL_SetError with empty input
aschiffler@6756
   327
 * \sa
aschiffler@6756
   328
 * http://wiki.libsdl.org/moin.cgi/SDL_SetError
aschiffler@6756
   329
 */
aschiffler@6756
   330
int platform_testSetErrorEmptyInput(void *arg)
aschiffler@6756
   331
{
aschiffler@6756
   332
   const char *testError = "";
aschiffler@6756
   333
   char *lastError;
aschiffler@6756
   334
   int len;
aschiffler@6756
   335
aschiffler@6756
   336
   SDL_SetError("%s", testError);
aschiffler@6756
   337
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@6756
   338
   lastError = (char *)SDL_GetError();
aschiffler@6756
   339
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   340
             "SDL_GetError() != NULL");
aschiffler@6756
   341
   if (lastError != NULL)
aschiffler@6756
   342
   {
aschiffler@6778
   343
     len = SDL_strlen(lastError);
aschiffler@6778
   344
     SDLTest_AssertCheck(len == SDL_strlen(testError),
aschiffler@6756
   345
             "SDL_GetError(): expected message len %i, was len: %i",
aschiffler@6778
   346
             SDL_strlen(testError),
aschiffler@6756
   347
             len);
aschiffler@6778
   348
     SDLTest_AssertCheck(SDL_strcmp(lastError, testError) == 0,
aschiffler@6756
   349
             "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6756
   350
             testError,
aschiffler@6756
   351
             lastError);
aschiffler@6756
   352
   }
aschiffler@6756
   353
aschiffler@6756
   354
   // Clean up
aschiffler@6756
   355
   SDL_ClearError();
aschiffler@6756
   356
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   357
aschiffler@6756
   358
   return TEST_COMPLETED;
aschiffler@6756
   359
}
aschiffler@6756
   360
aschiffler@6756
   361
/*!
aschiffler@6756
   362
 * \brief Tests SDL_SetError with invalid input
aschiffler@6756
   363
 * \sa
aschiffler@6756
   364
 * http://wiki.libsdl.org/moin.cgi/SDL_SetError
aschiffler@6756
   365
 */
aschiffler@6756
   366
int platform_testSetErrorInvalidInput(void *arg)
aschiffler@6756
   367
{
aschiffler@6756
   368
   const char *testError = NULL;
aschiffler@6756
   369
   const char *probeError = "Testing";
aschiffler@6756
   370
   char *lastError;
aschiffler@6756
   371
   int len;
aschiffler@6756
   372
aschiffler@6756
   373
   // Reset
aschiffler@6756
   374
   SDL_ClearError();
aschiffler@6756
   375
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   376
aschiffler@6756
   377
   // Check for no-op
aschiffler@6756
   378
   SDL_SetError(testError);
aschiffler@6756
   379
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@6756
   380
   lastError = (char *)SDL_GetError();
aschiffler@6756
   381
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   382
             "SDL_GetError() != NULL");
aschiffler@6756
   383
   if (lastError != NULL)
aschiffler@6756
   384
   {
aschiffler@6778
   385
     len = SDL_strlen(lastError);
aschiffler@6756
   386
     SDLTest_AssertCheck(len == 0,
aschiffler@6756
   387
             "SDL_GetError(): expected message len 0, was len: %i",
aschiffler@6756
   388
             0,
aschiffler@6756
   389
             len);
aschiffler@6778
   390
     SDLTest_AssertCheck(SDL_strcmp(lastError, "") == 0,
aschiffler@6756
   391
             "SDL_GetError(): expected message '', was message: '%s'",
aschiffler@6756
   392
             lastError);
aschiffler@6756
   393
   }
aschiffler@6756
   394
aschiffler@6756
   395
   // Set
aschiffler@6756
   396
   SDL_SetError(probeError);
aschiffler@6756
   397
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@6756
   398
aschiffler@6756
   399
   // Check for no-op
aschiffler@6756
   400
   SDL_SetError(testError);
aschiffler@6756
   401
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@6756
   402
   lastError = (char *)SDL_GetError();
aschiffler@6756
   403
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   404
             "SDL_GetError() != NULL");
aschiffler@6756
   405
   if (lastError != NULL)
aschiffler@6756
   406
   {
aschiffler@6778
   407
     len = SDL_strlen(lastError);
aschiffler@6778
   408
     SDLTest_AssertCheck(len == SDL_strlen(probeError),
aschiffler@6756
   409
             "SDL_GetError(): expected message len %i, was len: %i",
aschiffler@6778
   410
             SDL_strlen(probeError),
aschiffler@6756
   411
             len);
aschiffler@6778
   412
     SDLTest_AssertCheck(SDL_strcmp(lastError, probeError) == 0,
aschiffler@6756
   413
             "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6756
   414
             probeError,
aschiffler@6756
   415
             lastError);
aschiffler@6756
   416
   }
aschiffler@6756
   417
aschiffler@6756
   418
   // Clean up
aschiffler@6756
   419
   SDL_ClearError();
aschiffler@6756
   420
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   421
aschiffler@6756
   422
   return TEST_COMPLETED;
aschiffler@6756
   423
}
aschiffler@6756
   424
aschiffler@6756
   425
/*!
aschiffler@6756
   426
 * \brief Tests SDL_GetPowerInfo
aschiffler@6756
   427
 * \sa
aschiffler@6756
   428
 * http://wiki.libsdl.org/moin.cgi/SDL_GetPowerInfo
aschiffler@6756
   429
 */
aschiffler@6756
   430
int platform_testGetPowerInfo(void *arg)
aschiffler@6756
   431
{
aschiffler@6756
   432
   SDL_PowerState state;
aschiffler@6756
   433
   SDL_PowerState stateAgain;
aschiffler@6756
   434
   int secs;
aschiffler@6756
   435
   int secsAgain;
aschiffler@6756
   436
   int pct;
aschiffler@6756
   437
   int pctAgain;
aschiffler@6756
   438
aschiffler@6756
   439
   state = SDL_GetPowerInfo(&secs, &pct);
aschiffler@6756
   440
   SDLTest_AssertPass("SDL_GetPowerInfo()");
aschiffler@6756
   441
   SDLTest_AssertCheck(
aschiffler@6756
   442
       state==SDL_POWERSTATE_UNKNOWN ||
aschiffler@6756
   443
       state==SDL_POWERSTATE_ON_BATTERY ||
aschiffler@6756
   444
       state==SDL_POWERSTATE_NO_BATTERY ||
aschiffler@6756
   445
       state==SDL_POWERSTATE_CHARGING ||
aschiffler@6756
   446
       state==SDL_POWERSTATE_CHARGED,
aschiffler@6756
   447
       "SDL_GetPowerInfo(): state %i is one of the expected values",
aschiffler@6756
   448
       (int)state);
aschiffler@6756
   449
aschiffler@6756
   450
   if (state==SDL_POWERSTATE_ON_BATTERY)
aschiffler@6756
   451
   {
aschiffler@6756
   452
      SDLTest_AssertCheck(
aschiffler@6756
   453
         secs >= 0,
aschiffler@6756
   454
         "SDL_GetPowerInfo(): on battery, secs >= 0, was: %i",
aschiffler@6756
   455
         secs);
aschiffler@6756
   456
      SDLTest_AssertCheck(
aschiffler@6756
   457
         (pct >= 0) && (pct <= 100),
aschiffler@6756
   458
         "SDL_GetPowerInfo(): on battery, pct=[0,100], was: %i",
aschiffler@6756
   459
         pct);
aschiffler@6756
   460
   }
aschiffler@6756
   461
aschiffler@6756
   462
   if (state==SDL_POWERSTATE_UNKNOWN ||
aschiffler@6756
   463
       state==SDL_POWERSTATE_NO_BATTERY)
aschiffler@6756
   464
   {
aschiffler@6756
   465
      SDLTest_AssertCheck(
aschiffler@6756
   466
         secs == -1,
aschiffler@6756
   467
         "SDL_GetPowerInfo(): no battery, secs == -1, was: %i",
aschiffler@6756
   468
         secs);
aschiffler@6756
   469
      SDLTest_AssertCheck(
aschiffler@6756
   470
         pct == -1,
aschiffler@6756
   471
         "SDL_GetPowerInfo(): no battery, pct == -1, was: %i",
aschiffler@6756
   472
         pct);
aschiffler@6756
   473
   }
aschiffler@6756
   474
aschiffler@6756
   475
   // Partial return value variations
aschiffler@6756
   476
   stateAgain = SDL_GetPowerInfo(&secsAgain, NULL);
aschiffler@6756
   477
   SDLTest_AssertCheck(
aschiffler@6756
   478
        state==stateAgain,
aschiffler@6756
   479
        "State %i returned when only 'secs' requested",
aschiffler@6756
   480
        stateAgain);
aschiffler@6756
   481
   SDLTest_AssertCheck(
aschiffler@6756
   482
        secs==secsAgain,
aschiffler@6756
   483
        "Value %i matches when only 'secs' requested",
aschiffler@6756
   484
        secsAgain);
aschiffler@6756
   485
   stateAgain = SDL_GetPowerInfo(NULL, &pctAgain);
aschiffler@6756
   486
   SDLTest_AssertCheck(
aschiffler@6756
   487
        state==stateAgain,
aschiffler@6756
   488
        "State %i returned when only 'pct' requested",
aschiffler@6756
   489
        stateAgain);
aschiffler@6756
   490
   SDLTest_AssertCheck(
aschiffler@6756
   491
        pct==pctAgain,
aschiffler@6756
   492
        "Value %i matches when only 'pct' requested",
aschiffler@6756
   493
        pctAgain);
aschiffler@6756
   494
   stateAgain = SDL_GetPowerInfo(NULL, NULL);
aschiffler@6756
   495
   SDLTest_AssertCheck(
aschiffler@6756
   496
        state==stateAgain,
aschiffler@6756
   497
        "State %i returned when no value requested",
aschiffler@6756
   498
        stateAgain);
aschiffler@6756
   499
aschiffler@6756
   500
   return TEST_COMPLETED;
aschiffler@6756
   501
}
aschiffler@6756
   502
aschiffler@6756
   503
/* ================= Test References ================== */
aschiffler@6756
   504
aschiffler@6756
   505
/* Platform test cases */
aschiffler@6756
   506
static const SDLTest_TestCaseReference platformTest1 =
slouken@7191
   507
        { (SDLTest_TestCaseFp)platform_testTypes, "platform_testTypes", "Tests predefined types", TEST_ENABLED};
aschiffler@6756
   508
aschiffler@6756
   509
static const SDLTest_TestCaseReference platformTest2 =
slouken@7191
   510
        { (SDLTest_TestCaseFp)platform_testEndianessAndSwap, "platform_testEndianessAndSwap", "Tests endianess and swap functions", TEST_ENABLED};
aschiffler@6756
   511
aschiffler@6756
   512
static const SDLTest_TestCaseReference platformTest3 =
slouken@7191
   513
        { (SDLTest_TestCaseFp)platform_testGetFunctions, "platform_testGetFunctions", "Tests various SDL_GetXYZ functions", TEST_ENABLED};
aschiffler@6756
   514
aschiffler@6756
   515
static const SDLTest_TestCaseReference platformTest4 =
slouken@7191
   516
        { (SDLTest_TestCaseFp)platform_testHasFunctions, "platform_testHasFunctions", "Tests various SDL_HasXYZ functions", TEST_ENABLED};
aschiffler@6756
   517
aschiffler@6756
   518
static const SDLTest_TestCaseReference platformTest5 =
slouken@7191
   519
        { (SDLTest_TestCaseFp)platform_testGetVersion, "platform_testGetVersion", "Tests SDL_GetVersion function", TEST_ENABLED};
aschiffler@6756
   520
aschiffler@6756
   521
static const SDLTest_TestCaseReference platformTest6 =
slouken@7191
   522
        { (SDLTest_TestCaseFp)platform_testSDLVersion, "platform_testSDLVersion", "Tests SDL_VERSION macro", TEST_ENABLED};
aschiffler@6756
   523
aschiffler@6756
   524
static const SDLTest_TestCaseReference platformTest7 =
slouken@7191
   525
        { (SDLTest_TestCaseFp)platform_testDefaultInit, "platform_testDefaultInit", "Tests default SDL_Init", TEST_ENABLED};
aschiffler@6756
   526
aschiffler@6756
   527
static const SDLTest_TestCaseReference platformTest8 =
slouken@7191
   528
        { (SDLTest_TestCaseFp)platform_testGetSetClearError, "platform_testGetSetClearError", "Tests SDL_Get/Set/ClearError", TEST_ENABLED};
aschiffler@6756
   529
aschiffler@6756
   530
static const SDLTest_TestCaseReference platformTest9 =
slouken@7191
   531
        { (SDLTest_TestCaseFp)platform_testSetErrorEmptyInput, "platform_testSetErrorEmptyInput", "Tests SDL_SetError with empty input", TEST_ENABLED};
aschiffler@6756
   532
aschiffler@6756
   533
static const SDLTest_TestCaseReference platformTest10 =
slouken@7191
   534
        { (SDLTest_TestCaseFp)platform_testSetErrorInvalidInput, "platform_testSetErrorInvalidInput", "Tests SDL_SetError with invalid input", TEST_ENABLED};
aschiffler@6756
   535
aschiffler@6756
   536
static const SDLTest_TestCaseReference platformTest11 =
slouken@7191
   537
        { (SDLTest_TestCaseFp)platform_testGetPowerInfo, "platform_testGetPowerInfo", "Tests SDL_GetPowerInfo function", TEST_ENABLED };
aschiffler@6756
   538
aschiffler@6756
   539
/* Sequence of Platform test cases */
aschiffler@6756
   540
static const SDLTest_TestCaseReference *platformTests[] =  {
slouken@7191
   541
    &platformTest1,
slouken@7191
   542
    &platformTest2,
slouken@7191
   543
    &platformTest3,
slouken@7191
   544
    &platformTest4,
slouken@7191
   545
    &platformTest5,
slouken@7191
   546
    &platformTest6,
slouken@7191
   547
    &platformTest7,
slouken@7191
   548
    &platformTest8,
slouken@7191
   549
    &platformTest9,
slouken@7191
   550
    &platformTest10,
slouken@7191
   551
    &platformTest11,
slouken@7191
   552
    NULL
aschiffler@6756
   553
};
aschiffler@6756
   554
aschiffler@6756
   555
/* Platform test suite (global) */
aschiffler@6756
   556
SDLTest_TestSuiteReference platformTestSuite = {
slouken@7191
   557
    "Platform",
slouken@7191
   558
    NULL,
slouken@7191
   559
    platformTests,
slouken@7191
   560
    NULL
aschiffler@6756
   561
};