test/testautomation_rwops.c
author Sam Lantinga <slouken@libsdl.org>
Thu, 07 Dec 2017 16:08:47 -0800
changeset 11731 30f337dc8c74
parent 11416 7e7d8a125d6a
child 12968 0e3948762c96
permissions -rw-r--r--
Added iOS and OSX versions of the Metal shaders
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
{
icculus@11416
    35
    size_t fileLen;
slouken@7191
    36
    FILE *handle;
icculus@11416
    37
    size_t 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);
icculus@11416
    52
    writtenLen = fwrite(RWopsHelloWorldTestString, 1, fileLen, handle);
icculus@11416
    53
    SDLTest_AssertCheck(fileLen == writtenLen, "Verify number of written bytes, expected %i, got %i", (int) fileLen, (int) 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);
icculus@11416
    64
    writtenLen = fwrite(RWopsAlphabetString, 1, fileLen, handle);
icculus@11416
    65
    SDLTest_AssertCheck(fileLen == writtenLen, "Verify number of written bytes, expected %i, got %i", (int) fileLen, (int) 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");
urkle@9260
   108
   SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_RWseek (RW_SEEK_SET), expected 0, got %"SDL_PRIs64, 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) {
icculus@10782
   114
        SDLTest_AssertCheck(s == (size_t)1, "Verify result of writing one byte with SDL_RWwrite, expected 1, got %i", (int) s);
aschiffler@6760
   115
   }
aschiffler@6760
   116
   else {
icculus@10782
   117
        SDLTest_AssertCheck(s == (size_t)0, "Verify result of writing with SDL_RWwrite, expected: 0, got %i", (int) 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");
urkle@9260
   123
   SDLTest_AssertCheck(i == (Sint64)seekPos, "Verify seek to %i with SDL_RWseek (RW_SEEK_SET), expected %i, got %"SDL_PRIs64, 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");
urkle@9260
   128
   SDLTest_AssertCheck(i == (Sint64)0, "Verify seek to 0 with SDL_RWseek (RW_SEEK_SET), expected 0, got %"SDL_PRIs64, 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",
icculus@10782
   136
       (int) (sizeof(RWopsHelloWorldTestString)-1),
icculus@10782
   137
       (int) 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),
icculus@10782
   147
       "Verify seek to -4 with SDL_RWseek (RW_SEEK_CUR), expected %i, got %i",
icculus@10782
   148
       (int) (sizeof(RWopsHelloWorldTestString)-5),
icculus@10782
   149
       (int) 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),
icculus@10782
   155
       "Verify seek to -1 with SDL_RWseek (RW_SEEK_END), expected %i, got %i",
icculus@10782
   156
       (int) (sizeof(RWopsHelloWorldTestString)-2),
icculus@10782
   157
       (int) 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),
icculus@10782
   164
       "Verify seek with SDL_RWseek (invalid_whence); expected: -1, got %i",
icculus@10782
   165
       (int) 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 */
icculus@10782
   562
     SDLTest_AssertCheck(rv_mem == rv_file, "Verify returned read blocks matches for mem and file reads; got: rv_mem=%d rv_file=%d", (int) rv_mem, (int) rv_file);
icculus@10782
   563
     SDLTest_AssertCheck(sv_mem == sv_file, "Verify SEEK_END position matches for mem and file seeks; got: sv_mem=%d sv_file=%d", (int) sv_mem, (int) 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);
philipp@9219
   650
     SDLTest_AssertPass("Call to SDL_WriteBE16()");
icculus@10782
   651
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", (int) objectsWritten);
aschiffler@6819
   652
     objectsWritten = SDL_WriteBE32(rw, BE32value);
philipp@9219
   653
     SDLTest_AssertPass("Call to SDL_WriteBE32()");
icculus@10782
   654
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", (int) objectsWritten);
aschiffler@6819
   655
     objectsWritten = SDL_WriteBE64(rw, BE64value);
philipp@9219
   656
     SDLTest_AssertPass("Call to SDL_WriteBE64()");
icculus@10782
   657
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", (int) objectsWritten);
aschiffler@6819
   658
     objectsWritten = SDL_WriteLE16(rw, LE16value);
philipp@9219
   659
     SDLTest_AssertPass("Call to SDL_WriteLE16()");
icculus@10782
   660
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", (int) objectsWritten);
aschiffler@6819
   661
     objectsWritten = SDL_WriteLE32(rw, LE32value);
philipp@9219
   662
     SDLTest_AssertPass("Call to SDL_WriteLE32()");
icculus@10782
   663
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", (int) objectsWritten);
aschiffler@6819
   664
     objectsWritten = SDL_WriteLE64(rw, LE64value);
philipp@9219
   665
     SDLTest_AssertPass("Call to SDL_WriteLE64()");
icculus@10782
   666
     SDLTest_AssertCheck(objectsWritten == 1, "Validate number of objects written, expected: 1, got: %i", (int) 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");
icculus@10782
   671
     SDLTest_AssertCheck(result == 0, "Verify result from position 0 with SDL_RWseek, expected 0, got %i", (int) result);
aschiffler@6819
   672
aschiffler@6819
   673
     /* Read test data */
aschiffler@6819
   674
     BE16test = SDL_ReadBE16(rw);
philipp@9219
   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);
philipp@9219
   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);
philipp@9219
   681
     SDLTest_AssertPass("Call to SDL_ReadBE64()");
urkle@9260
   682
     SDLTest_AssertCheck(BE64test == BE64value, "Validate return value from SDL_ReadBE64, expected: %"SDL_PRIu64", got: %"SDL_PRIu64, BE64value, BE64test);
aschiffler@6819
   683
     LE16test = SDL_ReadLE16(rw);
philipp@9219
   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);
philipp@9219
   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);
philipp@9219
   690
     SDLTest_AssertPass("Call to SDL_ReadLE64()");
urkle@9260
   691
     SDLTest_AssertCheck(LE64test == LE64value, "Validate return value from SDL_ReadLE64, expected: %"SDL_PRIu64", got: %"SDL_PRIu64, 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
};