blob: 9050a25c313d0712ca71460a4cd3f5ae26ec3611 [file] [log] [blame]
/*
*****************************************************************************************
*
* Copyright (C) 1996-2000, International Business Machines
* Corporation and others. All Rights Reserved.
*
*****************************************************************************************
*/
#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.
* @internal Internal APIs for testing purpose only
*/
T_CTEST_EXPORT_API extern int ERROR_COUNT;
/**
* Set this to zero to disable log_verbose() messages.
* Otherwise nonzero to see log_verbose() messages.
* @internal Internal APIs for testing purpose only
*
*/
T_CTEST_EXPORT_API extern int VERBOSITY;
/**
* Set this to zero to disable log_verbose() messages.
* Otherwise nonzero to see log_verbose() messages.
* @internal Internal APIs for testing purpose only
*
*/
T_CTEST_EXPORT_API extern int ERR_MSG;
/**
* Show the names of all nodes.
*
* @param root Subtree of tests.
* @internal Internal APIs for testing purpose only
*/
T_CTEST_API void showTests ( const TestNode *root);
/**
* Run a subtree of tests.
*
* @param root Subtree of tests.
* @internal Internal APIs for testing purpose only
*/
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'
* @internal Internal APIs for testing purpose only
*/
T_CTEST_API void addTest ( TestNode** root,
TestFunctionPtr test,
const char *path);
T_CTEST_API void cleanUpTestTree(TestNode *tn);
/**
* 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.
* @internal Internal APIs for testing purpose only
*/
T_CTEST_API const TestNode* getTest (const TestNode* root,
const char *path);
/**
* Log an error message. (printf style)
* @param pattern printf-style format string
* @internal Internal APIs for testing purpose only
*/
T_CTEST_API void log_err(const char* pattern, ...);
/**
* Log an informational message. (printf style)
* @param pattern printf-style format string
* @internal Internal APIs for testing purpose only
*/
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
* @internal Internal APIs for testing purpose only
*/
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
* @internal Internal APIs for testing purpose only
*/
T_CTEST_API int processArgs(const TestNode* root,
int argc,
const char* const argv[]);
#endif