changeset 3713:a34bab848c7e gsoc2009_unit_tests

Better output. Newline handling. rwops test handles ConstMem, FP and File.
author Edgar Simo <bobbens@gmail.com>
date Sat, 20 Jun 2009 16:46:58 +0000
parents 916469fbdc29
children 1b710c8e4cfb
files test/automated/Makefile test/automated/SDL_at.c test/automated/rwops.c test/automated/rwops/read test/automated/rwops/rwops.c
diffstat 5 files changed, 211 insertions(+), 80 deletions(-) [+]
line wrap: on
line diff
--- a/test/automated/Makefile	Fri Jun 19 18:57:23 2009 +0000
+++ b/test/automated/Makefile	Sat Jun 20 16:46:58 2009 +0000
@@ -1,12 +1,12 @@
 
 
-CFLAGS  := `sdl-config --cflags`
+CFLAGS  := -I. `sdl-config --cflags`
 LDFLAGS := `sdl-config --libs`
 
 COMMON_SRC     := SDL_at.c
 COMMON_INCLUDE := SDL_at.h
 
-TESTS_ALL := rwops
+TESTS_ALL := rwops/rwops
 
 
 .PHONY: all clean test
@@ -15,10 +15,10 @@
 all: $(TESTS_ALL)
 
 test:
-	@./rwops
+	@./rwops/rwops
 
-rwops: rwops.c $(COMMON_INCLUDE)
-	$(CC) $(CFLAGS) $(LDFLAGS) -o rwops rwops.c $(COMMON_SRC)
+rwops/rwops: rwops/rwops.c $(COMMON_INCLUDE)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ rwops/rwops.c $(COMMON_SRC)
 
 clean:
 	$(RM) $(TESTS_ALL)
--- a/test/automated/SDL_at.c	Fri Jun 19 18:57:23 2009 +0000
+++ b/test/automated/SDL_at.c	Sat Jun 20 16:46:58 2009 +0000
@@ -71,7 +71,7 @@
    if (verbose) {
       if (at_failure > 0) {
          SDL_ATprint( "%s : Failed %d out of %d testcases!\n",
-               at_suite_msg, at_failure, at_success );
+               at_suite_msg, at_failure, at_failure+at_success );
       }
       else {
          SDL_ATprint( "%s : All tests successful (%d)\n",
@@ -94,12 +94,12 @@
 {
    /* Do not open twice. */
    if (at_test_msg) {
-      SDL_ATprint( "AT testcase '%s' not closed before opening testcase '%s'",
+      SDL_ATprint( "AT testcase '%s' not closed before opening testcase '%s'\n",
             at_test_msg, testcase );
    }
    /* Must have a name. */
    if (testcase == NULL) {
-      SDL_ATprint( "AT testcase does not have a name.");
+      SDL_ATprint( "AT testcase does not have a name.\n");
    }
    at_test_msg = testcase;
 }
@@ -112,7 +112,7 @@
 {
    /* Make sure initialized. */
    if (at_test_msg == NULL) {
-      SDL_ATprint("Ended testcase without initializing.");
+      SDL_ATprint("Ended testcase without initializing.\n");
       return;
    }
 
@@ -134,7 +134,7 @@
 {
    /* Condition failed. */
    if (!condition) {
-      SDL_ATprint( "%s [%s] : %s", at_suite_msg, at_test_msg, msg );
+      SDL_ATprint( "%s [%s] : %s\n", at_suite_msg, at_test_msg, msg );
       SDL_ATendWith(0);
    }
    return !condition;
--- a/test/automated/rwops.c	Fri Jun 19 18:57:23 2009 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/**
- * Automated SDL_RWops test.
- *
- * Written by Edgar Simo "bobbens"
- *
- * Released under Public Domain.
- */
-
-
-#include "SDL.h"
-#include "SDL_at.h"
-
-
-static const char hello_world[] = "Hello World!";
-
-
-/**
- * @brief Tests opening from memory.
- */
-static void rwops_testMem (void)
-{
-   SDL_RWops *rw;
-   char mem[sizeof(hello_world)], buf[sizeof(hello_world)];
-   int i;
-
-   /* Begin testcase. */
-   SDL_ATbegin( "SDL_RWFromMem" );
-
-   /* Open. */
-   rw = SDL_RWFromMem( mem, sizeof(mem) );
-   if (SDL_ATassert( "Opening memory with SDL_RWFromMem", rw != NULL ))
-      return;
-
-   /* Test write. */
-   i = SDL_RWwrite( rw, hello_world, sizeof(hello_world), 1 );
-   if (SDL_ATassert( "Writing with SDL_RWwrite", i == 1 ))
-      return;
-
-   /* Test seek. */
-   i = SDL_RWseek( rw, 0, RW_SEEK_SET );
-   if (SDL_ATassert( "Seeking with SDL_RWseek", i == 0 ))
-      return;
-
-   /* Test read. */
-   i = SDL_RWread( rw, buf, sizeof(hello_world), 1 );
-   if (SDL_ATassert( "Reading with SDL_RWread", i == 1 ))
-      return;
-   if (SDL_ATassert( "Memory read does not match memory written",
-            memcmp( buf, hello_world, sizeof(hello_world) ) == 0 ))
-      return;
-
-   /* Close. */
-   SDL_FreeRW( rw );
-
-   /* End testcase. */
-   SDL_ATend();
-}
-
-
-/**
- * @brief Entry point.
- */
-int main( int argc, const char *argv[] )
-{
-   SDL_ATinit( "SDL_RWops" );
-
-   rwops_testMem();
-
-   return SDL_ATfinish(1);
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/automated/rwops/read	Sat Jun 20 16:46:58 2009 +0000
@@ -0,0 +1,1 @@
+Hello World!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/automated/rwops/rwops.c	Sat Jun 20 16:46:58 2009 +0000
@@ -0,0 +1,200 @@
+/**
+ * Automated SDL_RWops test.
+ *
+ * Written by Edgar Simo "bobbens"
+ *
+ * Released under Public Domain.
+ */
+
+
+#include "SDL.h"
+#include "SDL_at.h"
+
+
+static const char hello_world[] = "Hello World!";
+
+
+/**
+ * @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.
+ */
+static int rwops_testGeneric( SDL_RWops *rw, int write )
+{
+   char buf[sizeof(hello_world)];
+   int i;
+
+   if (write) {
+      /* Test write. */
+      i = SDL_RWwrite( rw, hello_world, sizeof(hello_world)-1, 1 );
+      if (SDL_ATassert( "Writing with SDL_RWwrite", i == 1 ))
+         return 1;
+   }
+
+   /* Test seek. */
+   i = SDL_RWseek( rw, 6, RW_SEEK_SET );
+   if (SDL_ATassert( "Seeking with SDL_RWseek", i == 6 ))
+      return 1;
+
+   /* Test seek. */
+   i = SDL_RWseek( rw, 0, RW_SEEK_SET );
+   if (SDL_ATassert( "Seeking with SDL_RWseek", 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;
+
+   return 0;
+}
+
+
+/**
+ * @brief Tests opening from memory.
+ */
+static void rwops_testMem (void)
+{
+   char mem[sizeof(hello_world)];
+   SDL_RWops *rw;
+
+   /* Begin testcase. */
+   SDL_ATbegin( "SDL_RWFromMem" );
+
+   /* Open. */
+   rw = SDL_RWFromMem( mem, sizeof(mem) );
+   if (SDL_ATassert( "Opening memory with SDL_RWFromMem", rw != NULL ))
+      return;
+
+   /* Run generic tests. */
+   if (rwops_testGeneric( rw, 1 ))
+      return;
+
+   /* Close. */
+   SDL_FreeRW( rw );
+
+   /* End testcase. */
+   SDL_ATend();
+}
+
+
+static const char const_mem[] = "Hello World!";
+/**
+ * @brief Tests opening from memory.
+ */
+static void rwops_testConstMem (void)
+{
+   SDL_RWops *rw;
+
+   /* Begin testcase. */
+   SDL_ATbegin( "SDL_RWFromConstMem" );
+
+   /* Open. */
+   rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem) );
+   if (SDL_ATassert( "Opening memory with SDL_RWFromConstMem", rw != NULL ))
+      return;
+
+   /* Run generic tests. */
+   if (rwops_testGeneric( rw, 0 ))
+      return;
+
+   /* Close. */
+   SDL_FreeRW( rw );
+
+   /* End testcase. */
+   SDL_ATend();
+}
+
+
+/**
+ * @brief Tests opening from memory.
+ */
+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 ))
+      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;
+
+   /* Close. */
+   SDL_FreeRW( rw );
+
+   /* End testcase. */
+   SDL_ATend();
+}
+
+
+/**
+ * @brief Tests opening from memory.
+ */
+static void rwops_testFP (void)
+{
+#ifdef HAVE_STDIO_H
+   FILE *fp;
+   SDL_RWops *rw;
+   int i;
+
+   /* 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();
+      return;
+   }
+   rw = SDL_RWFromFP( fp, 1 );
+   if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
+      return;
+
+   /* Run generic tests. */
+   if (rwops_testGeneric( rw, 1 ))
+      return;
+
+   /* Close. */
+   SDL_FreeRW( rw );
+
+   /* End testcase. */
+   SDL_ATend();
+#endif /* HAVE_STDIO_H */
+}
+
+
+/**
+ * @brief Entry point.
+ */
+int main( int argc, const char *argv[] )
+{
+   SDL_ATinit( "SDL_RWops" );
+
+   rwops_testMem();
+   rwops_testConstMem();
+   rwops_testFile();
+   rwops_testFP();
+
+   return SDL_ATfinish(1);
+}