test/testautomation_rwops.c
author Sam Lantinga <slouken@libsdl.org>
Sat, 22 Dec 2012 17:24:42 -0800
changeset 6769 b49778d885cd
parent 6760 test/tests/testrwops.c@04dcce3081e6
child 6779 c3b579c78059
permissions -rw-r--r--
Added the automation test to the autoconf build system
aschiffler@6760
     1
/**
aschiffler@6760
     2
 * Automated SDL_RWops test.
aschiffler@6760
     3
 *
aschiffler@6760
     4
 * Original code written by Edgar Simo "bobbens"
aschiffler@6760
     5
 * Ported by Markus Kauppila (markus.kauppila@gmail.com)
aschiffler@6760
     6
 * Updated for SDL_test by aschiffler at ferzkopp dot net
aschiffler@6760
     7
 *
aschiffler@6760
     8
 * Released under Public Domain.
aschiffler@6760
     9
 */
aschiffler@6760
    10
aschiffler@6760
    11
/* quiet windows compiler warnings */
aschiffler@6760
    12
#define _CRT_SECURE_NO_WARNINGS
aschiffler@6760
    13
aschiffler@6760
    14
#include <stdio.h>
aschiffler@6760
    15
aschiffler@6760
    16
#include "SDL.h"
aschiffler@6760
    17
#include "SDL_test.h"
aschiffler@6760
    18
aschiffler@6760
    19
/* ================= Test Case Implementation ================== */
aschiffler@6760
    20
aschiffler@6760
    21
const char* RWopsReadTestFilename = "rwops_read";
aschiffler@6760
    22
const char* RWopsWriteTestFilename = "rwops_write";
aschiffler@6760
    23
aschiffler@6760
    24
static const char RWopsHelloWorldTestString[] = "Hello World!";
aschiffler@6760
    25
static const char RWopsHelloWorldCompString[] = "Hello World!";
aschiffler@6760
    26
aschiffler@6760
    27
/* Fixture */
aschiffler@6760
    28
aschiffler@6760
    29
void
aschiffler@6760
    30
RWopsSetUp(void *arg)
aschiffler@6760
    31
{
aschiffler@6760
    32
	int fileLen = SDL_strlen(RWopsHelloWorldTestString);
aschiffler@6760
    33
	FILE *handle;
aschiffler@6760
    34
	int writtenLen;
aschiffler@6760
    35
	int result;
aschiffler@6760
    36
aschiffler@6760
    37
	/* Clean up from previous runs (if any); ignore errors */
aschiffler@6760
    38
	remove(RWopsReadTestFilename);
aschiffler@6760
    39
	remove(RWopsWriteTestFilename);
aschiffler@6760
    40
aschiffler@6760
    41
	/* Create a test file */
aschiffler@6760
    42
	handle = fopen(RWopsReadTestFilename, "w");
aschiffler@6760
    43
	SDLTest_AssertCheck(handle != NULL, "Verify creation of file '%s' returned non NULL handle", RWopsReadTestFilename);
aschiffler@6760
    44
    if (handle == NULL) return;
aschiffler@6760
    45
aschiffler@6760
    46
	/* Write some known test into it */
aschiffler@6760
    47
	writtenLen = (int)fwrite(RWopsHelloWorldTestString, 1, fileLen, handle);
aschiffler@6760
    48
	SDLTest_AssertCheck(fileLen == writtenLen, "Verify number of written bytes, expected %i, got %i", fileLen, writtenLen);
aschiffler@6760
    49
	result = fclose(handle);
aschiffler@6760
    50
	SDLTest_AssertCheck(result == 0, "Verify result from fclose, expected 0, got %i", result);
aschiffler@6760
    51
aschiffler@6760
    52
	SDLTest_AssertPass("Creation of test file completed");
aschiffler@6760
    53
}
aschiffler@6760
    54
aschiffler@6760
    55
void
aschiffler@6760
    56
RWopsTearDown(void *arg)
aschiffler@6760
    57
{
aschiffler@6760
    58
	int result;
aschiffler@6760
    59
	
aschiffler@6760
    60
	/* Remove the created files to clean up; ignore errors for write filename */
aschiffler@6760
    61
	result = remove(RWopsReadTestFilename);
aschiffler@6760
    62
	SDLTest_AssertCheck(result == 0, "Verify result from remove(%s), expected 0, got %i", RWopsReadTestFilename, result);
aschiffler@6760
    63
	remove(RWopsWriteTestFilename);
aschiffler@6760
    64
aschiffler@6760
    65
	SDLTest_AssertPass("Cleanup of test files completed");
aschiffler@6760
    66
}
aschiffler@6760
    67
aschiffler@6760
    68
/**
aschiffler@6760
    69
 * @brief Makes sure parameters work properly. Local helper function.
aschiffler@6760
    70
 *
aschiffler@6760
    71
 * \sa
aschiffler@6760
    72
 * http://wiki.libsdl.org/moin.cgi/SDL_RWseek
aschiffler@6760
    73
 * http://wiki.libsdl.org/moin.cgi/SDL_RWread
aschiffler@6760
    74
 */
aschiffler@6760
    75
void 
aschiffler@6760
    76
_testGenericRWopsValidations(SDL_RWops *rw, int write)
aschiffler@6760
    77
{
aschiffler@6760
    78
   char buf[sizeof(RWopsHelloWorldTestString)];
aschiffler@6760
    79
   int i;
aschiffler@6760
    80
   int seekPos = SDLTest_RandomIntegerInRange(4, 8);
aschiffler@6760
    81
aschiffler@6760
    82
   /* Clear buffer */
aschiffler@6760
    83
   SDL_zero(buf);
aschiffler@6760
    84
aschiffler@6760
    85
   /* Set to start. */
aschiffler@6760
    86
   i = SDL_RWseek(rw, 0, RW_SEEK_SET );
aschiffler@6760
    87
   SDLTest_AssertPass("Call to SDL_RWseek succeeded");
aschiffler@6760
    88
   SDLTest_AssertCheck(i == 0, "Verify seek to 0 with SDL_RWseek (RW_SEEK_SET), expected 0, got %i", i);
aschiffler@6760
    89
aschiffler@6760
    90
   /* Test write. */
aschiffler@6760
    91
   i = SDL_RWwrite(rw, RWopsHelloWorldTestString, sizeof(RWopsHelloWorldTestString)-1, 1);
aschiffler@6760
    92
   SDLTest_AssertPass("Call to SDL_RWwrite succeeded");
aschiffler@6760
    93
   if (write) {
aschiffler@6760
    94
		SDLTest_AssertCheck(i == 1, "Verify result of writing one byte with SDL_RWwrite, expected 1, got %i", i);
aschiffler@6760
    95
   }
aschiffler@6760
    96
   else {
aschiffler@6760
    97
		SDLTest_AssertCheck(i <= 0, "Verify result of writing with SDL_RWwrite, expected <=0, got %i", i);
aschiffler@6760
    98
   }
aschiffler@6760
    99
aschiffler@6760
   100
   /* Test seek to random position */
aschiffler@6760
   101
   i = SDL_RWseek( rw, seekPos, RW_SEEK_SET );
aschiffler@6760
   102
   SDLTest_AssertPass("Call to SDL_RWseek succeeded");
aschiffler@6760
   103
   SDLTest_AssertCheck(i == seekPos, "Verify seek to %i with SDL_RWseek (RW_SEEK_SET), expected %i, got %i", seekPos, seekPos, i);
aschiffler@6760
   104
aschiffler@6760
   105
   /* Test seek back to start */
aschiffler@6760
   106
   i = SDL_RWseek(rw, 0, RW_SEEK_SET );
aschiffler@6760
   107
   SDLTest_AssertPass("Call to SDL_RWseek succeeded");
aschiffler@6760
   108
   SDLTest_AssertCheck(i == 0, "Verify seek to 0 with SDL_RWseek (RW_SEEK_SET), expected 0, got %i", i);
aschiffler@6760
   109
aschiffler@6760
   110
   /* Test read */
aschiffler@6760
   111
   i = SDL_RWread( rw, buf, 1, sizeof(RWopsHelloWorldTestString)-1 );
aschiffler@6760
   112
   SDLTest_AssertPass("Call to SDL_RWread succeeded");
aschiffler@6760
   113
   SDLTest_AssertCheck(
aschiffler@6760
   114
	   i == (sizeof(RWopsHelloWorldTestString)-1), 
aschiffler@6760
   115
	   "Verify result from SDL_RWread, expected %i, got %i",
aschiffler@6760
   116
	   sizeof(RWopsHelloWorldTestString)-1,
aschiffler@6760
   117
	   i);
aschiffler@6760
   118
   SDLTest_AssertCheck(
aschiffler@6760
   119
	   SDL_memcmp(buf, RWopsHelloWorldTestString, sizeof(RWopsHelloWorldTestString)-1 ) == 0, 
aschiffler@6760
   120
	   "Verify read bytes match expected string, expected '%s', got '%s'", RWopsHelloWorldTestString, buf);
aschiffler@6760
   121
aschiffler@6760
   122
   /* More seek tests. */
aschiffler@6760
   123
   i = SDL_RWseek( rw, -4, RW_SEEK_CUR );
aschiffler@6760
   124
   SDLTest_AssertPass("Call to SDL_RWseek(...,-4,RW_SEEK_CUR) succeeded");
aschiffler@6760
   125
   SDLTest_AssertCheck(
aschiffler@6760
   126
	   i == (sizeof(RWopsHelloWorldTestString)-5), 
aschiffler@6760
   127
	   "Verify seek to -4 with SDL_RWseek (RW_SEEK_CUR), expected %i, got %i",
aschiffler@6760
   128
	   sizeof(RWopsHelloWorldTestString)-5,
aschiffler@6760
   129
	   i);
aschiffler@6760
   130
aschiffler@6760
   131
   i = SDL_RWseek( rw, -1, RW_SEEK_END );
aschiffler@6760
   132
   SDLTest_AssertPass("Call to SDL_RWseek(...,-1,RW_SEEK_END) succeeded");
aschiffler@6760
   133
   SDLTest_AssertCheck(
aschiffler@6760
   134
	   i == (sizeof(RWopsHelloWorldTestString)-2), 
aschiffler@6760
   135
	   "Verify seek to -1 with SDL_RWseek (RW_SEEK_END), expected %i, got %i",
aschiffler@6760
   136
	   sizeof(RWopsHelloWorldTestString)-2,
aschiffler@6760
   137
	   i);
aschiffler@6760
   138
}
aschiffler@6760
   139
aschiffler@6760
   140
/*!
aschiffler@6760
   141
 * Negative test for SDL_RWFromFile parameters
aschiffler@6760
   142
 *
aschiffler@6760
   143
 * \sa http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile
aschiffler@6760
   144
 *
aschiffler@6760
   145
 */
aschiffler@6760
   146
int
aschiffler@6760
   147
rwops_testParamNegative (void)
aschiffler@6760
   148
{
aschiffler@6760
   149
   SDL_RWops *rwops;
aschiffler@6760
   150
aschiffler@6760
   151
   /* These should all fail. */
aschiffler@6760
   152
   rwops = SDL_RWFromFile(NULL, NULL);
aschiffler@6760
   153
   SDLTest_AssertPass("Call to SDL_RWFromFile(NULL, NULL) succeeded");
aschiffler@6760
   154
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(NULL, NULL) returns NULL");
aschiffler@6760
   155
aschiffler@6760
   156
   rwops = SDL_RWFromFile(NULL, "ab+");
aschiffler@6760
   157
   SDLTest_AssertPass("Call to SDL_RWFromFile(NULL, \"ab+\") succeeded");
aschiffler@6760
   158
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(NULL, \"ab+\") returns NULL");
aschiffler@6760
   159
aschiffler@6760
   160
   rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj");
aschiffler@6760
   161
   SDLTest_AssertPass("Call to SDL_RWFromFile(NULL, \"sldfkjsldkfj\") succeeded");
aschiffler@6760
   162
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(NULL, \"sldfkjsldkfj\") returns NULL");
aschiffler@6760
   163
aschiffler@6760
   164
   rwops = SDL_RWFromFile("something", "");
aschiffler@6760
   165
   SDLTest_AssertPass("Call to SDL_RWFromFile(\"something\", \"\") succeeded");
aschiffler@6760
   166
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(\"something\", \"\") returns NULL");
aschiffler@6760
   167
aschiffler@6760
   168
   rwops = SDL_RWFromFile("something", NULL);
aschiffler@6760
   169
   SDLTest_AssertPass("Call to SDL_RWFromFile(\"something\", NULL) succeeded");
aschiffler@6760
   170
   SDLTest_AssertCheck(rwops == NULL, "Verify SDL_RWFromFile(\"something\", NULL) returns NULL");
aschiffler@6760
   171
aschiffler@6760
   172
   return TEST_COMPLETED;
aschiffler@6760
   173
}
aschiffler@6760
   174
aschiffler@6760
   175
/**
aschiffler@6760
   176
 * @brief Tests opening from memory.
aschiffler@6760
   177
 *
aschiffler@6760
   178
 * \sa http://wiki.libsdl.org/moin.cgi/SDL_RWFromMem
aschiffler@6760
   179
 */
aschiffler@6760
   180
int
aschiffler@6760
   181
rwops_testMem (void)
aschiffler@6760
   182
{
aschiffler@6760
   183
   char mem[sizeof(RWopsHelloWorldTestString)];
aschiffler@6760
   184
   SDL_RWops *rw;
aschiffler@6760
   185
aschiffler@6760
   186
   /* Clear buffer */
aschiffler@6760
   187
   SDL_zero(mem);
aschiffler@6760
   188
aschiffler@6760
   189
   /* Open */
aschiffler@6760
   190
   rw = SDL_RWFromMem(mem, sizeof(RWopsHelloWorldTestString)-1);
aschiffler@6760
   191
   SDLTest_AssertPass("Call to SDL_RWFromMem() succeeded");
aschiffler@6760
   192
   SDLTest_AssertCheck(rw != NULL, "Verify opening memory with SDL_RWFromMem does not return NULL");
aschiffler@6760
   193
aschiffler@6760
   194
   /* Bail out if NULL */
aschiffler@6760
   195
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   196
aschiffler@6760
   197
   /* Run generic tests */
aschiffler@6760
   198
   _testGenericRWopsValidations(rw, 1);
aschiffler@6760
   199
aschiffler@6760
   200
   /* Close */
aschiffler@6760
   201
   SDL_RWclose(rw);
aschiffler@6760
   202
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6760
   203
   SDL_FreeRW(rw);
aschiffler@6760
   204
   SDLTest_AssertPass("Call to SDL_FreeRW() succeeded");
aschiffler@6760
   205
aschiffler@6760
   206
   return TEST_COMPLETED;
aschiffler@6760
   207
}
aschiffler@6760
   208
aschiffler@6760
   209
aschiffler@6760
   210
/**
aschiffler@6760
   211
 * @brief Tests opening from memory.
aschiffler@6760
   212
 *
aschiffler@6760
   213
 * \sa
aschiffler@6760
   214
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromConstMem
aschiffler@6760
   215
 */
aschiffler@6760
   216
int 
aschiffler@6760
   217
rwops_testConstMem (void)
aschiffler@6760
   218
{
aschiffler@6760
   219
   SDL_RWops *rw;
aschiffler@6760
   220
aschiffler@6760
   221
   /* Open handle */
aschiffler@6760
   222
   rw = SDL_RWFromConstMem( RWopsHelloWorldCompString, sizeof(RWopsHelloWorldCompString)-1 );
aschiffler@6760
   223
   SDLTest_AssertPass("Call to SDL_RWFromConstMem() succeeded");
aschiffler@6760
   224
   SDLTest_AssertCheck(rw != NULL, "Verify opening memory with SDL_RWFromConstMem does not return NULL");
aschiffler@6760
   225
aschiffler@6760
   226
   /* Bail out if NULL */
aschiffler@6760
   227
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   228
aschiffler@6760
   229
   /* Run generic tests */
aschiffler@6760
   230
   _testGenericRWopsValidations( rw, 0 );
aschiffler@6760
   231
aschiffler@6760
   232
   /* Close handle */
aschiffler@6760
   233
   SDL_RWclose(rw);
aschiffler@6760
   234
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6760
   235
   SDL_FreeRW( rw );
aschiffler@6760
   236
   SDLTest_AssertPass("Call to SDL_FreeRW() succeeded");
aschiffler@6760
   237
aschiffler@6760
   238
  return TEST_COMPLETED;
aschiffler@6760
   239
}
aschiffler@6760
   240
aschiffler@6760
   241
aschiffler@6760
   242
/**
aschiffler@6760
   243
 * @brief Tests reading from file.
aschiffler@6760
   244
 *
aschiffler@6760
   245
 * \sa
aschiffler@6760
   246
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile
aschiffler@6760
   247
 * http://wiki.libsdl.org/moin.cgi/SDL_FreeRW
aschiffler@6760
   248
 */
aschiffler@6760
   249
int
aschiffler@6760
   250
rwops_testFileRead(void)
aschiffler@6760
   251
{
aschiffler@6760
   252
   SDL_RWops *rw;
aschiffler@6760
   253
aschiffler@6760
   254
   /* Read test. */
aschiffler@6760
   255
   rw = SDL_RWFromFile(RWopsReadTestFilename, "r");
aschiffler@6760
   256
   SDLTest_AssertPass("Call to SDL_RWFromFile(..,\"r\") succeeded");
aschiffler@6760
   257
   SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFile in read mode does not return NULL");
aschiffler@6760
   258
aschiffler@6760
   259
   // Bail out if NULL
aschiffler@6760
   260
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   261
aschiffler@6760
   262
   /* Run generic tests */
aschiffler@6760
   263
   _testGenericRWopsValidations( rw, 0 );
aschiffler@6760
   264
aschiffler@6760
   265
   /* Close handle */
aschiffler@6760
   266
   SDL_RWclose(rw);
aschiffler@6760
   267
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6760
   268
   SDL_FreeRW( rw );
aschiffler@6760
   269
   SDLTest_AssertPass("Call to SDL_FreeRW() succeeded");
aschiffler@6760
   270
aschiffler@6760
   271
   return TEST_COMPLETED;
aschiffler@6760
   272
}
aschiffler@6760
   273
aschiffler@6760
   274
/**
aschiffler@6760
   275
 * @brief Tests writing from memory.
aschiffler@6760
   276
 *
aschiffler@6760
   277
 * \sa
aschiffler@6760
   278
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile
aschiffler@6760
   279
 * http://wiki.libsdl.org/moin.cgi/SDL_FreeRW
aschiffler@6760
   280
 */
aschiffler@6760
   281
int
aschiffler@6760
   282
rwops_testFileWrite(void)
aschiffler@6760
   283
{
aschiffler@6760
   284
   SDL_RWops *rw;
aschiffler@6760
   285
aschiffler@6760
   286
   /* Write test. */
aschiffler@6760
   287
   rw = SDL_RWFromFile(RWopsWriteTestFilename, "w+");
aschiffler@6760
   288
   SDLTest_AssertPass("Call to SDL_RWFromFile(..,\"w+\") succeeded");
aschiffler@6760
   289
   SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFile in write mode does not return NULL");
aschiffler@6760
   290
aschiffler@6760
   291
   // Bail out if NULL
aschiffler@6760
   292
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   293
aschiffler@6760
   294
   /* Run generic tests */
aschiffler@6760
   295
   _testGenericRWopsValidations( rw, 1 );
aschiffler@6760
   296
aschiffler@6760
   297
   /* Close handle */
aschiffler@6760
   298
   SDL_RWclose(rw);
aschiffler@6760
   299
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6760
   300
   SDL_FreeRW( rw );
aschiffler@6760
   301
   SDLTest_AssertPass("Call to SDL_FreeRW() succeeded");
aschiffler@6760
   302
aschiffler@6760
   303
   return TEST_COMPLETED;
aschiffler@6760
   304
}
aschiffler@6760
   305
aschiffler@6760
   306
aschiffler@6760
   307
/**
aschiffler@6760
   308
 * @brief Tests reading from file handle
aschiffler@6760
   309
 *
aschiffler@6760
   310
 * \sa
aschiffler@6760
   311
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFP
aschiffler@6760
   312
 * http://wiki.libsdl.org/moin.cgi/SDL_FreeRW
aschiffler@6760
   313
 *
aschiffler@6760
   314
 */
aschiffler@6760
   315
int
aschiffler@6760
   316
rwops_testFPRead(void)
aschiffler@6760
   317
{
aschiffler@6760
   318
   FILE *fp;
aschiffler@6760
   319
   SDL_RWops *rw;
aschiffler@6760
   320
aschiffler@6760
   321
   /* Run read tests. */
aschiffler@6760
   322
   fp = fopen(RWopsReadTestFilename, "r");
aschiffler@6760
   323
   SDLTest_AssertCheck(fp != NULL, "Verify handle from opening file '%s' in read mode is not NULL", RWopsReadTestFilename);
aschiffler@6760
   324
aschiffler@6760
   325
   /* Bail out if NULL */
aschiffler@6760
   326
   if (fp == NULL) return TEST_ABORTED;
aschiffler@6760
   327
aschiffler@6760
   328
   /* Open */
aschiffler@6760
   329
   rw = SDL_RWFromFP( fp, 1 );
aschiffler@6760
   330
   SDLTest_AssertPass("Call to SDL_RWFromFP() succeeded");
aschiffler@6760
   331
   SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFP in read mode does not return NULL");
aschiffler@6760
   332
aschiffler@6760
   333
   /* Bail out if NULL */
aschiffler@6760
   334
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   335
aschiffler@6760
   336
   /* Run generic tests */
aschiffler@6760
   337
   _testGenericRWopsValidations( rw, 0 );
aschiffler@6760
   338
aschiffler@6760
   339
   /* Close handle */
aschiffler@6760
   340
   SDL_RWclose(rw);
aschiffler@6760
   341
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6760
   342
   SDL_FreeRW( rw );
aschiffler@6760
   343
   SDLTest_AssertPass("Call to SDL_FreeRW() succeeded");
aschiffler@6760
   344
   fclose(fp);
aschiffler@6760
   345
aschiffler@6760
   346
   return TEST_COMPLETED;
aschiffler@6760
   347
}
aschiffler@6760
   348
aschiffler@6760
   349
aschiffler@6760
   350
/**
aschiffler@6760
   351
 * @brief Tests writing to file handle
aschiffler@6760
   352
 *
aschiffler@6760
   353
 * \sa
aschiffler@6760
   354
 * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFP
aschiffler@6760
   355
 * http://wiki.libsdl.org/moin.cgi/SDL_FreeRW
aschiffler@6760
   356
 *
aschiffler@6760
   357
 */
aschiffler@6760
   358
int
aschiffler@6760
   359
rwops_testFPWrite(void)
aschiffler@6760
   360
{
aschiffler@6760
   361
   FILE *fp;
aschiffler@6760
   362
   SDL_RWops *rw;
aschiffler@6760
   363
aschiffler@6760
   364
   /* Run write tests. */
aschiffler@6760
   365
   fp = fopen(RWopsWriteTestFilename, "w+");
aschiffler@6760
   366
   SDLTest_AssertCheck(fp != NULL, "Verify handle from opening file '%s' in write mode is not NULL", RWopsWriteTestFilename);
aschiffler@6760
   367
aschiffler@6760
   368
   /* Bail out if NULL */
aschiffler@6760
   369
   if (fp == NULL) return TEST_ABORTED;
aschiffler@6760
   370
aschiffler@6760
   371
   /* Open */
aschiffler@6760
   372
   rw = SDL_RWFromFP( fp, 1 );
aschiffler@6760
   373
   SDLTest_AssertPass("Call to SDL_RWFromFP() succeeded");
aschiffler@6760
   374
   SDLTest_AssertCheck(rw != NULL, "Verify opening file with SDL_RWFromFP in write mode does not return NULL");
aschiffler@6760
   375
aschiffler@6760
   376
   /* Bail out if NULL */
aschiffler@6760
   377
   if (rw == NULL) return TEST_ABORTED;
aschiffler@6760
   378
aschiffler@6760
   379
   /* Run generic tests */
aschiffler@6760
   380
   _testGenericRWopsValidations( rw, 1 );
aschiffler@6760
   381
aschiffler@6760
   382
   /* Close handle */
aschiffler@6760
   383
   SDL_RWclose(rw);
aschiffler@6760
   384
   SDLTest_AssertPass("Call to SDL_RWclose() succeeded");
aschiffler@6760
   385
   SDL_FreeRW( rw );
aschiffler@6760
   386
   SDLTest_AssertPass("Call to SDL_FreeRW() succeeded");
aschiffler@6760
   387
   fclose(fp);
aschiffler@6760
   388
aschiffler@6760
   389
   return TEST_COMPLETED;
aschiffler@6760
   390
}
aschiffler@6760
   391
aschiffler@6760
   392
/* ================= Test References ================== */
aschiffler@6760
   393
aschiffler@6760
   394
/* RWops test cases */
aschiffler@6760
   395
static const SDLTest_TestCaseReference rwopsTest1 =
aschiffler@6760
   396
		{ (SDLTest_TestCaseFp)rwops_testParamNegative, "rwops_testParamNegative", "Negative test for SDL_RWFromFile parameters", TEST_ENABLED };
aschiffler@6760
   397
aschiffler@6760
   398
static const SDLTest_TestCaseReference rwopsTest2 =
aschiffler@6760
   399
		{ (SDLTest_TestCaseFp)rwops_testMem, "rwops_testMem", "Tests opening from memory", TEST_ENABLED };
aschiffler@6760
   400
aschiffler@6760
   401
static const SDLTest_TestCaseReference rwopsTest3 =
aschiffler@6760
   402
		{ (SDLTest_TestCaseFp)rwops_testConstMem, "rwops_testConstMem", "Tests opening from (const) memory", TEST_ENABLED };
aschiffler@6760
   403
aschiffler@6760
   404
static const SDLTest_TestCaseReference rwopsTest4 =
aschiffler@6760
   405
		{ (SDLTest_TestCaseFp)rwops_testFileRead, "rwops_testFileRead", "Tests reading from a file", TEST_ENABLED };
aschiffler@6760
   406
aschiffler@6760
   407
static const SDLTest_TestCaseReference rwopsTest5 =
aschiffler@6760
   408
		{ (SDLTest_TestCaseFp)rwops_testFileWrite, "rwops_testFileWrite", "Test writing to a file", TEST_ENABLED };
aschiffler@6760
   409
aschiffler@6760
   410
static const SDLTest_TestCaseReference rwopsTest6 =
aschiffler@6760
   411
		{ (SDLTest_TestCaseFp)rwops_testFPRead, "rwops_testFPRead", "Test reading from file pointer", TEST_ENABLED };
aschiffler@6760
   412
aschiffler@6760
   413
static const SDLTest_TestCaseReference rwopsTest7 =
aschiffler@6760
   414
		{ (SDLTest_TestCaseFp)rwops_testFPWrite, "rwops_testFPWrite", "Test writing to file pointer", TEST_ENABLED };
aschiffler@6760
   415
aschiffler@6760
   416
/* Sequence of RWops test cases */
aschiffler@6760
   417
static const SDLTest_TestCaseReference *rwopsTests[] =  {
aschiffler@6760
   418
	&rwopsTest1, &rwopsTest2, &rwopsTest3, &rwopsTest4, &rwopsTest5, &rwopsTest6, &rwopsTest7, NULL
aschiffler@6760
   419
};
aschiffler@6760
   420
aschiffler@6760
   421
/* RWops test suite (global) */
aschiffler@6760
   422
SDLTest_TestSuiteReference rwopsTestSuite = {
aschiffler@6760
   423
	"RWops",
aschiffler@6760
   424
	RWopsSetUp,
aschiffler@6760
   425
	rwopsTests,
aschiffler@6760
   426
	RWopsTearDown
aschiffler@6760
   427
};