| /* |
| ******************************************************************************** |
| * |
| * Copyright (C) 1996-2007, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| * |
| ******************************************************************************** |
| */ |
| |
| #ifndef CTEST_H |
| #define CTEST_H |
| |
| #include "unicode/testtype.h" |
| #include "unicode/utrace.h" |
| |
| |
| /* prototypes *********************************/ |
| |
| U_CDECL_BEGIN |
| typedef void (U_CALLCONV *TestFunctionPtr)(void); |
| typedef struct TestNode TestNode; |
| U_CDECL_END |
| |
| /** |
| * Set this to zero to disable log_verbose() messages. |
| * Otherwise nonzero to see log_verbose() messages. |
| * |
| * @internal Internal APIs for testing purpose only |
| */ |
| extern T_CTEST_EXPORT_API int REPEAT_TESTS; |
| |
| /** |
| * Set this to zero to disable log_verbose() messages. |
| * Otherwise nonzero to see log_verbose() messages. |
| * |
| * @internal Internal APIs for testing purpose only |
| */ |
| extern T_CTEST_EXPORT_API 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 |
| */ |
| extern T_CTEST_EXPORT_API int ERR_MSG; |
| |
| /** |
| * Set this to zero to disable some of the slower tests. |
| * Otherwise nonzero to run the slower tests. |
| * |
| * @internal Internal APIs for testing purpose only |
| */ |
| extern T_CTEST_EXPORT_API int QUICK; |
| |
| /** |
| * Set this to nonzero to warn (not error) on missing data. |
| * Otherwise, zero will cause an error to be propagated when data is not available. |
| * Affects the behavior of log_dataerr. |
| * |
| * @see log_data_err |
| * @internal Internal APIs for testing purpose only |
| */ |
| extern T_CTEST_EXPORT_API int WARN_ON_MISSING_DATA; |
| |
| /** |
| * ICU tracing level, is set by command line option |
| * |
| * @internal |
| */ |
| extern T_CTEST_EXPORT_API UTraceLevel ICU_TRACE; |
| |
| /** |
| * Maximum amount of memory uprv_malloc should allocate before returning NULL. |
| * |
| * @internal |
| */ |
| extern T_CTEST_EXPORT_API size_t MAX_MEMORY_ALLOCATION; |
| |
| /** |
| * If memory tracing was enabled, contains the number of unfreed allocations. |
| * |
| * @internal |
| */ |
| extern T_CTEST_EXPORT_API int32_t ALLOCATION_COUNT; |
| |
| |
| /** |
| * Show the names of all nodes. |
| * |
| * @param root Subtree of tests. |
| * @internal Internal APIs for testing purpose only |
| */ |
| T_CTEST_API void T_CTEST_EXPORT2 |
| 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 T_CTEST_EXPORT2 |
| 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 T_CTEST_EXPORT2 |
| addTest(TestNode** root, |
| TestFunctionPtr test, |
| const char *path); |
| |
| /** |
| * Clean up any allocated memory. |
| * Conditions for calling this function are the same as u_cleanup(). |
| * @see u_cleanup |
| * @internal Internal APIs for testing purpose only |
| */ |
| T_CTEST_API void T_CTEST_EXPORT2 |
| 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* T_CTEST_EXPORT2 |
| 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 T_CTEST_EXPORT2 |
| 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 T_CTEST_EXPORT2 |
| log_info(const char* pattern, ...); |
| |
| /** |
| * Log an informational message. (vprintf style) |
| * @param prefix a string that is output before the pattern and without formatting |
| * @param pattern printf-style format string |
| * @param ap variable-arguments list |
| * @internal Internal APIs for testing purpose only |
| */ |
| T_CTEST_API void T_CTEST_EXPORT2 |
| vlog_info(const char *prefix, const char *pattern, va_list ap); |
| |
| /** |
| * 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 T_CTEST_EXPORT2 |
| log_verbose(const char* pattern, ...); |
| |
| /** |
| * Log an error message concerning missing data. (printf style) |
| * If WARN_ON_MISSING_DATA is nonzero, this will case a log_info (warning) to be |
| * printed, but if it is zero this will produce an error (log_err). |
| * @param pattern printf-style format string |
| * @internal Internal APIs for testing purpose only |
| */ |
| T_CTEST_API void T_CTEST_EXPORT2 |
| log_data_err(const char *pattern, ...); |
| |
| /** |
| * Initialize the variables above. This allows the test to set up accordingly |
| * before running the tests. |
| * This must be called before runTests. |
| */ |
| T_CTEST_API int T_CTEST_EXPORT2 |
| initArgs( int argc, const char* const argv[]); |
| |
| /** |
| * 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 T_CTEST_EXPORT2 |
| runTestRequest(const TestNode* root, |
| int argc, |
| const char* const argv[]); |
| |
| |
| T_CTEST_API const char* T_CTEST_EXPORT2 |
| getTestName(void); |
| |
| |
| |
| #endif |