mirror of https://github.com/PCSX2/pcsx2.git
159 lines
3.7 KiB
C
159 lines
3.7 KiB
C
/*
|
|
* 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.
|
|
*/
|
|
int SDL_ATprint( const char *msg, ... );
|
|
/**
|
|
* @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 */
|
|
|
|
|