diff --git a/test/test-automation/src/libSDLtest/fuzzer/fuzzer.c b/test/test-automation/src/libSDLtest/fuzzer/fuzzer.c index fdbb7e04e..eb184b834 100644 --- a/test/test-automation/src/libSDLtest/fuzzer/fuzzer.c +++ b/test/test-automation/src/libSDLtest/fuzzer/fuzzer.c @@ -57,8 +57,6 @@ GenerateExecKey(char *runSeed, char *suiteName, return -1; } - - // Change to itoa char iterationString[16]; memset(iterationString, 0, sizeof(iterationString)); SDL_snprintf(iterationString, sizeof(iterationString) - 1, "%d", iterationNumber); @@ -75,7 +73,7 @@ GenerateExecKey(char *runSeed, char *suiteName, char *buffer = SDL_malloc(entireString); if(!buffer) { - return -1; + return 0; } SDL_snprintf(buffer, entireString, "%s/%s/%s/%d", runSeed, suiteName, @@ -89,9 +87,8 @@ GenerateExecKey(char *runSeed, char *suiteName, SDL_free(buffer); Uint64 *keys = (Uint64 *)md5Context.digest; - Uint64 key = keys[0]; - return key; + return keys[0]; } void @@ -147,29 +144,25 @@ RandomPositiveInteger() Uint64 RandomUint64() { - Uint8 string[16]; + Uint64 value; - int counter = 0; - for( ; counter < 16; ++counter) { - string[counter] = (Uint8) RandomIntegerInRange(0, 255); - } + Uint32 *vp = (Uint32*)&value; + vp[0] = RandomSint32(); + vp[1] = RandomSint32(); - Uint64 *value = (Uint64 *)string; - return value[0]; + return value; } Sint64 RandomSint64() { - Uint8 string[16]; + Uint64 value; - int counter = 0; - for( ; counter < 16; ++counter) { - string[counter] = (Uint8) RandomIntegerInRange(0, 255); - } + Uint32 *vp = (Uint32*)&value; + vp[0] = RandomSint32(); + vp[1] = RandomSint32(); - Sint64 *value = (Sint64 *)string; - return value[0]; + return value; } @@ -566,10 +559,33 @@ RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDoma return retVal; } -float RandomFloat() { +float +RandomUnitFloat() +{ return (float) utl_randomInt(&rndContext) / UINT_MAX; } +double +RandomUnitDouble() +{ + return (double) RandomUint64() / LLONG_MAX; +} + +float +RandomFloat() +{ + // \todo to be implemented + return 0.0f; +} + +double +RandomDouble() +{ + // \todo to be implemented + return 0.0f; +} + + char * RandomAsciiString() { diff --git a/test/test-automation/src/libSDLtest/fuzzer/fuzzer.h b/test/test-automation/src/libSDLtest/fuzzer/fuzzer.h index 02143f850..738a118e2 100644 --- a/test/test-automation/src/libSDLtest/fuzzer/fuzzer.h +++ b/test/test-automation/src/libSDLtest/fuzzer/fuzzer.h @@ -27,6 +27,11 @@ #include "utl_md5.h" #include "utl_random.h" +/*! + * \file + * Note: fuzzer implementation uses static instance of random context + * internally which makes it thread-UNsafe. + */ /*! * Inits the fuzzer for a test @@ -103,8 +108,23 @@ Sint64 RandomSint64(); /*! * Returns random float in range [0.0 - 1.0] (inclusive) */ +float RandomUnitFloat(); + +/*! + * Returns random double in range [0.0 - 1.0] (inclusive) + */ +double RandomUnitDouble(); + +/*! + * Returns random float + */ float RandomFloat(); +/*! + * Returns random double + */ +double RandomDouble(); + /*! * Returns a random boundary value for Uint8 within the given boundaries. * Boundaries are inclusive, see the usage examples below. If validDomain diff --git a/test/test-automation/tests/testrwops/testrwops.c b/test/test-automation/tests/testrwops/testrwops.c index c17e8bfc5..9c0ff764a 100644 --- a/test/test-automation/tests/testrwops/testrwops.c +++ b/test/test-automation/tests/testrwops/testrwops.c @@ -13,6 +13,7 @@ #include "../../include/SDL_test.h" +// TODO create these at SetUp() and such TearDown() const char* RWOPS_READ = "tests/testrwops/read"; const char* RWOPS_WRITE = "tests/testrwops/write"; @@ -30,15 +31,22 @@ 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 }; + (TestCaseReference){ "rwops_testFileRead", "Tests reading from a file", TEST_ENABLED, 0, 0 }; static const TestCaseReference test5 = - (TestCaseReference){ "rwops_testFP", "rwop sy", TEST_ENABLED, TEST_REQUIRES_STDIO, 0 }; + (TestCaseReference){ "rwops_testFileWrite", "Test writing to a file", TEST_ENABLED, 0, 0 }; + +static const TestCaseReference test6 = + (TestCaseReference){ "rwops_testFPRead", "Test reading from stdio", TEST_ENABLED, TEST_REQUIRES_STDIO, 0 }; + +static const TestCaseReference test7 = + (TestCaseReference){ "rwops_testFPWrite", "Test writing to stdio", TEST_ENABLED, TEST_REQUIRES_STDIO, 0 }; + /* Test suite */ extern const TestCaseReference *testSuite[] = { - &test1, &test2, &test3, &test4, &test5, NULL + &test1, &test2, &test3, &test4, &test5, &test6, &test7, NULL }; TestCaseReference **QueryTestSuite() { @@ -52,7 +60,6 @@ TestCaseReference **QueryTestSuite() { * \sa * http://wiki.libsdl.org/moin.cgi/SDL_RWseek * http://wiki.libsdl.org/moin.cgi/SDL_RWread - * */ int _testGeneric( SDL_RWops *rw, int write ) { @@ -99,6 +106,8 @@ int _testGeneric( SDL_RWops *rw, int write ) * Tests rwops parameters * * \sa http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile + * + * TODO Add fuzzer support here, write and read a string */ void rwops_testParam (void) { @@ -167,13 +176,14 @@ void rwops_testConstMem (void) /** - * @brief Tests opening from memory. + * @brief Tests reading from memory. * * \sa * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile * http://wiki.libsdl.org/moin.cgi/SDL_FreeRW */ -void rwops_testFile (void) +void +rwops_testFileRead(void) { SDL_RWops *rw; @@ -184,6 +194,19 @@ void rwops_testFile (void) _testGeneric( rw, 0 ); SDL_FreeRW( rw ); +} + +/** + * @brief Tests writing from memory. + * + * \sa + * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFile + * http://wiki.libsdl.org/moin.cgi/SDL_FreeRW + */ +void +rwops_testFileWrite(void) +{ + SDL_RWops *rw; /* Write test. */ rw = SDL_RWFromFile(RWOPS_WRITE, "w+"); @@ -196,13 +219,15 @@ void rwops_testFile (void) /** - * @brief Tests opening from stdio + * @brief Tests reading from stdio * * \sa * http://wiki.libsdl.org/moin.cgi/SDL_RWFromFP * http://wiki.libsdl.org/moin.cgi/SDL_FreeRW + * */ -void rwops_testFP (void) +void +rwops_testFPRead(void) { FILE *fp; SDL_RWops *rw; @@ -214,9 +239,18 @@ void rwops_testFP (void) rw = SDL_RWFromFP( fp, 1 ); AssertTrue(rw != NULL, "Opening memory with SDL_RWFromFP"); + // TODO bail out if NULL _testGeneric( rw, 0 ); SDL_FreeRW( rw ); + fclose(fp); +} + +void +rwops_testFPWrite(void) +{ + FILE *fp; + SDL_RWops *rw; /* Run write tests. */ fp = fopen(RWOPS_WRITE, "w+"); @@ -228,4 +262,5 @@ void rwops_testFP (void) _testGeneric( rw, 1 ); SDL_FreeRW( rw ); + fclose(fp); }