test/testautomation_platform.c
author Alex Baines <alex@abaines.me.uk>
Tue, 19 Aug 2014 23:31:50 +0100
changeset 9097 56d712662a82
parent 8605 57faccca4fab
child 9254 6c469ea796e4
permissions -rw-r--r--
Add a SDL_IM_INTERNAL_EDITING event to make IMs like iBus render editing text in its own UI instead of sending TEXTEDITING events.
This is useful for applications that handle TEXTINPUT events but not TEXTEDITING events.
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
gabomdq@7678
   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
gabomdq@7678
   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
slouken@8148
   166
 * http://wiki.libsdl.org/moin.cgi/SDL_HasAVX
aschiffler@6756
   167
 */
aschiffler@6756
   168
int platform_testHasFunctions (void *arg)
aschiffler@6756
   169
{
aschiffler@6756
   170
   int ret;
aschiffler@6756
   171
gabomdq@7663
   172
   /* TODO: independently determine and compare values as well */
aschiffler@6756
   173
aschiffler@6756
   174
   ret = SDL_HasRDTSC();
aschiffler@6756
   175
   SDLTest_AssertPass("SDL_HasRDTSC()");
aschiffler@6756
   176
aschiffler@6756
   177
   ret = SDL_HasAltiVec();
aschiffler@6756
   178
   SDLTest_AssertPass("SDL_HasAltiVec()");
aschiffler@6756
   179
aschiffler@6756
   180
   ret = SDL_HasMMX();
aschiffler@6756
   181
   SDLTest_AssertPass("SDL_HasMMX()");
aschiffler@6756
   182
aschiffler@6756
   183
   ret = SDL_Has3DNow();
aschiffler@6756
   184
   SDLTest_AssertPass("SDL_Has3DNow()");
aschiffler@6756
   185
aschiffler@6756
   186
   ret = SDL_HasSSE();
aschiffler@6756
   187
   SDLTest_AssertPass("SDL_HasSSE()");
aschiffler@6756
   188
aschiffler@6756
   189
   ret = SDL_HasSSE2();
aschiffler@6756
   190
   SDLTest_AssertPass("SDL_HasSSE2()");
aschiffler@6756
   191
aschiffler@6756
   192
   ret = SDL_HasSSE3();
aschiffler@6756
   193
   SDLTest_AssertPass("SDL_HasSSE3()");
aschiffler@6756
   194
aschiffler@6756
   195
   ret = SDL_HasSSE41();
aschiffler@6756
   196
   SDLTest_AssertPass("SDL_HasSSE41()");
aschiffler@6756
   197
aschiffler@6756
   198
   ret = SDL_HasSSE42();
aschiffler@6756
   199
   SDLTest_AssertPass("SDL_HasSSE42()");
aschiffler@6756
   200
slouken@8148
   201
   ret = SDL_HasAVX();
slouken@8148
   202
   SDLTest_AssertPass("SDL_HasAVX()");
slouken@8148
   203
aschiffler@6756
   204
   return TEST_COMPLETED;
aschiffler@6756
   205
}
aschiffler@6756
   206
gabomdq@7678
   207
/* !
aschiffler@6756
   208
 * \brief Tests SDL_GetVersion
aschiffler@6756
   209
 * \sa
aschiffler@6756
   210
 * http://wiki.libsdl.org/moin.cgi/SDL_GetVersion
aschiffler@6756
   211
 */
aschiffler@6756
   212
int platform_testGetVersion(void *arg)
aschiffler@6756
   213
{
aschiffler@6756
   214
   SDL_version linked;
aschiffler@6756
   215
   int major = SDL_MAJOR_VERSION;
aschiffler@6756
   216
   int minor = SDL_MINOR_VERSION;
aschiffler@6756
   217
aschiffler@6756
   218
   SDL_GetVersion(&linked);
aschiffler@6756
   219
   SDLTest_AssertCheck( linked.major >= major,
aschiffler@6756
   220
             "SDL_GetVersion(): returned major %i (>= %i)",
aschiffler@6756
   221
             linked.major,
aschiffler@6756
   222
             major);
aschiffler@6756
   223
   SDLTest_AssertCheck( linked.minor >= minor,
aschiffler@6756
   224
             "SDL_GetVersion(): returned minor %i (>= %i)",
aschiffler@6756
   225
             linked.minor,
aschiffler@6756
   226
             minor);
aschiffler@6756
   227
aschiffler@6756
   228
   return TEST_COMPLETED;
aschiffler@6756
   229
}
aschiffler@6756
   230
aschiffler@6756
   231
gabomdq@7678
   232
/* !
aschiffler@6756
   233
 * \brief Tests SDL_VERSION macro
aschiffler@6756
   234
 */
aschiffler@6756
   235
int platform_testSDLVersion(void *arg)
aschiffler@6756
   236
{
aschiffler@6756
   237
   SDL_version compiled;
aschiffler@6756
   238
   int major = SDL_MAJOR_VERSION;
aschiffler@6756
   239
   int minor = SDL_MINOR_VERSION;
aschiffler@6756
   240
aschiffler@6756
   241
   SDL_VERSION(&compiled);
aschiffler@6756
   242
   SDLTest_AssertCheck( compiled.major >= major,
aschiffler@6756
   243
             "SDL_VERSION() returned major %i (>= %i)",
aschiffler@6756
   244
             compiled.major,
aschiffler@6756
   245
             major);
aschiffler@6756
   246
   SDLTest_AssertCheck( compiled.minor >= minor,
aschiffler@6756
   247
             "SDL_VERSION() returned minor %i (>= %i)",
aschiffler@6756
   248
             compiled.minor,
aschiffler@6756
   249
             minor);
aschiffler@6756
   250
aschiffler@6756
   251
   return TEST_COMPLETED;
aschiffler@6756
   252
}
aschiffler@6756
   253
aschiffler@6756
   254
gabomdq@7678
   255
/* !
aschiffler@6756
   256
 * \brief Tests default SDL_Init
aschiffler@6756
   257
 */
aschiffler@6756
   258
int platform_testDefaultInit(void *arg)
aschiffler@6756
   259
{
aschiffler@6756
   260
   int ret;
aschiffler@6756
   261
   int subsystem;
aschiffler@6756
   262
aschiffler@6756
   263
   subsystem = SDL_WasInit(SDL_INIT_EVERYTHING);
aschiffler@6756
   264
   SDLTest_AssertCheck( subsystem != 0,
aschiffler@6756
   265
             "SDL_WasInit(0): returned %i, expected != 0",
aschiffler@6756
   266
             subsystem);
aschiffler@6756
   267
aschiffler@6756
   268
   ret = SDL_Init(SDL_WasInit(SDL_INIT_EVERYTHING));
aschiffler@6756
   269
   SDLTest_AssertCheck( ret == 0,
aschiffler@6756
   270
             "SDL_Init(0): returned %i, expected 0, error: %s",
aschiffler@6756
   271
             ret,
aschiffler@6756
   272
             SDL_GetError());
aschiffler@6756
   273
aschiffler@6756
   274
   return TEST_COMPLETED;
aschiffler@6756
   275
}
aschiffler@6756
   276
gabomdq@7678
   277
/* !
aschiffler@6756
   278
 * \brief Tests SDL_Get/Set/ClearError
aschiffler@6756
   279
 * \sa
aschiffler@6756
   280
 * http://wiki.libsdl.org/moin.cgi/SDL_GetError
aschiffler@6756
   281
 * http://wiki.libsdl.org/moin.cgi/SDL_SetError
aschiffler@6756
   282
 * http://wiki.libsdl.org/moin.cgi/SDL_ClearError
aschiffler@6756
   283
 */
aschiffler@6756
   284
int platform_testGetSetClearError(void *arg)
aschiffler@6756
   285
{
aschiffler@8605
   286
   int result;
aschiffler@6756
   287
   const char *testError = "Testing";
aschiffler@6756
   288
   char *lastError;
aschiffler@6756
   289
   int len;
aschiffler@6756
   290
aschiffler@6756
   291
   SDL_ClearError();
aschiffler@6756
   292
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   293
aschiffler@6756
   294
   lastError = (char *)SDL_GetError();
aschiffler@6756
   295
   SDLTest_AssertPass("SDL_GetError()");
aschiffler@6756
   296
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   297
             "SDL_GetError() != NULL");
aschiffler@6756
   298
   if (lastError != NULL)
aschiffler@6756
   299
   {
aschiffler@6778
   300
     len = SDL_strlen(lastError);
aschiffler@6756
   301
     SDLTest_AssertCheck(len == 0,
aschiffler@6756
   302
             "SDL_GetError(): no message expected, len: %i", len);
aschiffler@6756
   303
   }
aschiffler@6756
   304
aschiffler@8605
   305
   result = SDL_SetError("%s", testError);
aschiffler@6756
   306
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   307
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   308
   lastError = (char *)SDL_GetError();
aschiffler@6756
   309
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   310
             "SDL_GetError() != NULL");
aschiffler@6756
   311
   if (lastError != NULL)
aschiffler@6756
   312
   {
aschiffler@6778
   313
     len = SDL_strlen(lastError);
aschiffler@6778
   314
     SDLTest_AssertCheck(len == SDL_strlen(testError),
aschiffler@6756
   315
             "SDL_GetError(): expected message len %i, was len: %i",
aschiffler@6778
   316
             SDL_strlen(testError),
aschiffler@6756
   317
             len);
aschiffler@6778
   318
     SDLTest_AssertCheck(SDL_strcmp(lastError, testError) == 0,
aschiffler@6756
   319
             "SDL_GetError(): expected message %s, was message: %s",
aschiffler@6756
   320
             testError,
aschiffler@6756
   321
             lastError);
aschiffler@6756
   322
   }
aschiffler@6756
   323
gabomdq@7663
   324
   /* Clean up */
aschiffler@6756
   325
   SDL_ClearError();
aschiffler@6756
   326
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   327
aschiffler@6756
   328
   return TEST_COMPLETED;
aschiffler@6756
   329
}
aschiffler@6756
   330
gabomdq@7678
   331
/* !
aschiffler@6756
   332
 * \brief Tests SDL_SetError with empty input
aschiffler@6756
   333
 * \sa
aschiffler@6756
   334
 * http://wiki.libsdl.org/moin.cgi/SDL_SetError
aschiffler@6756
   335
 */
aschiffler@6756
   336
int platform_testSetErrorEmptyInput(void *arg)
aschiffler@6756
   337
{
aschiffler@8605
   338
   int result;
aschiffler@6756
   339
   const char *testError = "";
aschiffler@6756
   340
   char *lastError;
aschiffler@6756
   341
   int len;
aschiffler@6756
   342
aschiffler@8605
   343
   result = SDL_SetError("%s", testError);
aschiffler@6756
   344
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   345
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   346
   lastError = (char *)SDL_GetError();
aschiffler@6756
   347
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   348
             "SDL_GetError() != NULL");
aschiffler@6756
   349
   if (lastError != NULL)
aschiffler@6756
   350
   {
aschiffler@6778
   351
     len = SDL_strlen(lastError);
aschiffler@6778
   352
     SDLTest_AssertCheck(len == SDL_strlen(testError),
aschiffler@6756
   353
             "SDL_GetError(): expected message len %i, was len: %i",
aschiffler@6778
   354
             SDL_strlen(testError),
aschiffler@6756
   355
             len);
aschiffler@6778
   356
     SDLTest_AssertCheck(SDL_strcmp(lastError, testError) == 0,
aschiffler@6756
   357
             "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6756
   358
             testError,
aschiffler@6756
   359
             lastError);
aschiffler@6756
   360
   }
aschiffler@6756
   361
gabomdq@7663
   362
   /* Clean up */
aschiffler@6756
   363
   SDL_ClearError();
aschiffler@6756
   364
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   365
aschiffler@6756
   366
   return TEST_COMPLETED;
aschiffler@6756
   367
}
aschiffler@6756
   368
gabomdq@7678
   369
/* !
aschiffler@6756
   370
 * \brief Tests SDL_SetError with invalid input
aschiffler@6756
   371
 * \sa
aschiffler@6756
   372
 * http://wiki.libsdl.org/moin.cgi/SDL_SetError
aschiffler@6756
   373
 */
aschiffler@6756
   374
int platform_testSetErrorInvalidInput(void *arg)
aschiffler@6756
   375
{
aschiffler@8605
   376
   int result;
aschiffler@8605
   377
   const char *invalidError = NULL;
aschiffler@6756
   378
   const char *probeError = "Testing";
aschiffler@6756
   379
   char *lastError;
aschiffler@6756
   380
   int len;
aschiffler@6756
   381
gabomdq@7663
   382
   /* Reset */
aschiffler@6756
   383
   SDL_ClearError();
aschiffler@6756
   384
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   385
gabomdq@7663
   386
   /* Check for no-op */
aschiffler@8605
   387
   result = SDL_SetError(invalidError);
aschiffler@6756
   388
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   389
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   390
   lastError = (char *)SDL_GetError();
aschiffler@6756
   391
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   392
             "SDL_GetError() != NULL");
aschiffler@6756
   393
   if (lastError != NULL)
aschiffler@6756
   394
   {
aschiffler@6778
   395
     len = SDL_strlen(lastError);
aschiffler@6756
   396
     SDLTest_AssertCheck(len == 0,
aschiffler@6756
   397
             "SDL_GetError(): expected message len 0, was len: %i",
aschiffler@6756
   398
             0,
aschiffler@6756
   399
             len);
aschiffler@6778
   400
     SDLTest_AssertCheck(SDL_strcmp(lastError, "") == 0,
aschiffler@6756
   401
             "SDL_GetError(): expected message '', was message: '%s'",
aschiffler@6756
   402
             lastError);
aschiffler@6756
   403
   }
aschiffler@6756
   404
gabomdq@7663
   405
   /* Set */
aschiffler@8605
   406
   result = SDL_SetError(probeError);
aschiffler@6756
   407
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   408
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   409
gabomdq@7663
   410
   /* Check for no-op */
aschiffler@8605
   411
   result = SDL_SetError(invalidError);
aschiffler@6756
   412
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   413
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@6756
   414
   lastError = (char *)SDL_GetError();
aschiffler@6756
   415
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@6756
   416
             "SDL_GetError() != NULL");
aschiffler@6756
   417
   if (lastError != NULL)
aschiffler@6756
   418
   {
aschiffler@6778
   419
     len = SDL_strlen(lastError);
aschiffler@6778
   420
     SDLTest_AssertCheck(len == SDL_strlen(probeError),
aschiffler@6756
   421
             "SDL_GetError(): expected message len %i, was len: %i",
aschiffler@6778
   422
             SDL_strlen(probeError),
aschiffler@6756
   423
             len);
aschiffler@6778
   424
     SDLTest_AssertCheck(SDL_strcmp(lastError, probeError) == 0,
aschiffler@6756
   425
             "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6756
   426
             probeError,
aschiffler@6756
   427
             lastError);
aschiffler@6756
   428
   }
aschiffler@6756
   429
aschiffler@8605
   430
   /* Reset */
aschiffler@8605
   431
   SDL_ClearError();
aschiffler@8605
   432
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@8605
   433
aschiffler@8605
   434
   /* Set and check */
aschiffler@8605
   435
   result = SDL_SetError(probeError);
aschiffler@8605
   436
   SDLTest_AssertPass("SDL_SetError()");
aschiffler@8605
   437
   SDLTest_AssertCheck(result == -1, "SDL_SetError: expected -1, got: %i", result);
aschiffler@8605
   438
   lastError = (char *)SDL_GetError();
aschiffler@8605
   439
   SDLTest_AssertCheck(lastError != NULL,
aschiffler@8605
   440
             "SDL_GetError() != NULL");
aschiffler@8605
   441
   if (lastError != NULL)
aschiffler@8605
   442
   {
aschiffler@8605
   443
     len = SDL_strlen(lastError);
aschiffler@8605
   444
     SDLTest_AssertCheck(len == SDL_strlen(probeError),
aschiffler@8605
   445
             "SDL_GetError(): expected message len %i, was len: %i",
aschiffler@8605
   446
             SDL_strlen(probeError),
aschiffler@8605
   447
             len);
aschiffler@8605
   448
     SDLTest_AssertCheck(SDL_strcmp(lastError, probeError) == 0,
aschiffler@8605
   449
             "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@8605
   450
             probeError,
aschiffler@8605
   451
             lastError);
aschiffler@8605
   452
   }
aschiffler@8605
   453
   
gabomdq@7663
   454
   /* Clean up */
aschiffler@6756
   455
   SDL_ClearError();
aschiffler@6756
   456
   SDLTest_AssertPass("SDL_ClearError()");
aschiffler@6756
   457
aschiffler@6756
   458
   return TEST_COMPLETED;
aschiffler@6756
   459
}
aschiffler@6756
   460
gabomdq@7678
   461
/* !
aschiffler@6756
   462
 * \brief Tests SDL_GetPowerInfo
aschiffler@6756
   463
 * \sa
aschiffler@6756
   464
 * http://wiki.libsdl.org/moin.cgi/SDL_GetPowerInfo
aschiffler@6756
   465
 */
aschiffler@6756
   466
int platform_testGetPowerInfo(void *arg)
aschiffler@6756
   467
{
aschiffler@6756
   468
   SDL_PowerState state;
aschiffler@6756
   469
   SDL_PowerState stateAgain;
aschiffler@6756
   470
   int secs;
aschiffler@6756
   471
   int secsAgain;
aschiffler@6756
   472
   int pct;
aschiffler@6756
   473
   int pctAgain;
aschiffler@6756
   474
aschiffler@6756
   475
   state = SDL_GetPowerInfo(&secs, &pct);
aschiffler@6756
   476
   SDLTest_AssertPass("SDL_GetPowerInfo()");
aschiffler@6756
   477
   SDLTest_AssertCheck(
aschiffler@6756
   478
       state==SDL_POWERSTATE_UNKNOWN ||
aschiffler@6756
   479
       state==SDL_POWERSTATE_ON_BATTERY ||
aschiffler@6756
   480
       state==SDL_POWERSTATE_NO_BATTERY ||
aschiffler@6756
   481
       state==SDL_POWERSTATE_CHARGING ||
aschiffler@6756
   482
       state==SDL_POWERSTATE_CHARGED,
aschiffler@6756
   483
       "SDL_GetPowerInfo(): state %i is one of the expected values",
aschiffler@6756
   484
       (int)state);
aschiffler@6756
   485
aschiffler@6756
   486
   if (state==SDL_POWERSTATE_ON_BATTERY)
aschiffler@6756
   487
   {
aschiffler@6756
   488
      SDLTest_AssertCheck(
aschiffler@6756
   489
         secs >= 0,
aschiffler@6756
   490
         "SDL_GetPowerInfo(): on battery, secs >= 0, was: %i",
aschiffler@6756
   491
         secs);
aschiffler@6756
   492
      SDLTest_AssertCheck(
aschiffler@6756
   493
         (pct >= 0) && (pct <= 100),
aschiffler@6756
   494
         "SDL_GetPowerInfo(): on battery, pct=[0,100], was: %i",
aschiffler@6756
   495
         pct);
aschiffler@6756
   496
   }
aschiffler@6756
   497
aschiffler@6756
   498
   if (state==SDL_POWERSTATE_UNKNOWN ||
aschiffler@6756
   499
       state==SDL_POWERSTATE_NO_BATTERY)
aschiffler@6756
   500
   {
aschiffler@6756
   501
      SDLTest_AssertCheck(
aschiffler@6756
   502
         secs == -1,
aschiffler@6756
   503
         "SDL_GetPowerInfo(): no battery, secs == -1, was: %i",
aschiffler@6756
   504
         secs);
aschiffler@6756
   505
      SDLTest_AssertCheck(
aschiffler@6756
   506
         pct == -1,
aschiffler@6756
   507
         "SDL_GetPowerInfo(): no battery, pct == -1, was: %i",
aschiffler@6756
   508
         pct);
aschiffler@6756
   509
   }
aschiffler@6756
   510
gabomdq@7663
   511
   /* Partial return value variations */
aschiffler@6756
   512
   stateAgain = SDL_GetPowerInfo(&secsAgain, NULL);
aschiffler@6756
   513
   SDLTest_AssertCheck(
aschiffler@6756
   514
        state==stateAgain,
aschiffler@6756
   515
        "State %i returned when only 'secs' requested",
aschiffler@6756
   516
        stateAgain);
aschiffler@6756
   517
   SDLTest_AssertCheck(
aschiffler@6756
   518
        secs==secsAgain,
aschiffler@6756
   519
        "Value %i matches when only 'secs' requested",
aschiffler@6756
   520
        secsAgain);
aschiffler@6756
   521
   stateAgain = SDL_GetPowerInfo(NULL, &pctAgain);
aschiffler@6756
   522
   SDLTest_AssertCheck(
aschiffler@6756
   523
        state==stateAgain,
aschiffler@6756
   524
        "State %i returned when only 'pct' requested",
aschiffler@6756
   525
        stateAgain);
aschiffler@6756
   526
   SDLTest_AssertCheck(
aschiffler@6756
   527
        pct==pctAgain,
aschiffler@6756
   528
        "Value %i matches when only 'pct' requested",
aschiffler@6756
   529
        pctAgain);
aschiffler@6756
   530
   stateAgain = SDL_GetPowerInfo(NULL, NULL);
aschiffler@6756
   531
   SDLTest_AssertCheck(
aschiffler@6756
   532
        state==stateAgain,
aschiffler@6756
   533
        "State %i returned when no value requested",
aschiffler@6756
   534
        stateAgain);
aschiffler@6756
   535
aschiffler@6756
   536
   return TEST_COMPLETED;
aschiffler@6756
   537
}
aschiffler@6756
   538
aschiffler@6756
   539
/* ================= Test References ================== */
aschiffler@6756
   540
aschiffler@6756
   541
/* Platform test cases */
aschiffler@6756
   542
static const SDLTest_TestCaseReference platformTest1 =
slouken@7191
   543
        { (SDLTest_TestCaseFp)platform_testTypes, "platform_testTypes", "Tests predefined types", TEST_ENABLED};
aschiffler@6756
   544
aschiffler@6756
   545
static const SDLTest_TestCaseReference platformTest2 =
slouken@7191
   546
        { (SDLTest_TestCaseFp)platform_testEndianessAndSwap, "platform_testEndianessAndSwap", "Tests endianess and swap functions", TEST_ENABLED};
aschiffler@6756
   547
aschiffler@6756
   548
static const SDLTest_TestCaseReference platformTest3 =
slouken@7191
   549
        { (SDLTest_TestCaseFp)platform_testGetFunctions, "platform_testGetFunctions", "Tests various SDL_GetXYZ functions", TEST_ENABLED};
aschiffler@6756
   550
aschiffler@6756
   551
static const SDLTest_TestCaseReference platformTest4 =
slouken@7191
   552
        { (SDLTest_TestCaseFp)platform_testHasFunctions, "platform_testHasFunctions", "Tests various SDL_HasXYZ functions", TEST_ENABLED};
aschiffler@6756
   553
aschiffler@6756
   554
static const SDLTest_TestCaseReference platformTest5 =
slouken@7191
   555
        { (SDLTest_TestCaseFp)platform_testGetVersion, "platform_testGetVersion", "Tests SDL_GetVersion function", TEST_ENABLED};
aschiffler@6756
   556
aschiffler@6756
   557
static const SDLTest_TestCaseReference platformTest6 =
slouken@7191
   558
        { (SDLTest_TestCaseFp)platform_testSDLVersion, "platform_testSDLVersion", "Tests SDL_VERSION macro", TEST_ENABLED};
aschiffler@6756
   559
aschiffler@6756
   560
static const SDLTest_TestCaseReference platformTest7 =
slouken@7191
   561
        { (SDLTest_TestCaseFp)platform_testDefaultInit, "platform_testDefaultInit", "Tests default SDL_Init", TEST_ENABLED};
aschiffler@6756
   562
aschiffler@6756
   563
static const SDLTest_TestCaseReference platformTest8 =
slouken@7191
   564
        { (SDLTest_TestCaseFp)platform_testGetSetClearError, "platform_testGetSetClearError", "Tests SDL_Get/Set/ClearError", TEST_ENABLED};
aschiffler@6756
   565
aschiffler@6756
   566
static const SDLTest_TestCaseReference platformTest9 =
slouken@7191
   567
        { (SDLTest_TestCaseFp)platform_testSetErrorEmptyInput, "platform_testSetErrorEmptyInput", "Tests SDL_SetError with empty input", TEST_ENABLED};
aschiffler@6756
   568
aschiffler@6756
   569
static const SDLTest_TestCaseReference platformTest10 =
slouken@7191
   570
        { (SDLTest_TestCaseFp)platform_testSetErrorInvalidInput, "platform_testSetErrorInvalidInput", "Tests SDL_SetError with invalid input", TEST_ENABLED};
aschiffler@6756
   571
aschiffler@6756
   572
static const SDLTest_TestCaseReference platformTest11 =
slouken@7191
   573
        { (SDLTest_TestCaseFp)platform_testGetPowerInfo, "platform_testGetPowerInfo", "Tests SDL_GetPowerInfo function", TEST_ENABLED };
aschiffler@6756
   574
aschiffler@6756
   575
/* Sequence of Platform test cases */
aschiffler@6756
   576
static const SDLTest_TestCaseReference *platformTests[] =  {
slouken@7191
   577
    &platformTest1,
slouken@7191
   578
    &platformTest2,
slouken@7191
   579
    &platformTest3,
slouken@7191
   580
    &platformTest4,
slouken@7191
   581
    &platformTest5,
slouken@7191
   582
    &platformTest6,
slouken@7191
   583
    &platformTest7,
slouken@7191
   584
    &platformTest8,
slouken@7191
   585
    &platformTest9,
slouken@7191
   586
    &platformTest10,
slouken@7191
   587
    &platformTest11,
slouken@7191
   588
    NULL
aschiffler@6756
   589
};
aschiffler@6756
   590
aschiffler@6756
   591
/* Platform test suite (global) */
aschiffler@6756
   592
SDLTest_TestSuiteReference platformTestSuite = {
slouken@7191
   593
    "Platform",
slouken@7191
   594
    NULL,
slouken@7191
   595
    platformTests,
slouken@7191
   596
    NULL
aschiffler@6756
   597
};