SDL-mirror/test/test-automation/tests/testrwops/testrwops.c

221 lines
5.5 KiB
C
Raw Normal View History

/**
2011-08-10 16:55:30 +03:00
* Automated SDL_RWops test.
*
* Original code written by Edgar Simo "bobbens"
* Ported by Markus Kauppila (markus.kauppila@gmail.com)
*
* Released under Public Domain.
*/
#include <stdio.h>
#include <SDL/SDL.h>
Reorganizing the project. --HG-- rename : test/test-automation/SDL_test.h => test/test-automation/include/SDL_test.h rename : test/test-automation/SDL_test.c => test/test-automation/src/libtest/SDL_test.c rename : test/test-automation/common/common.c => test/test-automation/src/libtest/common/common.c rename : test/test-automation/common/common.h => test/test-automation/src/libtest/common/common.h rename : test/test-automation/common/images.h => test/test-automation/src/libtest/common/images.h rename : test/test-automation/common/img_blit.c => test/test-automation/src/libtest/common/img_blit.c rename : test/test-automation/common/img_blitblend.c => test/test-automation/src/libtest/common/img_blitblend.c rename : test/test-automation/common/img_face.c => test/test-automation/src/libtest/common/img_face.c rename : test/test-automation/common/img_primitives.c => test/test-automation/src/libtest/common/img_primitives.c rename : test/test-automation/common/img_primitivesblend.c => test/test-automation/src/libtest/common/img_primitivesblend.c rename : test/test-automation/fuzzer/fuzzer.c => test/test-automation/src/libtest/fuzzer/fuzzer.c rename : test/test-automation/fuzzer/fuzzer.h => test/test-automation/src/libtest/fuzzer/fuzzer.h rename : test/test-automation/fuzzer/utl_crc32.c => test/test-automation/src/libtest/fuzzer/utl_crc32.c rename : test/test-automation/fuzzer/utl_crc32.h => test/test-automation/src/libtest/fuzzer/utl_crc32.h rename : test/test-automation/fuzzer/utl_md5.c => test/test-automation/src/libtest/fuzzer/utl_md5.c rename : test/test-automation/fuzzer/utl_md5.h => test/test-automation/src/libtest/fuzzer/utl_md5.h rename : test/test-automation/fuzzer/utl_random.c => test/test-automation/src/libtest/fuzzer/utl_random.c rename : test/test-automation/fuzzer/utl_random.h => test/test-automation/src/libtest/fuzzer/utl_random.h rename : test/test-automation/logger_helpers.c => test/test-automation/src/libtest/logger_helpers.c rename : test/test-automation/logger_helpers.h => test/test-automation/src/libtest/logger_helpers.h rename : test/test-automation/plain_logger.c => test/test-automation/src/libtest/plain_logger.c rename : test/test-automation/plain_logger.h => test/test-automation/src/libtest/plain_logger.h rename : test/test-automation/xml.c => test/test-automation/src/libtest/xml.c rename : test/test-automation/xml.h => test/test-automation/src/libtest/xml.h rename : test/test-automation/xml_logger.c => test/test-automation/src/libtest/xml_logger.c rename : test/test-automation/xml_logger.h => test/test-automation/src/libtest/xml_logger.h rename : test/test-automation/logger.h => test/test-automation/src/runner/logger.h rename : test/test-automation/runner.c => test/test-automation/src/runner/runner.c rename : test/test-automation/support.c => test/test-automation/src/runner/support.c rename : test/test-automation/support.h => test/test-automation/src/runner/support.h rename : test/test-automation/testaudio/Makefile.am => test/test-automation/tests/testaudio/Makefile.am rename : test/test-automation/testaudio/testaudio.c => test/test-automation/tests/testaudio/testaudio.c rename : test/test-automation/testdummy/Makefile.am => test/test-automation/tests/testdummy/Makefile.am rename : test/test-automation/testdummy/testdummy.c => test/test-automation/tests/testdummy/testdummy.c rename : test/test-automation/testplatform/Makefile.am => test/test-automation/tests/testplatform/Makefile.am rename : test/test-automation/testrect/Makefile.am => test/test-automation/tests/testrect/Makefile.am rename : test/test-automation/testrect/testrect.c => test/test-automation/tests/testrect/testrect.c rename : test/test-automation/testrender/Makefile.am => test/test-automation/tests/testrender/Makefile.am rename : test/test-automation/testrender/testrender.c => test/test-automation/tests/testrender/testrender.c rename : test/test-automation/testrwops/Makefile.am => test/test-automation/tests/testrwops/Makefile.am rename : test/test-automation/testrwops/testrwops.c => test/test-automation/tests/testrwops/testrwops.c rename : test/test-automation/testsurface/Makefile.am => test/test-automation/tests/testsurface/Makefile.am rename : test/test-automation/testsurface/testsurface.c => test/test-automation/tests/testsurface/testsurface.c
2011-08-06 17:35:58 +03:00
#include "../../include/SDL_test.h"
2011-08-10 16:55:30 +03:00
#include "TestSupportRWops.h"
2011-08-10 16:55:30 +03:00
const char* RWOPS_READ = "tests/testrwops/read";
const char* RWOPS_WRITE = "tests/testrwops/write";
2011-08-10 16:55:30 +03:00
static const char hello_world[] = "Hello World!";
static const char const_mem[] = "Hello World!";
/* Test cases */
static const TestCaseReference test1 =
2011-08-10 16:55:30 +03:00
(TestCaseReference){ "rwops_testParam", "test parameters", TEST_ENABLED, 0, 0 };
static const TestCaseReference test2 =
(TestCaseReference){ "rwops_testMem", "Tests opening from memory", TEST_ENABLED, 0, 0 };
static const TestCaseReference test3 =
(TestCaseReference){ "rwops_testConstMem", "Tests opening from (const) memory", TEST_ENABLED, 0, 0 };
static const TestCaseReference test4 =
(TestCaseReference){ "rwops_testFile", "rwop sy", TEST_ENABLED, 0, 0 };
static const TestCaseReference test5 =
(TestCaseReference){ "rwops_testFP", "rwop sy", TEST_ENABLED, TEST_REQUIRES_STDIO, 0 };
/* Test suite */
extern const TestCaseReference *testSuite[] = {
2011-08-10 16:55:30 +03:00
&test1, &test2, &test3, &test4, &test5, NULL
};
TestCaseReference **QueryTestSuite() {
return (TestCaseReference **)testSuite;
}
2011-08-10 16:55:30 +03:00
/**
* @brief Makes sure parameters work properly. Helper function
*/
int _testGeneric( SDL_RWops *rw, int write )
{
char buf[sizeof(hello_world)];
int i;
/* Set to start. */
i = SDL_RWseek( rw, 0, RW_SEEK_SET );
AssertEquals(i, 0, "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d");
/* Test write. */
i = SDL_RWwrite( rw, hello_world, sizeof(hello_world)-1, 1 );
if (write) {
AssertEquals(i, 1, "Writing with SDL_RWwrite (failed to write)");
}
else {
AssertTrue(i <= 0, "Writing with SDL_RWwrite (wrote when shouldn't have)");
}
/* Test seek. */
i = SDL_RWseek( rw, 6, RW_SEEK_SET );
AssertEquals(i, 6, "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d", i, 0);
/* Test seek. */
i = SDL_RWseek( rw, 0, RW_SEEK_SET );
AssertEquals(i, 0, "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d", i, 0);
/* Test read. */
i = SDL_RWread( rw, buf, 1, sizeof(hello_world)-1 );
AssertTrue(i == sizeof(hello_world)-1, "Reading with SDL_RWread");
AssertTrue(SDL_memcmp( buf, hello_world, sizeof(hello_world)-1 ) == 0, "Memory read does not match memory written");
/* More seek tests. */
i = SDL_RWseek( rw, -4, RW_SEEK_CUR );
AssertTrue(i == sizeof(hello_world)-5, "Seeking with SDL_RWseek (RW_SEEK_CUR): got %d, expected %d");
i = SDL_RWseek( rw, -1, RW_SEEK_END );
AssertTrue(i == sizeof(hello_world)-2, "Seeking with SDL_RWseek (RW_SEEK_END): got %d, expected %d", i, sizeof(hello_world)-2);
}
void rwops_testParam (void)
{
SDL_RWops *rwops;
/* These should all fail. */
rwops = SDL_RWFromFile(NULL, NULL);
AssertTrue(rwops == NULL, "SDL_RWFromFile(NULL, NULL) worked");
rwops = SDL_RWFromFile(NULL, "ab+");
AssertTrue(rwops == NULL, "SDL_RWFromFile(NULL, NULL) worked");
rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj");
AssertTrue(rwops == NULL, "SDL_RWFromFile(NULL, \"sldfkjsldkfj\") worked");
rwops = SDL_RWFromFile("something", "");
AssertTrue(rwops == NULL, "SDL_RWFromFile(\"something\", \"\") worked");
rwops = SDL_RWFromFile("something", NULL);
AssertTrue(rwops == NULL, "SDL_RWFromFile(\"something\", NULL) worked");
}
/**
* @brief Does a generic rwops test.
*
* RWops should have "Hello World!" in it already if write is disabled.
*
* @param write Test writing also.
* @return 1 if an assert is failed.
*/
/**
2011-08-10 16:55:30 +03:00
* @brief Tests opening from memory.
*/
2011-08-10 16:55:30 +03:00
void rwops_testMem (void)
{
2011-08-10 16:55:30 +03:00
char mem[sizeof(hello_world)];
SDL_RWops *rw;
/* Open. */
rw = SDL_RWFromMem( mem, sizeof(hello_world)-1 );
AssertTrue(rw != NULL, "Opening memory with SDL_RWFromMem");
/* Run generic tests. */
_testGeneric( rw, 1 );
/* Close. */
SDL_FreeRW( rw );
}
/**
* @brief Tests opening from memory.
*/
void rwops_testConstMem (void)
{
SDL_RWops *rw;
/* Open. */
rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem)-1 );
AssertTrue(rw != NULL, "Opening memory with SDL_RWFromConstMem");
/* Run generic tests. */
_testGeneric( rw, 0 );
/* Close. */
SDL_FreeRW( rw );
}
/**
* @brief Tests opening from memory.
*/
void rwops_testFile (void)
{
SDL_RWops *rw;
/* Read test. */
rw = TestSupportRWops_OpenRWopsFromReadDir( RWOPS_READ, "r" );
AssertTrue(rw != NULL, "Opening memory with SDL_RWFromFile RWOPS_READ");
_testGeneric( rw, 0 );
SDL_FreeRW( rw );
/* Write test. */
rw = TestSupportRWops_OpenRWopsFromWriteDir( RWOPS_WRITE, "w+" );
AssertTrue(rw != NULL, "Opening memory with SDL_RWFromFile RWOPS_WRITE");
_testGeneric( rw, 1 );
SDL_FreeRW( rw );
}
/**
* @brief Tests opening from stdio
*/
void rwops_testFP (void)
{
FILE *fp;
SDL_RWops *rw;
/* Run read tests. */
fp = TestSupportRWops_OpenFPFromReadDir( RWOPS_READ, "r" );
AssertTrue(fp != NULL, "Failed to open file %s,", RWOPS_READ);
rw = SDL_RWFromFP( fp, 1 );
AssertTrue(rw != NULL, "Opening memory with SDL_RWFromFP");
_testGeneric( rw, 0 );
SDL_FreeRW( rw );
/* Run write tests. */
fp = TestSupportRWops_OpenFPFromWriteDir( RWOPS_WRITE, "w+" );
AssertTrue(fp != NULL, "Failed to open file %s", RWOPS_WRITE);
rw = SDL_RWFromFP( fp, 1 );
AssertTrue( rw != NULL, "Opening memory with SDL_RWFromFP");
_testGeneric( rw, 1 );
SDL_FreeRW( rw );
}