X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/374ca955a76ecab1204ca8bfa63ff9238d998416..f59164e3d128c7675a4d3934206346a3384e53a5:/icuSources/tools/ctestfw/unicode/ctest.h?ds=sidebyside diff --git a/icuSources/tools/ctestfw/unicode/ctest.h b/icuSources/tools/ctestfw/unicode/ctest.h index 9c2f04c5..f078703d 100644 --- a/icuSources/tools/ctestfw/unicode/ctest.h +++ b/icuSources/tools/ctestfw/unicode/ctest.h @@ -1,11 +1,11 @@ /* -******************************************************************************** -* -* Copyright (C) 1996-2004, International Business Machines -* Corporation and others. All Rights Reserved. -* -******************************************************************************** -*/ + ******************************************************************************** + * + * Copyright (C) 1996-2013, International Business Machines + * Corporation and others. All Rights Reserved. + * + ******************************************************************************** + */ #ifndef CTEST_H #define CTEST_H @@ -18,57 +18,107 @@ U_CDECL_BEGIN typedef void (U_CALLCONV *TestFunctionPtr)(void); +typedef int (U_CALLCONV *ArgHandlerPtr)(int arg, int argc, const char* const argv[], void *context); typedef struct TestNode TestNode; U_CDECL_END /** - * Set this to zero to disable log_verbose() messages. - * Otherwise nonzero to see log_verbose() messages. + * This is use to set or get the option value for REPEAT_TESTS. + * Use with set/getTestOption(). * - * @internal Internal APIs for testing purpose only + * @internal */ -extern T_CTEST_EXPORT_API int REPEAT_TESTS; +#define REPEAT_TESTS_OPTION 1 /** - * Set this to zero to disable log_verbose() messages. + * This is use to set or get the option value for VERBOSITY. + * When option is set to zero to disable log_verbose() messages. * Otherwise nonzero to see log_verbose() messages. + * Use with set/getTestOption(). * - * @internal Internal APIs for testing purpose only + * @internal */ -extern T_CTEST_EXPORT_API int VERBOSITY; +#define VERBOSITY_OPTION 2 /** - * Set this to zero to disable log_verbose() messages. - * Otherwise nonzero to see log_verbose() messages. + * This is use to set or get the option value for ERR_MSG. + * Use with set/getTestOption(). * - * @internal Internal APIs for testing purpose only + * @internal */ -extern T_CTEST_EXPORT_API int ERR_MSG; +#define ERR_MSG_OPTION 3 /** - * Set this to zero to disable some of the slower tests. + * This is use to set or get the option value for QUICK. + * When option is zero, disable some of the slower tests. * Otherwise nonzero to run the slower tests. + * Use with set/getTestOption(). * - * @internal Internal APIs for testing purpose only + * @internal */ -extern T_CTEST_EXPORT_API int QUICK; +#define QUICK_OPTION 4 /** - * 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. + * This is use to set or get the option value for WARN_ON_MISSING_DATA. + * When option is nonzero, warn on missing data. + * Otherwise, errors are propagated when data is not available. * Affects the behavior of log_dataerr. + * Use with set/getTestOption(). * * @see log_data_err - * @internal Internal APIs for testing purpose only + * @internal + */ +#define WARN_ON_MISSING_DATA_OPTION 5 + +/** + * This is use to set or get the option value for ICU_TRACE. + * ICU tracing level, is set by command line option. + * Use with set/getTestOption(). + * + * @internal */ -extern T_CTEST_EXPORT_API int WARN_ON_MISSING_DATA; +#define ICU_TRACE_OPTION 6 /** - * ICU tracing level, is set by command line option + * Maximum amount of memory uprv_malloc should allocate before returning NULL. * * @internal */ -extern T_CTEST_EXPORT_API UTraceLevel ICU_TRACE; +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; + +/** + * Pass to setTestOption to decrement the test option value. + * + * @internal + */ +#define DECREMENT_OPTION_VALUE -99 + +/** + * Gets the test option set on commandline. + * + * @param testOption macro definition for the individual test option + * @return value of test option, zero if option is not set or off + * @internal Internal APIs for testing purpose only + */ +T_CTEST_API int32_t T_CTEST_EXPORT2 +getTestOption ( int32_t testOption ); + +/** + * Sets the test option with value given on commandline. + * + * @param testOption macro definition for the individual test option + * @param value to set the test option to + * @internal Internal APIs for testing purpose only + */ +T_CTEST_API void T_CTEST_EXPORT2 +setTestOption ( int32_t testOption, int32_t value); /** * Show the names of all nodes. @@ -135,6 +185,8 @@ getTest(const TestNode* root, T_CTEST_API void T_CTEST_EXPORT2 log_err(const char* pattern, ...); +T_CTEST_API void T_CTEST_EXPORT2 +log_err_status(UErrorCode status, const char* pattern, ...); /** * Log an informational message. (printf style) * @param pattern printf-style format string @@ -172,6 +224,24 @@ log_verbose(const char* pattern, ...); T_CTEST_API void T_CTEST_EXPORT2 log_data_err(const char *pattern, ...); +/** + * Log a known issue. + * @param ticket ticket number such as "12345" for ICU tickets or "cldrbug:6636" for CLDR tickets. + * @param fmt ... sprintf-style format, optional message. can be NULL. + * @return TRUE if known issue test should be skipped, FALSE if it should be run + */ +T_CTEST_API UBool +T_CTEST_EXPORT2 +log_knownIssue(const char *ticket, const char *fmt, ...); + +/** + * 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[], ArgHandlerPtr argHandler, void *context); + /** * Processes the command line arguments. * This is a sample implementation @@ -186,7 +256,7 @@ log_data_err(const char *pattern, ...); * @internal Internal APIs for testing purpose only */ T_CTEST_API int T_CTEST_EXPORT2 -processArgs(const TestNode* root, +runTestRequest(const TestNode* root, int argc, const char* const argv[]); @@ -194,6 +264,49 @@ processArgs(const TestNode* root, T_CTEST_API const char* T_CTEST_EXPORT2 getTestName(void); +/** + * Append a time delta to str if it is significant (>5 ms) otherwise no change + * @param delta a delta in millis + * @param str a string to append to. + */ +T_CTEST_API void T_CTEST_EXPORT2 +str_timeDelta(char *str, UDate delta); + + +/* ======== XML (JUnit output) ========= */ +/** + * Set the filename for the XML output. + * @param fileName file name. Caller must retain storage. + * @return 0 on success, 1 on failure. + */ +T_CTEST_API int32_t T_CTEST_EXPORT2 +ctest_xml_setFileName(const char *fileName); + + +/** + * Init XML subsystem. Call ctest_xml_setFileName first + * @param rootName the test root name to be written + * @return 0 on success, 1 on failure. + */ +T_CTEST_API int32_t T_CTEST_EXPORT2 +ctest_xml_init(const char *rootName); + + +/** + * Set the filename for the XML output. Caller must retain storage. + * @return 0 on success, 1 on failure. + */ +T_CTEST_API int32_t T_CTEST_EXPORT2 +ctest_xml_fini(void); + + +/** + * report a test case + * @return 0 on success, 1 on failure. + */ +T_CTEST_API int32_t +T_CTEST_EXPORT2 +ctest_xml_testcase(const char *classname, const char *name, const char *time, const char *failMsg); #endif