Fixes based on CR.
authorMarkus Kauppila <markus.kauppila@gmail.com>
Mon, 15 Aug 2011 21:41:28 +0300
changeset 5836 89689fc82313
parent 5835 6257f3d86f2d
child 5837 b17d82db0905
Fixes based on CR. Some tests in rwops suite broken up to smaller tests.
test/test-automation/src/libSDLtest/fuzzer/fuzzer.c
test/test-automation/src/libSDLtest/fuzzer/fuzzer.h
test/test-automation/tests/testrwops/testrwops.c
--- a/test/test-automation/src/libSDLtest/fuzzer/fuzzer.c	Mon Aug 15 19:40:41 2011 +0300
+++ b/test/test-automation/src/libSDLtest/fuzzer/fuzzer.c	Mon Aug 15 21:41:28 2011 +0300
@@ -57,8 +57,6 @@
 		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 @@
 
 	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 @@
 	SDL_free(buffer);
 
 	Uint64 *keys = (Uint64 *)md5Context.digest;
-	Uint64 key = keys[0];
 
-	return key;
+	return keys[0];
 }
 
 void
@@ -147,29 +144,25 @@
 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 @@
 	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()
 {
--- a/test/test-automation/src/libSDLtest/fuzzer/fuzzer.h	Mon Aug 15 19:40:41 2011 +0300
+++ b/test/test-automation/src/libSDLtest/fuzzer/fuzzer.h	Mon Aug 15 21:41:28 2011 +0300
@@ -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,9 +108,24 @@
 /*!
  * 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
  * is true, the function will only return valid boundaries, otherwise non-valid
--- a/test/test-automation/tests/testrwops/testrwops.c	Mon Aug 15 19:40:41 2011 +0300
+++ b/test/test-automation/tests/testrwops/testrwops.c	Mon Aug 15 21:41:28 2011 +0300
@@ -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 @@
 		(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 @@
  * \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 @@
  * 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 @@
 
 
 /**
- * @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 @@
    _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 @@
 
 
 /**
- * @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 @@
    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 @@
    _testGeneric( rw, 1 );
 
    SDL_FreeRW( rw );
+   fclose(fp);
 }