diff test/automated/SDL_at.h @ 3259:22ac66da0765

Merged Edgar's code changes from Google Summer of Code 2009
author Sam Lantinga <slouken@libsdl.org>
date Mon, 07 Sep 2009 05:06:34 +0000
parents
children 78db4f7ae2f3
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/automated/SDL_at.h	Mon Sep 07 05:06:34 2009 +0000
@@ -0,0 +1,159 @@
+/*
+ * Common code for automated test suite.
+ *
+ * Written by Edgar Simo "bobbens"
+ *
+ * Released under Public Domain.
+ */
+
+
+/**
+ * @file SDL_at.h
+ *
+ * @brief Handles automatic testing functionality.
+ *
+ * The basic approach with SDL_AT is to divide the tests into what are called
+ *  test suites and test cases. Each test suite should have multiple test
+ *  cases, each test case can have multiple asserts.
+ *
+ * To actually test for conditions within the testcase you check asserts, if
+ *  the asserts fail the failures will be logged in the testsuite and
+ *  displayed.
+ *
+ *  Syntax is similar to OpenGL. An example would be:
+ *
+ * @code
+ * int f; // Number failed
+ * SDL_ATinit( "My testsuite" );
+ *
+ * SDL_ATbegin( "My first testcase" );
+ * if (!SDL_ATassert( (1+1)==2, "Trying '1+1=2'."))
+ *    return; // Implicitly calls SDL_ATend if assert fails
+ * SDL_ATend(); // Finish testcase
+ *
+ * SDL_ATbegin( "My second testcase" );
+ * if (!SDL_ATassert( (4/2)==2, "Trying '4/2=2'."))
+ *    return; // Implicitly calls SDL_ATend if assert fails
+ * SDL_ATend(); // Finish testcase
+ *
+ * f = SDL_ATfinish();
+ * @endcode
+ *
+ * @author Edgar Simo "bobbens"
+ */
+
+
+#ifndef _SDL_AT_H
+#  define _SDL_AT_H
+
+
+
+enum {
+   SDL_AT_VERBOSE, /**< Sets the verbose level. */
+   SDL_AT_QUIET /**< Sets quietness. */
+};
+
+
+/*
+ * Suite level actions.
+ */
+/**
+ * @brief Starts the testsuite.
+ *
+ *    @param suite Name of the suite to start testing.
+ */
+void SDL_ATinit( const char *suite );
+/**
+ * @brief Finishes the testsuite printing out global results if verbose.
+ *
+ *    @return 0 if no errors occurred, otherwise number of failures.
+ */
+int SDL_ATfinish (void);
+/**
+ * @brief Sets a global property value.
+ *
+ *    @param property Property to set.
+ *    @param value Value to set property to.
+ */
+void SDL_ATseti( int property, int value );
+/**
+ * @brief Gets a global property value.
+ *
+ *    @param property Property to get.
+ *    @param[out] value Value of the property.
+ */
+void SDL_ATgeti( int property, int *value );
+
+
+/*
+ * Testcase level actions.
+ */
+/**
+ * @brief Begins a testcase.
+ *
+ *    @param testcase Name of the testcase to begin.
+ */
+void SDL_ATbegin( const char *testcase );
+/**
+ * @brief Checks a condition in the testcase.
+ *
+ * Will automatically call SDL_ATend if the condition isn't met.
+ *
+ *    @param condition Condition to make sure is true.
+ *    @param msg Message to display for failure.
+ *    @return Returns 1 if the condition isn't met.
+ */
+int SDL_ATassert( const char *msg, int condition );
+/**
+ * @brief Checks a condition in the testcase.
+ *
+ * Will automatically call SDL_ATend if the condition isn't met.
+ *
+ *    @param condition Condition to make sure is true.
+ *    @param msg Message to display for failure with printf style formatting.
+ *    @return Returns 1 if the condition isn't met.
+ */
+int SDL_ATvassert( int condition, const char *msg, ... );
+/**
+ * @brief Ends a testcase.
+ */
+void SDL_ATend (void);
+
+
+/*
+ * Misc functions.
+ */
+/**
+ * @brief Prints an error.
+ *
+ *    @param msg printf formatted string to display.
+ *    @return Number of character printed.
+ */
+int SDL_ATprintErr( const char *msg, ... );
+/**
+ * @brief Prints some text.
+ *
+ *    @param msg printf formatted string to display.
+ *    @return Number of character printed.
+ */
+#define SDL_ATprint(msg, args...) \
+   SDL_ATprintVerbose( 0, msg, ## args)
+/**
+ * @brief Prints some verbose text.
+ *
+ * Verbosity levels are as follows:
+ *
+ *  - 0 standard stdout, enabled by default
+ *  - 1 additional information
+ *  - 2 detailed information (spammy)
+ *
+ *    @param level Level of verbosity to print at.
+ *    @param msg printf formatted string to display.
+ *    @return Number of character printed.
+ */
+int SDL_ATprintVerbose( int level, const char *msg, ... );
+
+
+#endif /* _SDL_AT_H */
+
+