test/testautomation_rwops.c
author Alex Baines <alex@abaines.me.uk>
Tue, 19 Aug 2014 23:31:50 +0100
changeset 9097 56d712662a82
parent 8761 bce4122e6e87
child 9219 c65108ddbeb0
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@6781
     1
aschiffler@6760
     2
/**
aschiffler@6760
     3
 * Automated SDL_RWops test.
aschiffler@6760
     4
 *
aschiffler@6760
     5
 * Original code written by Edgar Simo "bobbens"
aschiffler@6760
     6
 * Ported by Markus Kauppila (markus.kauppila@gmail.com)
aschiffler@6819
     7
 * Updated and extended for SDL_test by aschiffler at ferzkopp dot net
aschiffler@6760
     8
 *
aschiffler@6760
     9
 * Released under Public Domain.
aschiffler@6760
    10
 */
aschiffler@6760
    11
aschiffler@6760
    12
/* quiet windows compiler warnings */
aschiffler@6760
    13
#define _CRT_SECURE_NO_WARNINGS
aschiffler@6760
    14
aschiffler@6760
    15
#include <stdio.h>
aschiffler@6760
    16
aschiffler@6760
    17
#include "SDL.h"
aschiffler@6760
    18
#include "SDL_test.h"
aschiffler@6760
    19
aschiffler@6760
    20
/* ================= Test Case Implementation ================== */
aschiffler@6760
    21
aschiffler@6760
    22
const char* RWopsReadTestFilename = "rwops_read";
aschiffler@6760
    23
const char* RWopsWriteTestFilename = "rwops_write";
aschiffler@6999
    24
const char* RWopsAlphabetFilename = "rwops_alphabet";
aschiffler@6760
    25
aschiffler@6760
    26
static const char RWopsHelloWorldTestString[] = "Hello World!";
aschiffler@6760
    27
static const char RWopsHelloWorldCompString[] = "Hello World!";
aschiffler@6999
    28
static const char RWopsAlphabetString[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
aschiffler@6760
    29
aschiffler@6760
    30
/* Fixture */
aschiffler@6760
    31
aschiffler@6760
    32
void
aschiffler@6760
    33
RWopsSetUp(void *arg)
aschiffler@6760
    34
{
slouken@7191
    35
    int fileLen;
slouken@7191
    36
    FILE *handle;
slouken@7191
    37
    int writtenLen;
slouken@7191
    38
    int result;
aschiffler@6760
    39
slouken@7191
    40
    /* Clean up from previous runs (if any); ignore errors */
slouken@7191
    41
    remove(RWopsReadTestFilename);
slouken@7191
    42
    remove(RWopsWriteTestFilename);
slouken@7191
    43
    remove(RWopsAlphabetFilename);
aschiffler@6760
    44
slouken@7191
    45
    /* Create a test file */
slouken@7191
    46
    handle = fopen(RWopsReadTestFilename, "w");
slouken@7191
    47
    SDLTest_AssertCheck(handle != NULL, "Verify creation of file '%s' returned non NULL handle", RWopsReadTestFilename);
aschiffler@6819
    48
        if (handle == NULL) return;
aschiffler@6760
    49
slouken@7191
    50
    /* Write some known text into it */
slouken@7191
    51
    fileLen = SDL_strlen(RWopsHelloWorldTestString);
slouken@7191
    52
    writtenLen = (int)fwrite(RWopsHelloWorldTestString, 1, fileLen, handle);
slouken@7191
    53
    SDLTest_AssertCheck(fileLen == writtenLen, "Verify number of written bytes, expected %i, got %i", fileLen, writtenLen);
slouken@7191
    54
    result = fclose(handle);
slouken@7191
    55
    SDLTest_AssertCheck(result == 0, "Verify result from fclose, expected 0, got %i", result);
aschiffler@6760
    56
slouken@7191
    57
    /* Create a second test file */
slouken@7191
    58
    handle = fopen(RWopsAlphabetFilename, "w");
slouken@7191
    59
    SDLTest_AssertCheck(handle != NULL, "Verify creation of file '%s' returned non NULL handle", RWopsAlphabetFilename);
aschiffler@6999
    60
        if (handle == NULL) return;
aschiffler@6999
    61
slouken@7191
    62
    /* Write alphabet text into it */
slouken@7191
    63
    fileLen = SDL_strlen(RWopsAlphabetString);
slouken@7191
    64
    writtenLen = (int)fwrite(RWopsAlphabetString, 1, fileLen, handle);
slouken@7191
    65
    SDLTest_AssertCheck(fileLen == writtenLen, "Verify number of written bytes, expected %i, got %i", fileLen, writtenLen);
slouken@7191
    66
    result = fclose(handle);
slouken@7191
    67
    SDLTest_AssertCheck(result == 0, "Verify result from fclose, expected 0, got %i", result);
aschiffler@6999
    68
slouken@7191
    69
    SDLTest_AssertPass("Creation of test file completed");
aschiffler@6760
    70
}
aschiffler@6760
    71
aschiffler@6760
    72
void
aschiffler@6760
    73
RWopsTearDown(void *arg)
aschiffler@6760
    74
{
slouken@7191
    75
    int result;
aschiffler@6760
    76
slouken@7191
    77
    /* Remove the created files to clean up; ignore errors for write filename */
slouken@7191
    78
    result = remove(RWopsReadTestFilename);
slouken@7191
    79
    SDLTest_AssertCheck(result == 0, "Verify result from remove(%s), expected 0, got %i", RWopsReadTestFilename, result);
slouken@7191
    80
    remove(RWopsWriteTestFilename);
slouken@7191
    81
    result = remove(RWopsAlphabetFilename);
slouken@7191
    82
    SDLTest_AssertCheck(result == 0, "Verify result from remove(%s), expected 0, got %i", RWopsAlphabetFilename, result);
slouken@7191
    83
slouken@7191
    84
    SDLTest_AssertPass("Cleanup of test files completed");
aschiffler@6760
    85
}
aschiffler@6760
    86
aschiffler@6760
    87
/**
aschiffler@6760
    88
 * @brief Makes sure parameters work properly. Local helper function.
aschiffler@6760
    89
 *
aschiffler@6760
    90
 * \sa
aschiffler@6760
    91
 * http://wiki.libsdl.org/moin.cgi/SDL_RWseek
aschiffler@6760
    92
 * http://wiki.libsdl.org/moin.cgi/SDL_RWread
aschiffler@6760
    93
 */
slouken@7191
    94
void
aschiffler@6760
    95
_testGenericRWopsValidations(SDL_RWops *rw, int write)
aschiffler@6760
    96
{
aschiffler@6760
    97
   char buf[sizeof(RWopsHelloWorldTestString)];
aschiffler@6779
    98
   Sint64 i;
aschiffler@6996
    99
   size_t s;
aschiffler@6760
   100
   int seekPos = SDLTest_RandomIntegerInRange(4, 8);
aschiffler@6760
   101
aschiffler@6760
   102
   /* Clear buffer */
aschiffler@6760
   103
   SDL_zero(buf);
aschiffler@6760
   104
aschiffler@6760
   105
   /* Set to start. */
aschiffler@6760
   106
   i = SDL_RWseek(rw, 0, RW_SEEK_SET );
aschiffler@6760
   107
   SDLTest_AssertPass("Call to SDL_RWseek succeeded");
aschiffler@6779
   108
   SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_RWseek (RW_SEEK_SET), expected 0, got %i", i);
aschiffler@6760
   109
aschiffler@6760
   110
   /* Test write. */
aschiffler@6996
   111
   s = SDL_RWwrite(rw, RWopsHelloWorldTestString, sizeof(RWopsHelloWorldTestString)-1, 1);
aschiffler@6760
   112
   SDLTest_AssertPass("Call to SDL_RWwrite succeeded");
aschiffler@6760
   113
   if (write) {
slouken@7191
   114
        SDLTest_AssertCheck(s == (size_t)1, "Verify result of writing one byte with SDL_RWwrite, expected 1, got %i", s);
aschiffler@6760
   115
   }
aschiffler@6760
   116
   else {
slouken@7191
   117
        SDLTest_AssertCheck(s == (size_t)0, "Verify result of writing with SDL_RWwrite, expected: 0, got %i", s);
aschiffler@6760
   118
   }
aschiffler@6760
   119
aschiffler@6760
   120
   /* Test seek to random position */
aschiffler@6760
   121
   i = SDL_RWseek( rw, seekPos, RW_SEEK_SET );
aschiffler@6760
   122
   SDLTest_AssertPass("Call to SDL_RWseek succeeded");
aschiffler@6779
   123
   SDLTest_AssertCheck(i == (Sint64)seekPos, "Verify seek to %i with SDL_RWseek (RW_SEEK_SET), expected %i, got %i", seekPos, seekPos, i);
aschiffler@6760
   124
aschiffler@6760
   125
   /* Test seek back to start */
aschiffler@6760
   126
   i = SDL_RWseek(rw, 0, RW_SEEK_SET );
aschiffler@6760
   127
   SDLTest_AssertPass("Call to SDL_RWseek succeeded");
aschiffler@6779
   128
   SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_RWseek (RW_SEEK_SET), expected 0, got %i", i);
aschiffler@6760
   129
aschiffler@6760
   130
   /* Test read */
aschiffler@6996
   131
   s = SDL_RWread( rw, buf, 1, sizeof(RWopsHelloWorldTestString)-1 );
aschiffler@6760
   132
   SDLTest_AssertPass("Call to SDL_RWread succeeded");
aschiffler@6760
   133
   SDLTest_AssertCheck(
slouken@7191
   134
       s == (size_t)(sizeof(RWopsHelloWorldTestString)-1),
slouken@7191
   135
       "Verify result from SDL_RWread, expected %i, got %i",
slouken@7191
   136
       sizeof(RWopsHelloWorldTestString)-1,
slouken@7191
   137
       s);
aschiffler@6760
   138
   SDLTest_AssertCheck(
slouken@7191
   139
       SDL_memcmp(buf, RWopsHelloWorldTestString, sizeof(RWopsHelloWorldTestString)-1 ) == 0,
slouken@7191
   140
       "Verify read bytes match expected string, expected '%s', got '%s'", RWopsHelloWorldTestString, buf);
aschiffler@6760
   141
aschiffler@6760
   142
   /* More seek tests. */
aschiffler@6760
   143
   i = SDL_RWseek( rw, -4, RW_SEEK_CUR );
aschiffler@6760
   144
   SDLTest_AssertPass("Call to SDL_RWseek(...,-4,RW_SEEK_CUR) succeeded");
aschiffler@6760
   145
   SDLTest_AssertCheck(
slouken@7191
   146
       i == (Sint64)(sizeof(RWopsHelloWorldTestString)-5),
slouken@7191
   147
       "Verify seek to -4 with SDL_RWseek (RW_SEEK_CUR), expected %i, got %i",
slouken@7191
   148
       sizeof(RWopsHelloWorldTestString)-5,
slouken@7191
   149
       i);
aschiffler@6760
   150
aschiffler@6760
   151
   i = SDL_RWseek( rw, -1, RW_SEEK_END );
aschiffler@6760
   152
   SDLTest_AssertPass("Call to SDL_RWseek(...,-1,RW_SEEK_END) succeeded");
aschiffler@6760
   153
   SDLTest_AssertCheck(
slouken@7191
   154
       i == (Sint64)(sizeof(RWopsHelloWorldTestString)-2),
slouken@7191
   155
       "Verify seek to -1 with SDL_RWseek (RW_SEEK_END), expected %i, got %i",
slouken@7191
   156
       sizeof(RWopsHelloWorldTestString)-2,
slouken@7191
   157
       i);
slouken@7191
   158
aschiffler@6999
   159
   /* Invalid whence seek */
aschiffler@6999
   160
   i = SDL_RWseek( rw, 0, 999 );
aschiffler@6999
   161
   SDLTest_AssertPass("Call to SDL_RWseek(...,0,invalid_whence) succeeded");
aschiffler@6999
   162
   SDLTest_AssertCheck(
slouken@7191
   163
       i == (Sint64)(-1),
slouken@7191
   164
       "Verify seek with SDL_RWseek (invalid_whence); expected: -1, got %i",
slouken@7191
   165
       i);
aschiffler@6760
   166
}
aschiffler@6760
   167
gabomdq@7678
   168
/* !
aschiffler@6760
   169
 * Negative test for SDL_RWFromFile parameters
aschiffler@6760
   170
 *
aschiffler@6760
   171
 * \sa http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile
aschiffler@6760
   172
 *
aschiffler@6760
   173
 */
aschiffler@6760
   174
int
aschiffler@6760
   175
rwops_testParamNegative (void)
aschiffler@6760
   176
{
aschiffler@6760
   177
   SDL_RWops *rwops;
aschiffler@6760
   178
aschiffler@6760
   179
   /* These should all fail. */
aschiffler@6760
   180
   rwops = SDL_RWFromFile(NULL, NULL);
aschiffler@6760
   181
   SDLTest_AssertPass("Call to SDL_RWFromFile(NULL, NULL) succeeded");
aschiffler@6760
   182
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(NULL, NULL) returns NULL");
aschiffler@6760
   183
aschiffler@6760
   184
   rwops = SDL_RWFromFile(NULL, "ab+");
aschiffler@6760
   185
   SDLTest_AssertPass("Call to SDL_RWFromFile(NULL, \"ab+\") succeeded");
aschiffler@6760
   186
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(NULL, \"ab+\") returns NULL");
aschiffler@6760
   187
aschiffler@6760
   188
   rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj");
aschiffler@6760
   189
   SDLTest_AssertPass("Call to SDL_RWFromFile(NULL, \"sldfkjsldkfj\") succeeded");
aschiffler@6760
   190
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(NULL, \"sldfkjsldkfj\") returns NULL");
aschiffler@6760
   191
aschiffler@6760
   192
   rwops = SDL_RWFromFile("something", "");
aschiffler@6760
   193
   SDLTest_AssertPass("Call to SDL_RWFromFile(\"something\", \"\") succeeded");
aschiffler@6760
   194
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(\"something\", \"\") returns NULL");
aschiffler@6760
   195
aschiffler@6760
   196
   rwops = SDL_RWFromFile("something", NULL);
aschiffler@6760
   197
   SDLTest_AssertPass("Call to SDL_RWFromFile(\"something\", NULL) succeeded");
aschiffler@6760
   198
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(\"something\", NULL) returns NULL");
aschiffler@6760
   199
aschiffler@6999
   200
   rwops = SDL_RWFromMem((void *)NULL, 10);
aschiffler@6999
   201
   SDLTest_AssertPass("Call to SDL_RWFromMem(NULL, 10) succeeded");
aschiffler@6999
   202
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromMem(NULL, 10) returns NULL");
aschiffler@6999
   203
aschiffler@6999
   204
   rwops = SDL_RWFromMem((void *)RWopsAlphabetString, 0);
aschiffler@6999
   205
   SDLTest_AssertPass("Call to SDL_RWFromMem(data, 0) succeeded");
aschiffler@6999
   206
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromMem(data, 0) returns NULL");
aschiffler@6999
   207
aschiffler@6999
   208
   rwops = SDL_RWFromConstMem((const void *)RWopsAlphabetString, 0);
aschiffler@6999
   209
   SDLTest_AssertPass("Call to SDL_RWFromConstMem(data, 0) succeeded");
aschiffler@6999
   210
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromConstMem(data, 0) returns NULL");
aschiffler@6999
   211
aschiffler@6760
   212
   return TEST_COMPLETED;
aschiffler@6760
   213
}
aschiffler@6760
   214
aschiffler@6760
   215
/**
aschiffler@6760
   216
 * @brief Tests opening from memory.
aschiffler@6760
   217
 *
aschiffler@6760
   218
 * \sa http://wiki.libsdl.org/moin.cgi/SDL_RWFromMem
aschiffler@6999
   219
 * \sa http://wiki.libsdl.org/moin.cgi/SDL_RWClose
aschiffler@6760
   220
 */
aschiffler@6760
   221
int
aschiffler@6760
   222
rwops_testMem (void)
aschiffler@6760
   223
{
aschiffler@6760
   224
   char mem[sizeof(RWopsHelloWorldTestString)];
aschiffler@6760
   225
   SDL_RWops *rw;
aschiffler@6999
   226
   int result;
aschiffler@6760
   227
aschiffler@6760
   228
   /* Clear buffer */
aschiffler@6760
   229
   SDL_zero(mem);
aschiffler@6760
   230
aschiffler@6760
   231
   /* Open */
aschiffler@6760
   232
   rw = SDL_RWFromMem(mem, sizeof(RWopsHelloWorldTestString)-1);
aschiffler@6760
   233
   SDLTest_AssertPass("Call to SDL_RWFromMem() succeeded");
aschiffler@6760
   234
   SDLTest_AssertCheck(rw != NULL, "Verify opening memory with SDL_RWFromMem does not return NULL");
aschiffler@6760
   235
aschiffler@6760
   236
   /* Bail out if NULL */
aschiffler@6760
   237
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   238
aschiffler@6999
   239
   /* Check type */
aschiffler@6999
   240
   SDLTest_AssertCheck(rw->type == SDL_RWOPS_MEMORY, "Verify RWops type is SDL_RWOPS_MEMORY; expected: %d, got: %d", SDL_RWOPS_MEMORY, rw->type);
aschiffler@6999
   241
aschiffler@6760
   242
   /* Run generic tests */
aschiffler@6760
   243
   _testGenericRWopsValidations(rw, 1);
aschiffler@6760
   244
aschiffler@6760
   245
   /* Close */
aschiffler@6999
   246
   result = SDL_RWclose(rw);
aschiffler@6760
   247
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6999
   248
   SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
aschiffler@6760
   249
aschiffler@6760
   250
   return TEST_COMPLETED;
aschiffler@6760
   251
}
aschiffler@6760
   252
aschiffler@6760
   253
aschiffler@6760
   254
/**
aschiffler@6760
   255
 * @brief Tests opening from memory.
aschiffler@6760
   256
 *
aschiffler@6760
   257
 * \sa
aschiffler@6760
   258
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromConstMem
aschiffler@6819
   259
 * http://wiki.libsdl.org/moin.cgi/SDL_RWClose
aschiffler@6760
   260
 */
slouken@7191
   261
int
aschiffler@6760
   262
rwops_testConstMem (void)
aschiffler@6760
   263
{
aschiffler@6760
   264
   SDL_RWops *rw;
aschiffler@6999
   265
   int result;
aschiffler@6760
   266
aschiffler@6760
   267
   /* Open handle */
aschiffler@6760
   268
   rw = SDL_RWFromConstMem( RWopsHelloWorldCompString, sizeof(RWopsHelloWorldCompString)-1 );
aschiffler@6760
   269
   SDLTest_AssertPass("Call to SDL_RWFromConstMem() succeeded");
aschiffler@6760
   270
   SDLTest_AssertCheck(rw != NULL, "Verify opening memory with SDL_RWFromConstMem does not return NULL");
aschiffler@6760
   271
aschiffler@6760
   272
   /* Bail out if NULL */
aschiffler@6760
   273
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   274
aschiffler@6999
   275
   /* Check type */
aschiffler@6999
   276
   SDLTest_AssertCheck(rw->type == SDL_RWOPS_MEMORY_RO, "Verify RWops type is SDL_RWOPS_MEMORY_RO; expected: %d, got: %d", SDL_RWOPS_MEMORY_RO, rw->type);
aschiffler@6999
   277
aschiffler@6760
   278
   /* Run generic tests */
aschiffler@6760
   279
   _testGenericRWopsValidations( rw, 0 );
aschiffler@6760
   280
aschiffler@6760
   281
   /* Close handle */
aschiffler@6999
   282
   result = SDL_RWclose(rw);
aschiffler@6760
   283
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6999
   284
   SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
aschiffler@6760
   285
aschiffler@6760
   286
  return TEST_COMPLETED;
aschiffler@6760
   287
}
aschiffler@6760
   288
aschiffler@6760
   289
aschiffler@6760
   290
/**
aschiffler@6760
   291
 * @brief Tests reading from file.
aschiffler@6760
   292
 *
aschiffler@6760
   293
 * \sa
aschiffler@6760
   294
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile
aschiffler@6819
   295
 * http://wiki.libsdl.org/moin.cgi/SDL_RWClose
aschiffler@6760
   296
 */
aschiffler@6760
   297
int
aschiffler@6760
   298
rwops_testFileRead(void)
aschiffler@6760
   299
{
aschiffler@6760
   300
   SDL_RWops *rw;
aschiffler@6999
   301
   int result;
aschiffler@6760
   302
aschiffler@6760
   303
   /* Read test. */
aschiffler@6760
   304
   rw = SDL_RWFromFile(RWopsReadTestFilename, "r");
aschiffler@6760
   305
   SDLTest_AssertPass("Call to SDL_RWFromFile(..,\"r\") succeeded");
aschiffler@6760
   306
   SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFile in read mode does not return NULL");
aschiffler@6760
   307
gabomdq@7663
   308
   /* Bail out if NULL */
aschiffler@6760
   309
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   310
aschiffler@6999
   311
   /* Check type */
dimitris@8761
   312
#if defined(__ANDROID__)
aschiffler@6999
   313
   SDLTest_AssertCheck(
slouken@7191
   314
      rw->type == SDL_RWOPS_STDFILE || rw->type == SDL_RWOPS_JNIFILE,
aschiffler@6999
   315
      "Verify RWops type is SDL_RWOPS_STDFILE or SDL_RWOPS_JNIFILE; expected: %d|%d, got: %d", SDL_RWOPS_STDFILE, SDL_RWOPS_JNIFILE, rw->type);
aschiffler@6999
   316
#elif defined(__WIN32__)
aschiffler@6999
   317
   SDLTest_AssertCheck(
slouken@7191
   318
      rw->type == SDL_RWOPS_WINFILE,
aschiffler@6999
   319
      "Verify RWops type is SDL_RWOPS_WINFILE; expected: %d, got: %d", SDL_RWOPS_WINFILE, rw->type);
aschiffler@6999
   320
#else
aschiffler@6999
   321
   SDLTest_AssertCheck(
slouken@7191
   322
      rw->type == SDL_RWOPS_STDFILE,
aschiffler@6999
   323
      "Verify RWops type is SDL_RWOPS_STDFILE; expected: %d, got: %d", SDL_RWOPS_STDFILE, rw->type);
aschiffler@6999
   324
#endif
aschiffler@6999
   325
aschiffler@6760
   326
   /* Run generic tests */
aschiffler@6760
   327
   _testGenericRWopsValidations( rw, 0 );
aschiffler@6760
   328
aschiffler@6760
   329
   /* Close handle */
aschiffler@6999
   330
   result = SDL_RWclose(rw);
aschiffler@6760
   331
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6999
   332
   SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
aschiffler@6760
   333
aschiffler@6760
   334
   return TEST_COMPLETED;
aschiffler@6760
   335
}
aschiffler@6760
   336
aschiffler@6760
   337
/**
aschiffler@6819
   338
 * @brief Tests writing from file.
aschiffler@6760
   339
 *
aschiffler@6760
   340
 * \sa
aschiffler@6760
   341
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile
aschiffler@6819
   342
 * http://wiki.libsdl.org/moin.cgi/SDL_RWClose
aschiffler@6760
   343
 */
aschiffler@6760
   344
int
aschiffler@6760
   345
rwops_testFileWrite(void)
aschiffler@6760
   346
{
aschiffler@6760
   347
   SDL_RWops *rw;
aschiffler@6999
   348
   int result;
aschiffler@6760
   349
aschiffler@6760
   350
   /* Write test. */
aschiffler@6760
   351
   rw = SDL_RWFromFile(RWopsWriteTestFilename, "w+");
aschiffler@6760
   352
   SDLTest_AssertPass("Call to SDL_RWFromFile(..,\"w+\") succeeded");
aschiffler@6760
   353
   SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFile in write mode does not return NULL");
aschiffler@6760
   354
gabomdq@7663
   355
   /* Bail out if NULL */
aschiffler@6760
   356
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   357
aschiffler@6999
   358
   /* Check type */
dimitris@8761
   359
#if defined(__ANDROID__)
aschiffler@6999
   360
   SDLTest_AssertCheck(
slouken@7191
   361
      rw->type == SDL_RWOPS_STDFILE || rw->type == SDL_RWOPS_JNIFILE,
aschiffler@6999
   362
      "Verify RWops type is SDL_RWOPS_STDFILE or SDL_RWOPS_JNIFILE; expected: %d|%d, got: %d", SDL_RWOPS_STDFILE, SDL_RWOPS_JNIFILE, rw->type);
aschiffler@6999
   363
#elif defined(__WIN32__)
aschiffler@6999
   364
   SDLTest_AssertCheck(
slouken@7191
   365
      rw->type == SDL_RWOPS_WINFILE,
aschiffler@6999
   366
      "Verify RWops type is SDL_RWOPS_WINFILE; expected: %d, got: %d", SDL_RWOPS_WINFILE, rw->type);
aschiffler@6999
   367
#else
aschiffler@6999
   368
   SDLTest_AssertCheck(
slouken@7191
   369
      rw->type == SDL_RWOPS_STDFILE,
aschiffler@6999
   370
      "Verify RWops type is SDL_RWOPS_STDFILE; expected: %d, got: %d", SDL_RWOPS_STDFILE, rw->type);
aschiffler@6999
   371
#endif
aschiffler@6999
   372
aschiffler@6760
   373
   /* Run generic tests */
aschiffler@6760
   374
   _testGenericRWopsValidations( rw, 1 );
aschiffler@6760
   375
aschiffler@6760
   376
   /* Close handle */
aschiffler@6999
   377
   result = SDL_RWclose(rw);
aschiffler@6760
   378
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6999
   379
   SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
aschiffler@6760
   380
aschiffler@6760
   381
   return TEST_COMPLETED;
aschiffler@6760
   382
}
aschiffler@6760
   383
aschiffler@6760
   384
aschiffler@6760
   385
/**
aschiffler@6760
   386
 * @brief Tests reading from file handle
aschiffler@6760
   387
 *
aschiffler@6760
   388
 * \sa
aschiffler@6760
   389
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFP
aschiffler@6819
   390
 * http://wiki.libsdl.org/moin.cgi/SDL_RWClose
aschiffler@6760
   391
 *
aschiffler@6760
   392
 */
aschiffler@6760
   393
int
aschiffler@6760
   394
rwops_testFPRead(void)
aschiffler@6760
   395
{
aschiffler@6760
   396
   FILE *fp;
aschiffler@6760
   397
   SDL_RWops *rw;
aschiffler@6999
   398
   int result;
aschiffler@6760
   399
aschiffler@6760
   400
   /* Run read tests. */
aschiffler@6760
   401
   fp = fopen(RWopsReadTestFilename, "r");
aschiffler@6760
   402
   SDLTest_AssertCheck(fp != NULL, "Verify handle from opening file '%s' in read mode is not NULL", RWopsReadTestFilename);
aschiffler@6760
   403
aschiffler@6760
   404
   /* Bail out if NULL */
aschiffler@6760
   405
   if (fp == NULL) return TEST_ABORTED;
aschiffler@6760
   406
aschiffler@6760
   407
   /* Open */
aschiffler@6779
   408
   rw = SDL_RWFromFP( fp, SDL_TRUE );
aschiffler@6760
   409
   SDLTest_AssertPass("Call to SDL_RWFromFP() succeeded");
aschiffler@6760
   410
   SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFP in read mode does not return NULL");
aschiffler@6760
   411
aschiffler@6760
   412
   /* Bail out if NULL */
aschiffler@6781
   413
   if (rw == NULL) {
aschiffler@6781
   414
     fclose(fp);
aschiffler@6781
   415
     return TEST_ABORTED;
aschiffler@6781
   416
   }
aschiffler@6760
   417
aschiffler@6999
   418
   /* Check type */
aschiffler@6999
   419
   SDLTest_AssertCheck(
slouken@7191
   420
      rw->type == SDL_RWOPS_STDFILE,
aschiffler@6999
   421
      "Verify RWops type is SDL_RWOPS_STDFILE; expected: %d, got: %d", SDL_RWOPS_STDFILE, rw->type);
aschiffler@6999
   422
aschiffler@6760
   423
   /* Run generic tests */
aschiffler@6760
   424
   _testGenericRWopsValidations( rw, 0 );
aschiffler@6760
   425
aschiffler@6814
   426
   /* Close handle - does fclose() */
aschiffler@6999
   427
   result = SDL_RWclose(rw);
aschiffler@6760
   428
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6999
   429
   SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
aschiffler@6760
   430
aschiffler@6760
   431
   return TEST_COMPLETED;
aschiffler@6760
   432
}
aschiffler@6760
   433
aschiffler@6760
   434
aschiffler@6760
   435
/**
aschiffler@6760
   436
 * @brief Tests writing to file handle
aschiffler@6760
   437
 *
aschiffler@6760
   438
 * \sa
aschiffler@6760
   439
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFP
aschiffler@6819
   440
 * http://wiki.libsdl.org/moin.cgi/SDL_RWClose
aschiffler@6760
   441
 *
aschiffler@6760
   442
 */
aschiffler@6760
   443
int
aschiffler@6760
   444
rwops_testFPWrite(void)
aschiffler@6760
   445
{
aschiffler@6760
   446
   FILE *fp;
aschiffler@6760
   447
   SDL_RWops *rw;
aschiffler@6999
   448
   int result;
aschiffler@6760
   449
aschiffler@6760
   450
   /* Run write tests. */
aschiffler@6760
   451
   fp = fopen(RWopsWriteTestFilename, "w+");
aschiffler@6760
   452
   SDLTest_AssertCheck(fp != NULL, "Verify handle from opening file '%s' in write mode is not NULL", RWopsWriteTestFilename);
aschiffler@6760
   453
aschiffler@6760
   454
   /* Bail out if NULL */
aschiffler@6760
   455
   if (fp == NULL) return TEST_ABORTED;
aschiffler@6760
   456
aschiffler@6760
   457
   /* Open */
aschiffler@6779
   458
   rw = SDL_RWFromFP( fp, SDL_TRUE );
aschiffler@6760
   459
   SDLTest_AssertPass("Call to SDL_RWFromFP() succeeded");
aschiffler@6760
   460
   SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFP in write mode does not return NULL");
aschiffler@6760
   461
aschiffler@6760
   462
   /* Bail out if NULL */
aschiffler@6781
   463
   if (rw == NULL) {
aschiffler@6781
   464
     fclose(fp);
aschiffler@6781
   465
     return TEST_ABORTED;
aschiffler@6781
   466
   }
aschiffler@6760
   467
aschiffler@6999
   468
   /* Check type */
aschiffler@6999
   469
   SDLTest_AssertCheck(
slouken@7191
   470
      rw->type == SDL_RWOPS_STDFILE,
aschiffler@6999
   471
      "Verify RWops type is SDL_RWOPS_STDFILE; expected: %d, got: %d", SDL_RWOPS_STDFILE, rw->type);
aschiffler@6999
   472
aschiffler@6760
   473
   /* Run generic tests */
aschiffler@6760
   474
   _testGenericRWopsValidations( rw, 1 );
aschiffler@6760
   475
aschiffler@6814
   476
   /* Close handle - does fclose() */
aschiffler@6999
   477
   result = SDL_RWclose(rw);
aschiffler@6760
   478
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6999
   479
   SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
aschiffler@6760
   480
aschiffler@6760
   481
   return TEST_COMPLETED;
aschiffler@6760
   482
}
aschiffler@6760
   483
aschiffler@6781
   484
/**
aschiffler@6781
   485
 * @brief Tests alloc and free RW context.
aschiffler@6781
   486
 *
aschiffler@6819
   487
 * \sa http://wiki.libsdl.org/moin.cgi/SDL_AllocRW
aschiffler@6781
   488
 * \sa http://wiki.libsdl.org/moin.cgi/SDL_FreeRW
aschiffler@6781
   489
 */
aschiffler@6781
   490
int
aschiffler@6781
   491
rwops_testAllocFree (void)
aschiffler@6781
   492
{
aschiffler@6781
   493
   /* Allocate context */
aschiffler@6781
   494
   SDL_RWops *rw = SDL_AllocRW();
aschiffler@6781
   495
   SDLTest_AssertPass("Call to SDL_AllocRW() succeeded");
aschiffler@6781
   496
   SDLTest_AssertCheck(rw != NULL, "Validate result from SDL_AllocRW() is not NULL");
aschiffler@6781
   497
   if (rw==NULL) return TEST_ABORTED;
aschiffler@6999
   498
aschiffler@6999
   499
   /* Check type */
aschiffler@6999
   500
   SDLTest_AssertCheck(
slouken@7191
   501
      rw->type == SDL_RWOPS_UNKNOWN,
aschiffler@6999
   502
      "Verify RWops type is SDL_RWOPS_UNKNOWN; expected: %d, got: %d", SDL_RWOPS_UNKNOWN, rw->type);
slouken@7191
   503
aschiffler@6781
   504
   /* Free context again */
aschiffler@6781
   505
   SDL_FreeRW(rw);
aschiffler@6781
   506
   SDLTest_AssertPass("Call to SDL_FreeRW() succeeded");
aschiffler@6781
   507
aschiffler@6781
   508
   return TEST_COMPLETED;
aschiffler@6781
   509
}
aschiffler@6781
   510
aschiffler@6819
   511
/**
aschiffler@6999
   512
 * @brief Compare memory and file reads
aschiffler@6999
   513
 *
aschiffler@6999
   514
 * \sa http://wiki.libsdl.org/moin.cgi/SDL_RWFromMem
aschiffler@6999
   515
 * \sa http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile
aschiffler@6999
   516
 */
aschiffler@6999
   517
int
aschiffler@6999
   518
rwops_testCompareRWFromMemWithRWFromFile(void)
aschiffler@6999
   519
{
aschiffler@6999
   520
   int slen = 26;
aschiffler@6999
   521
   char buffer_file[27];
aschiffler@6999
   522
   char buffer_mem[27];
aschiffler@6999
   523
   size_t rv_file;
aschiffler@6999
   524
   size_t rv_mem;
aschiffler@6999
   525
   Uint64 sv_file;
aschiffler@6999
   526
   Uint64 sv_mem;
aschiffler@6999
   527
   SDL_RWops* rwops_file;
aschiffler@6999
   528
   SDL_RWops* rwops_mem;
aschiffler@6999
   529
   int size;
aschiffler@6999
   530
   int result;
aschiffler@6999
   531
slouken@7191
   532
aschiffler@6999
   533
   for (size=5; size<10; size++)
aschiffler@6999
   534
   {
aschiffler@6999
   535
     /* Terminate buffer */
aschiffler@6999
   536
     buffer_file[slen] = 0;
aschiffler@6999
   537
     buffer_mem[slen] = 0;
slouken@7191
   538
aschiffler@6999
   539
     /* Read/seek from memory */
aschiffler@6999
   540
     rwops_mem = SDL_RWFromMem((void *)RWopsAlphabetString, slen);
aschiffler@6999
   541
     SDLTest_AssertPass("Call to SDL_RWFromMem()");
aschiffler@6999
   542
     rv_mem = SDL_RWread(rwops_mem, buffer_mem, size, 6);
aschiffler@6999
   543
     SDLTest_AssertPass("Call to SDL_RWread(mem, size=%d)", size);
aschiffler@6999
   544
     sv_mem = SDL_RWseek(rwops_mem, 0, SEEK_END);
aschiffler@6999
   545
     SDLTest_AssertPass("Call to SDL_RWseek(mem,SEEK_END)");
aschiffler@6999
   546
     result = SDL_RWclose(rwops_mem);
aschiffler@6999
   547
     SDLTest_AssertPass("Call to SDL_RWclose(mem)");
aschiffler@6999
   548
     SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
aschiffler@6999
   549
aschiffler@6999
   550
     /* Read/see from file */
aschiffler@6999
   551
     rwops_file = SDL_RWFromFile(RWopsAlphabetFilename, "r");
aschiffler@6999
   552
     SDLTest_AssertPass("Call to SDL_RWFromFile()");
aschiffler@6999
   553
     rv_file = SDL_RWread(rwops_file, buffer_file, size, 6);
aschiffler@6999
   554
     SDLTest_AssertPass("Call to SDL_RWread(file, size=%d)", size);
aschiffler@6999
   555
     sv_file = SDL_RWseek(rwops_file, 0, SEEK_END);
aschiffler@6999
   556
     SDLTest_AssertPass("Call to SDL_RWseek(file,SEEK_END)");
aschiffler@6999
   557
     result = SDL_RWclose(rwops_file);
aschiffler@6999
   558
     SDLTest_AssertPass("Call to SDL_RWclose(file)");
aschiffler@6999
   559
     SDLTest_AssertCheck(result == 0, "Verify result value is 0; got: %d", result);
slouken@7191
   560
aschiffler@6999
   561
     /* Compare */
aschiffler@6999
   562
     SDLTest_AssertCheck(rv_mem == rv_file, "Verify returned read blocks matches for mem and file reads; got: rv_mem=%d rv_file=%d", rv_mem, rv_file);
aschiffler@6999
   563
     SDLTest_AssertCheck(sv_mem == sv_file, "Verify SEEK_END position matches for mem and file seeks; got: sv_mem=%llu sv_file=%llu", sv_mem, sv_file);
aschiffler@6999
   564
     SDLTest_AssertCheck(buffer_mem[slen] == 0, "Verify mem buffer termination; expected: 0, got: %d", buffer_mem[slen]);
aschiffler@6999
   565
     SDLTest_AssertCheck(buffer_file[slen] == 0, "Verify file buffer termination; expected: 0, got: %d", buffer_file[slen]);
aschiffler@6999
   566
     SDLTest_AssertCheck(
aschiffler@6999
   567
       SDL_strncmp(buffer_mem, RWopsAlphabetString, slen) == 0,
aschiffler@6999
   568
       "Verify mem buffer contain alphabet string; expected: %s, got: %s", RWopsAlphabetString, buffer_mem);
aschiffler@6999
   569
     SDLTest_AssertCheck(
aschiffler@6999
   570
       SDL_strncmp(buffer_file, RWopsAlphabetString, slen) == 0,
aschiffler@6999
   571
       "Verify file buffer contain alphabet string; expected: %s, got: %s", RWopsAlphabetString, buffer_file);
aschiffler@6999
   572
   }
slouken@7191
   573
aschiffler@6999
   574
   return TEST_COMPLETED;
aschiffler@6999
   575
}
aschiffler@6999
   576
aschiffler@6999
   577
/**
aschiffler@6819
   578
 * @brief Tests writing and reading from file using endian aware functions.
aschiffler@6819
   579
 *
aschiffler@6819
   580
 * \sa
aschiffler@6819
   581
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile
aschiffler@6819
   582
 * http://wiki.libsdl.org/moin.cgi/SDL_RWClose
aschiffler@6819
   583
 * http://wiki.libsdl.org/moin.cgi/SDL_ReadBE16
aschiffler@6819
   584
 * http://wiki.libsdl.org/moin.cgi/SDL_WriteBE16
aschiffler@6819
   585
 */
aschiffler@6819
   586
int
aschiffler@6819
   587
rwops_testFileWriteReadEndian(void)
aschiffler@6819
   588
{
aschiffler@6819
   589
   SDL_RWops *rw;
aschiffler@6821
   590
   Sint64 result;
aschiffler@6819
   591
   int mode;
aschiffler@6819
   592
   size_t objectsWritten;
aschiffler@6819
   593
   Uint16 BE16value;
aschiffler@6819
   594
   Uint32 BE32value;
aschiffler@6819
   595
   Uint64 BE64value;
aschiffler@6819
   596
   Uint16 LE16value;
aschiffler@6819
   597
   Uint32 LE32value;
aschiffler@6819
   598
   Uint64 LE64value;
aschiffler@6819
   599
   Uint16 BE16test;
aschiffler@6819
   600
   Uint32 BE32test;
aschiffler@6819
   601
   Uint64 BE64test;
aschiffler@6819
   602
   Uint16 LE16test;
aschiffler@6819
   603
   Uint32 LE32test;
aschiffler@6819
   604
   Uint64 LE64test;
aschiffler@6999
   605
   int cresult;
aschiffler@6819
   606
aschiffler@6819
   607
   for (mode = 0; mode < 3; mode++) {
slouken@7191
   608
aschiffler@6819
   609
     /* Create test data */
aschiffler@6819
   610
     switch (mode) {
aschiffler@6819
   611
       case 0:
aschiffler@6819
   612
        SDLTest_Log("All 0 values");
aschiffler@6819
   613
        BE16value = 0;
aschiffler@6819
   614
        BE32value = 0;
aschiffler@6819
   615
        BE64value = 0;
aschiffler@6819
   616
        LE16value = 0;
aschiffler@6819
   617
        LE32value = 0;
aschiffler@6819
   618
        LE64value = 0;
aschiffler@6819
   619
        break;
aschiffler@6819
   620
       case 1:
aschiffler@6819
   621
        SDLTest_Log("All 1 values");
aschiffler@6819
   622
        BE16value = 1;
aschiffler@6819
   623
        BE32value = 1;
aschiffler@6819
   624
        BE64value = 1;
aschiffler@6819
   625
        LE16value = 1;
aschiffler@6819
   626
        LE32value = 1;
aschiffler@6819
   627
        LE64value = 1;
aschiffler@6819
   628
        break;
aschiffler@6819
   629
       case 2:
aschiffler@6819
   630
        SDLTest_Log("Random values");
aschiffler@6819
   631
        BE16value = SDLTest_RandomUint16();
aschiffler@6819
   632
        BE32value = SDLTest_RandomUint32();
aschiffler@6819
   633
        BE64value = SDLTest_RandomUint64();
aschiffler@6819
   634
        LE16value = SDLTest_RandomUint16();
aschiffler@6819
   635
        LE32value = SDLTest_RandomUint32();
aschiffler@6819
   636
        LE64value = SDLTest_RandomUint64();
aschiffler@6819
   637
        break;
aschiffler@6819
   638
     }
slouken@7191
   639
aschiffler@6819
   640
     /* Write test. */
aschiffler@6819
   641
     rw = SDL_RWFromFile(RWopsWriteTestFilename, "w+");
aschiffler@6819
   642
     SDLTest_AssertPass("Call to SDL_RWFromFile(..,\"w+\")");
aschiffler@6819
   643
     SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFile in write mode does not return NULL");
aschiffler@6819
   644
gabomdq@7663
   645
     /* Bail out if NULL */
aschiffler@6819
   646
     if (rw == NULL) return TEST_ABORTED;
aschiffler@6819
   647
aschiffler@6819
   648
     /* Write test data */
aschiffler@6819
   649
     objectsWritten = SDL_WriteBE16(rw, BE16value);
aschiffler@6819
   650
     SDLTest_AssertPass("Call to SDL_WriteBE16");
slouken@7191
   651
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", objectsWritten);
aschiffler@6819
   652
     objectsWritten = SDL_WriteBE32(rw, BE32value);
aschiffler@6819
   653
     SDLTest_AssertPass("Call to SDL_WriteBE32");
slouken@7191
   654
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", objectsWritten);
aschiffler@6819
   655
     objectsWritten = SDL_WriteBE64(rw, BE64value);
aschiffler@6819
   656
     SDLTest_AssertPass("Call to SDL_WriteBE64");
slouken@7191
   657
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", objectsWritten);
aschiffler@6819
   658
     objectsWritten = SDL_WriteLE16(rw, LE16value);
aschiffler@6819
   659
     SDLTest_AssertPass("Call to SDL_WriteLE16");
slouken@7191
   660
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", objectsWritten);
aschiffler@6819
   661
     objectsWritten = SDL_WriteLE32(rw, LE32value);
aschiffler@6819
   662
     SDLTest_AssertPass("Call to SDL_WriteLE32");
slouken@7191
   663
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", objectsWritten);
aschiffler@6819
   664
     objectsWritten = SDL_WriteLE64(rw, LE64value);
aschiffler@6819
   665
     SDLTest_AssertPass("Call to SDL_WriteLE64");
slouken@7191
   666
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", objectsWritten);
aschiffler@6819
   667
aschiffler@6819
   668
     /* Test seek to start */
aschiffler@6819
   669
     result = SDL_RWseek( rw, 0, RW_SEEK_SET );
aschiffler@6819
   670
     SDLTest_AssertPass("Call to SDL_RWseek succeeded");
aschiffler@6819
   671
     SDLTest_AssertCheck(result == 0, "Verify result from position 0 with SDL_RWseek, expected 0, got %i", result);
aschiffler@6819
   672
aschiffler@6819
   673
     /* Read test data */
aschiffler@6819
   674
     BE16test = SDL_ReadBE16(rw);
aschiffler@6819
   675
     SDLTest_AssertPass("Call to SDL_ReadBE16");
aschiffler@6819
   676
     SDLTest_AssertCheck(BE16test == BE16value, "Validate return value from SDL_ReadBE16, expected: %hu, got: %hu", BE16value, BE16test);
aschiffler@6819
   677
     BE32test = SDL_ReadBE32(rw);
aschiffler@6819
   678
     SDLTest_AssertPass("Call to SDL_ReadBE32");
slouken@7191
   679
     SDLTest_AssertCheck(BE32test == BE32value, "Validate return value from SDL_ReadBE32, expected: %u, got: %u", BE32value, BE32test);
aschiffler@6819
   680
     BE64test = SDL_ReadBE64(rw);
aschiffler@6819
   681
     SDLTest_AssertPass("Call to SDL_ReadBE64");
slouken@7191
   682
     SDLTest_AssertCheck(BE64test == BE64value, "Validate return value from SDL_ReadBE64, expected: %llu, got: %llu", BE64value, BE64test);
aschiffler@6819
   683
     LE16test = SDL_ReadLE16(rw);
aschiffler@6819
   684
     SDLTest_AssertPass("Call to SDL_ReadLE16");
aschiffler@6819
   685
     SDLTest_AssertCheck(LE16test == LE16value, "Validate return value from SDL_ReadLE16, expected: %hu, got: %hu", LE16value, LE16test);
aschiffler@6819
   686
     LE32test = SDL_ReadLE32(rw);
aschiffler@6819
   687
     SDLTest_AssertPass("Call to SDL_ReadLE32");
slouken@7191
   688
     SDLTest_AssertCheck(LE32test == LE32value, "Validate return value from SDL_ReadLE32, expected: %u, got: %u", LE32value, LE32test);
aschiffler@6819
   689
     LE64test = SDL_ReadLE64(rw);
aschiffler@6819
   690
     SDLTest_AssertPass("Call to SDL_ReadLE64");
aschiffler@6819
   691
     SDLTest_AssertCheck(LE64test == LE64value, "Validate return value from SDL_ReadLE64, expected: %llu, got: %llu", LE64value, LE64test);
aschiffler@6819
   692
aschiffler@6819
   693
     /* Close handle */
aschiffler@6999
   694
     cresult = SDL_RWclose(rw);
aschiffler@6819
   695
     SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
slouken@7191
   696
     SDLTest_AssertCheck(cresult == 0, "Verify result value is 0; got: %d", cresult);
aschiffler@6819
   697
   }
aschiffler@6819
   698
aschiffler@6819
   699
   return TEST_COMPLETED;
aschiffler@6819
   700
}
aschiffler@6819
   701
aschiffler@6781
   702
aschiffler@6760
   703
/* ================= Test References ================== */
aschiffler@6760
   704
aschiffler@6760
   705
/* RWops test cases */
aschiffler@6760
   706
static const SDLTest_TestCaseReference rwopsTest1 =
slouken@7191
   707
        { (SDLTest_TestCaseFp)rwops_testParamNegative, "rwops_testParamNegative", "Negative test for SDL_RWFromFile parameters", TEST_ENABLED };
aschiffler@6760
   708
aschiffler@6760
   709
static const SDLTest_TestCaseReference rwopsTest2 =
slouken@7191
   710
        { (SDLTest_TestCaseFp)rwops_testMem, "rwops_testMem", "Tests opening from memory", TEST_ENABLED };
aschiffler@6760
   711
aschiffler@6760
   712
static const SDLTest_TestCaseReference rwopsTest3 =
slouken@7191
   713
        { (SDLTest_TestCaseFp)rwops_testConstMem, "rwops_testConstMem", "Tests opening from (const) memory", TEST_ENABLED };
aschiffler@6760
   714
aschiffler@6760
   715
static const SDLTest_TestCaseReference rwopsTest4 =
slouken@7191
   716
        { (SDLTest_TestCaseFp)rwops_testFileRead, "rwops_testFileRead", "Tests reading from a file", TEST_ENABLED };
aschiffler@6760
   717
aschiffler@6760
   718
static const SDLTest_TestCaseReference rwopsTest5 =
slouken@7191
   719
        { (SDLTest_TestCaseFp)rwops_testFileWrite, "rwops_testFileWrite", "Test writing to a file", TEST_ENABLED };
aschiffler@6760
   720
aschiffler@6760
   721
static const SDLTest_TestCaseReference rwopsTest6 =
slouken@7191
   722
        { (SDLTest_TestCaseFp)rwops_testFPRead, "rwops_testFPRead", "Test reading from file pointer", TEST_ENABLED };
aschiffler@6760
   723
aschiffler@6760
   724
static const SDLTest_TestCaseReference rwopsTest7 =
slouken@7191
   725
        { (SDLTest_TestCaseFp)rwops_testFPWrite, "rwops_testFPWrite", "Test writing to file pointer", TEST_ENABLED };
aschiffler@6760
   726
aschiffler@6781
   727
static const SDLTest_TestCaseReference rwopsTest8 =
slouken@7191
   728
        { (SDLTest_TestCaseFp)rwops_testAllocFree, "rwops_testAllocFree", "Test alloc and free of RW context", TEST_ENABLED };
aschiffler@6781
   729
aschiffler@6819
   730
static const SDLTest_TestCaseReference rwopsTest9 =
slouken@7191
   731
        { (SDLTest_TestCaseFp)rwops_testFileWriteReadEndian, "rwops_testFileWriteReadEndian", "Test writing and reading via the Endian aware functions", TEST_ENABLED };
aschiffler@6819
   732
aschiffler@6999
   733
static const SDLTest_TestCaseReference rwopsTest10 =
slouken@7191
   734
        { (SDLTest_TestCaseFp)rwops_testCompareRWFromMemWithRWFromFile, "rwops_testCompareRWFromMemWithRWFromFile", "Compare RWFromMem and RWFromFile RWops for read and seek", TEST_ENABLED };
aschiffler@6999
   735
aschiffler@6760
   736
/* Sequence of RWops test cases */
aschiffler@6760
   737
static const SDLTest_TestCaseReference *rwopsTests[] =  {
slouken@7191
   738
    &rwopsTest1, &rwopsTest2, &rwopsTest3, &rwopsTest4, &rwopsTest5, &rwopsTest6,
slouken@7191
   739
    &rwopsTest7, &rwopsTest8, &rwopsTest9, &rwopsTest10, NULL
aschiffler@6760
   740
};
aschiffler@6760
   741
aschiffler@6760
   742
/* RWops test suite (global) */
aschiffler@6760
   743
SDLTest_TestSuiteReference rwopsTestSuite = {
slouken@7191
   744
    "RWops",
slouken@7191
   745
    RWopsSetUp,
slouken@7191
   746
    rwopsTests,
slouken@7191
   747
    RWopsTearDown
aschiffler@6760
   748
};