153 lines
4.3 KiB
C
153 lines
4.3 KiB
C
|
/*
|
||
|
*****************************************************************************************
|
||
|
* *
|
||
|
* COPYRIGHT: *
|
||
|
* (C) Copyright Taligent, Inc., 1996, 1997 *
|
||
|
* (C) Copyright International Business Machines Corporation, 1999 *
|
||
|
* Licensed Material - Program-Property of IBM - All Rights Reserved. *
|
||
|
* US Government Users Restricted Rights - Use, duplication, or disclosure *
|
||
|
* restricted by GSA ADP Schedule Contract with IBM Corp. *
|
||
|
* *
|
||
|
*****************************************************************************************
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef CTEST_H
|
||
|
#define CTEST_H
|
||
|
|
||
|
|
||
|
/*Deals with imports and exports of the dynamic library*/
|
||
|
#ifdef _WIN32
|
||
|
#define T_CTEST_EXPORT __declspec(dllexport)
|
||
|
#define T_CTEST_IMPORT __declspec(dllimport)
|
||
|
#else
|
||
|
#define T_CTEST_EXPORT
|
||
|
#define T_CTEST_IMPORT
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
#define C_CTEST_API extern "C"
|
||
|
#else
|
||
|
#define C_CTEST_API
|
||
|
#endif
|
||
|
|
||
|
#ifdef T_CTEST_IMPLEMENTATION
|
||
|
#define T_CTEST_API C_CTEST_API T_CTEST_EXPORT
|
||
|
#define T_CTEST_EXPORT_API T_CTEST_EXPORT
|
||
|
#else
|
||
|
#define T_CTEST_API C_CTEST_API T_CTEST_IMPORT
|
||
|
#define T_CTEST_EXPORT_API T_CTEST_IMPORT
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
/* True and false for sanity. (removes ICU dependancy) */
|
||
|
|
||
|
#ifndef FALSE
|
||
|
#define FALSE 0
|
||
|
#endif
|
||
|
#ifndef TRUE
|
||
|
#define TRUE 1
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/* prototypes *********************************/
|
||
|
|
||
|
typedef void (*TestFunctionPtr)();
|
||
|
typedef struct TestNode TestNode;
|
||
|
|
||
|
/**
|
||
|
* Count of errors from all tests. May be reset.
|
||
|
*/
|
||
|
T_CTEST_EXPORT_API extern int ERROR_COUNT;
|
||
|
|
||
|
/**
|
||
|
* Set this to zero to disable log_verbose() messages, otherwise
|
||
|
* nonzero to see log_verbose() messages.
|
||
|
*/
|
||
|
T_CTEST_EXPORT_API extern int VERBOSITY;
|
||
|
/**
|
||
|
* Set this to zero to disable log_verbose() messages, otherwise
|
||
|
* nonzero to see log_verbose() messages.
|
||
|
*/
|
||
|
T_CTEST_EXPORT_API extern int ERR_MSG;
|
||
|
/**
|
||
|
* Show the names of all nodes.
|
||
|
* @param root Subtree of tests.
|
||
|
*/
|
||
|
T_CTEST_API void showTests ( const TestNode *root);
|
||
|
|
||
|
/**
|
||
|
* Run a subtree of tests.
|
||
|
* @param root Subtree of tests.
|
||
|
*/
|
||
|
T_CTEST_API void runTests ( const TestNode* root);
|
||
|
|
||
|
/**
|
||
|
* Add a test to the subtree.
|
||
|
* Example usage:
|
||
|
* <PRE>
|
||
|
* TestNode* root=NULL;
|
||
|
* addTest(&root, &mytest, "/a/b/mytest" );
|
||
|
* </PRE>
|
||
|
* @param root Pointer to the root pointer.
|
||
|
* @param test Pointer to 'void function(void)' for actual test.
|
||
|
* @param path Path from root under which test will be placed. Ex. '/a/b/mytest'
|
||
|
*/
|
||
|
T_CTEST_API void addTest ( TestNode** root,
|
||
|
TestFunctionPtr test,
|
||
|
const char *path);
|
||
|
|
||
|
/**
|
||
|
* Retreive a specific subtest (subtree)
|
||
|
* @param root Pointer to the root.
|
||
|
* @param path Path relative to the root, Ex. '/a/b'
|
||
|
* @return The subtest, or NULL on failure.
|
||
|
*/
|
||
|
T_CTEST_API const TestNode* getTest (const TestNode* root,
|
||
|
const char *path);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Log an error message. (printf style)
|
||
|
* @param pattern printf-style format string
|
||
|
*/
|
||
|
T_CTEST_API void log_err(const char* pattern, ...);
|
||
|
|
||
|
/**
|
||
|
* Log an informational message. (printf style)
|
||
|
* @param pattern printf-style format string
|
||
|
*/
|
||
|
T_CTEST_API void log_info(const char* pattern, ...);
|
||
|
|
||
|
/**
|
||
|
* Log a verbose informational message. (printf style)
|
||
|
* This message will only appear if the global VERBOSITY is nonzero
|
||
|
* @param pattern printf-style format string
|
||
|
*/
|
||
|
T_CTEST_API void log_verbose(const char* pattern, ...);
|
||
|
|
||
|
/**
|
||
|
* Processes the command line arguments.
|
||
|
* This is a sample implementation
|
||
|
* <PRE>Usage: %s [ -l ] [ -v ] [ -? ] [ /path/to/test ]
|
||
|
* -l List only, do not run\
|
||
|
* -v turn OFF verbosity
|
||
|
* -? print this message</PRE>
|
||
|
* @param root Testnode root with tests already attached to it
|
||
|
* @param argv argument list from main (stdio.h)
|
||
|
* @param argc argument list count from main (stdio.h)
|
||
|
* @return positive for error count, 0 for success, negative for illegal argument
|
||
|
*/
|
||
|
|
||
|
T_CTEST_API int processArgs(const TestNode* root,
|
||
|
int argc,
|
||
|
const char** argv);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif
|