Made rwops tests a bit more complete. gsoc2009_unit_tests
authorEdgar Simo <bobbens@gmail.com>
Sun, 02 Aug 2009 09:37:14 +0000
branchgsoc2009_unit_tests
changeset 3737 9689eaa6d2e3
parent 3736 78f544eded7b
child 3738 c875baafce36
Made rwops tests a bit more complete.
test/automated/rwops/read
test/automated/rwops/rwops.c
--- a/test/automated/rwops/read	Mon Jul 20 18:42:55 2009 +0000
+++ b/test/automated/rwops/read	Sun Aug 02 09:37:14 2009 +0000
@@ -1,1 +1,1 @@
-Hello World!
+Hello World!
\ No newline at end of file
--- a/test/automated/rwops/rwops.c	Mon Jul 20 18:42:55 2009 +0000
+++ b/test/automated/rwops/rwops.c	Sun Aug 02 09:37:14 2009 +0000
@@ -11,10 +11,46 @@
 #include "SDL_at.h"
 
 
+#define RWOPS_READ      "rwops/read"
+#define RWOPS_WRITE     "rwops/write"
+
 static const char hello_world[] = "Hello World!";
 
 
 /**
+ * @brief Makes sure parameters work properly.
+ */
+static void rwops_testParam (void)
+{
+   SDL_RWops *rwops;
+
+   /* Begin testcase. */
+   SDL_ATbegin( "RWops Parameters" );
+
+   /* These should all fail. */
+   rwops = SDL_RWFromFile(NULL, NULL);
+   if (SDL_ATassert( "SDL_RWFromFile(NULL, NULL) worked", rwops == NULL ))
+      return;
+   rwops = SDL_RWFromFile(NULL, "ab+");
+   if (SDL_ATassert( "SDL_RWFromFile(NULL, \"ab+\") worked", rwops == NULL ))
+      return;
+   rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj");
+   if (SDL_ATassert( "SDL_RWFromFile(NULL, \"sldfkjsldkfj\") worked", rwops == NULL ))
+      return;
+   rwops = SDL_RWFromFile("something", "");
+   if (SDL_ATassert( "SDL_RWFromFile(\"something\", \"\") worked", rwops == NULL ))
+      return;
+   rwops = SDL_RWFromFile("something", NULL);
+   if (SDL_ATassert( "SDL_RWFromFile(\"something\", NULL) worked", rwops == NULL ))
+      return;
+
+
+   /* End testcase. */
+   SDL_ATend();
+}
+
+
+/**
  * @brief Does a generic rwops test.
  *
  * RWops should have "Hello World!" in it already if write is disabled.
@@ -27,33 +63,58 @@
    char buf[sizeof(hello_world)];
    int i;
 
+   /* Set to start. */
+   i = SDL_RWseek( rw, 0, RW_SEEK_SET );
+   if (SDL_ATvassert( i == 0,
+            "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
+            i, 0 ))
+      return 1;
+
+   /* Test write. */
+   i = SDL_RWwrite( rw, hello_world, sizeof(hello_world)-1, 1 );
    if (write) {
-      /* Test write. */
-      i = SDL_RWwrite( rw, hello_world, sizeof(hello_world)-1, 1 );
-      if (SDL_ATassert( "Writing with SDL_RWwrite", i == 1 ))
+      if (SDL_ATassert( "Writing with SDL_RWwrite (failed to write)", i == 1 ))
+         return 1;
+   }
+   else {
+      if (SDL_ATassert( "Writing with SDL_RWwrite (wrote when shouldn't have)", i <= 0 ))
          return 1;
    }
 
    /* Test seek. */
    i = SDL_RWseek( rw, 6, RW_SEEK_SET );
-   if (SDL_ATassert( "Seeking with SDL_RWseek", i == 6 ))
-      return 1;
+   if (SDL_ATvassert( i == 6,
+            "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
+            i, 0 ))
+       return 1;
 
    /* Test seek. */
    i = SDL_RWseek( rw, 0, RW_SEEK_SET );
-   if (SDL_ATassert( "Seeking with SDL_RWseek", i == 0 ))
+   if (SDL_ATvassert( i == 0,
+            "Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
+            i, 0 ))
       return 1;
 
    /* Test read. */
    i = SDL_RWread( rw, buf, 1, sizeof(hello_world)-1 );
-   if (i != sizeof(hello_world)-1)
-      printf("%s\n", SDL_GetError());
    if (SDL_ATassert( "Reading with SDL_RWread", i == sizeof(hello_world)-1 ))
       return 1;
    if (SDL_ATassert( "Memory read does not match memory written",
             memcmp( buf, hello_world, sizeof(hello_world)-1 ) == 0 ))
       return 1;
 
+   /* More seek tests. */
+   i = SDL_RWseek( rw, -4, RW_SEEK_CUR );
+   if (SDL_ATvassert( i == sizeof(hello_world)-5,
+            "Seeking with SDL_RWseek (RW_SEEK_CUR): got %d, expected %d",
+            i, sizeof(hello_world)-5 ))
+      return 1;
+   i = SDL_RWseek( rw, -1, RW_SEEK_END );
+   if (SDL_ATvassert( i == sizeof(hello_world)-2,
+            "Seeking with SDL_RWseek (RW_SEEK_END): got %d, expected %d",
+            i, sizeof(hello_world)-2 ))
+      return 1;
+
    return 0;
 }
 
@@ -70,7 +131,7 @@
    SDL_ATbegin( "SDL_RWFromMem" );
 
    /* Open. */
-   rw = SDL_RWFromMem( mem, sizeof(mem) );
+   rw = SDL_RWFromMem( mem, sizeof(hello_world)-1 );
    if (SDL_ATassert( "Opening memory with SDL_RWFromMem", rw != NULL ))
       return;
 
@@ -98,7 +159,7 @@
    SDL_ATbegin( "SDL_RWFromConstMem" );
 
    /* Open. */
-   rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem) );
+   rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem)-1 );
    if (SDL_ATassert( "Opening memory with SDL_RWFromConstMem", rw != NULL ))
       return;
 
@@ -120,26 +181,24 @@
 static void rwops_testFile (void)
 {
    SDL_RWops *rw;
-   int i;
 
    /* Begin testcase. */
    SDL_ATbegin( "SDL_RWFromFile" );
 
-   /* Open. */
-   rw = SDL_RWFromFile( "rwops/read", "r" );
-   if (SDL_ATassert( "Opening memory with SDL_RWFromFile", rw != NULL ))
+   /* Read test. */
+   rw = SDL_RWFromFile( RWOPS_READ, "r" );
+   if (SDL_ATassert( "Opening memory with SDL_RWFromFile '"RWOPS_READ"'", rw != NULL ))
       return;
-
-   /* Test writing. */
-   i = SDL_RWwrite( rw, hello_world, sizeof(hello_world), 1 );
-   if (SDL_ATassert( "Writing with SDL_RWwrite", i == 0 ))
-      return;
-
-   /* Run generic tests. */
    if (rwops_testGeneric( rw, 0 ))
       return;
+   SDL_FreeRW( rw );
 
-   /* Close. */
+   /* Write test. */
+   rw = SDL_RWFromFile( RWOPS_WRITE, "w+" );
+   if (SDL_ATassert( "Opening memory with SDL_RWFromFile '"RWOPS_WRITE"'", rw != NULL ))
+      return;
+   if (rwops_testGeneric( rw, 1 ))
+      return;
    SDL_FreeRW( rw );
 
    /* End testcase. */
@@ -159,22 +218,26 @@
    /* Begin testcase. */
    SDL_ATbegin( "SDL_RWFromFP" );
 
-   /* Open. */
-   fp = fopen( "rwops/write", "w+" );
-   if (fp == NULL) {
-      SDL_ATprint("Failed to open file rwops/write");
-      SDL_ATend();
+   /* Run read tests. */
+   fp = fopen( RWOPS_READ, "r" );
+   if (SDL_ATassert( "Failed to open file '"RWOPS_READ"'", fp != NULL))
       return;
-   }
    rw = SDL_RWFromFP( fp, 1 );
    if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
       return;
+   if (rwops_testGeneric( rw, 0 ))
+      return;
+   SDL_FreeRW( rw );
 
-   /* Run generic tests. */
+   /* Run write tests. */
+   fp = fopen( RWOPS_WRITE, "w+" );
+   if (SDL_ATassert( "Failed to open file '"RWOPS_WRITE"'", fp != NULL))
+      return;
+   rw = SDL_RWFromFP( fp, 1 );
+   if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
+      return;
    if (rwops_testGeneric( rw, 1 ))
       return;
-
-   /* Close. */
    SDL_FreeRW( rw );
 
    /* End testcase. */
@@ -193,6 +256,7 @@
 
    SDL_ATinit( "SDL_RWops" );
 
+   rwops_testParam();
    rwops_testMem();
    rwops_testConstMem();
    rwops_testFile();