2000-01-18 02:12:32 +00:00
|
|
|
/*
|
|
|
|
*****************************************************************************************
|
|
|
|
*
|
|
|
|
* Copyright (C) 1996-1999, 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.
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*/
|
|
|
|
T_CTEST_EXPORT_API extern int ERROR_COUNT;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set this to zero to disable log_verbose() messages.
|
|
|
|
* Otherwise nonzero to see log_verbose() messages.
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
T_CTEST_EXPORT_API extern int VERBOSITY;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set this to zero to disable log_verbose() messages.
|
|
|
|
* Otherwise nonzero to see log_verbose() messages.
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
T_CTEST_EXPORT_API extern int ERR_MSG;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Show the names of all nodes.
|
|
|
|
*
|
|
|
|
* @param root Subtree of tests.
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*/
|
|
|
|
T_CTEST_API void showTests ( const TestNode *root);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Run a subtree of tests.
|
|
|
|
*
|
|
|
|
* @param root Subtree of tests.
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*/
|
|
|
|
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'
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*/
|
|
|
|
T_CTEST_API void addTest ( TestNode** root,
|
|
|
|
TestFunctionPtr test,
|
|
|
|
const char *path);
|
|
|
|
|
2000-07-06 23:01:50 +00:00
|
|
|
T_CTEST_API void cleanUpTestTree(TestNode *tn);
|
|
|
|
|
2000-01-18 02:12:32 +00:00
|
|
|
/**
|
|
|
|
* 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.
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*/
|
|
|
|
T_CTEST_API const TestNode* getTest (const TestNode* root,
|
|
|
|
const char *path);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Log an error message. (printf style)
|
|
|
|
* @param pattern printf-style format string
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*/
|
|
|
|
T_CTEST_API void log_err(const char* pattern, ...);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Log an informational message. (printf style)
|
|
|
|
* @param pattern printf-style format string
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*/
|
|
|
|
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
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*/
|
|
|
|
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
|
2000-05-30 21:11:39 +00:00
|
|
|
* @internal Internal APIs for testing purpose only
|
2000-01-18 02:12:32 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
T_CTEST_API int processArgs(const TestNode* root,
|
|
|
|
int argc,
|
|
|
|
const char** argv);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|