Index: icu46/source/test/intltest/intltest.h |
=================================================================== |
--- icu46/source/test/intltest/intltest.h (revision 0) |
+++ icu46/source/test/intltest/intltest.h (revision 0) |
@@ -0,0 +1,296 @@ |
+/******************************************************************** |
+ * COPYRIGHT: |
+ * Copyright (c) 1997-2010, International Business Machines Corporation and |
+ * others. All Rights Reserved. |
+ ********************************************************************/ |
+ |
+ |
+/** |
+ * IntlTest is a base class for tests. */ |
+ |
+#ifndef _INTLTEST |
+#define _INTLTEST |
+ |
+// The following includes utypes.h, uobject.h and unistr.h |
+#include "unicode/fmtable.h" |
+#include "unicode/testlog.h" |
+ |
+U_NAMESPACE_USE |
+ |
+#ifdef OS390 |
+// avoid collision with math.h/log() |
+// this must be after including utypes.h so that OS390 is actually defined |
+#pragma map(IntlTest::log( const UnicodeString &message ),"logos390") |
+#endif |
+ |
+//----------------------------------------------------------------------------- |
+//convenience classes to ease porting code that uses the Java |
+//string-concatenation operator (moved from findword test by rtg) |
+UnicodeString UCharToUnicodeString(UChar c); |
+UnicodeString Int64ToUnicodeString(int64_t num); |
+//UnicodeString operator+(const UnicodeString& left, int64_t num); // Some compilers don't allow this because of the long type. |
+UnicodeString operator+(const UnicodeString& left, long num); |
+UnicodeString operator+(const UnicodeString& left, unsigned long num); |
+UnicodeString operator+(const UnicodeString& left, double num); |
+UnicodeString operator+(const UnicodeString& left, char num); |
+UnicodeString operator+(const UnicodeString& left, short num); |
+UnicodeString operator+(const UnicodeString& left, int num); |
+UnicodeString operator+(const UnicodeString& left, unsigned char num); |
+UnicodeString operator+(const UnicodeString& left, unsigned short num); |
+UnicodeString operator+(const UnicodeString& left, unsigned int num); |
+UnicodeString operator+(const UnicodeString& left, float num); |
+#if !UCONFIG_NO_FORMATTING |
+UnicodeString toString(const Formattable& f); // liu |
+UnicodeString toString(int32_t n); |
+#endif |
+//----------------------------------------------------------------------------- |
+ |
+// Use the TESTCASE macro in subclasses of IntlTest. Define the |
+// runIndexedTest method in this fashion: |
+// |
+//| void MyTest::runIndexedTest(int32_t index, UBool exec, |
+//| const char* &name, char* /*par*/) { |
+//| switch (index) { |
+//| TESTCASE(0,TestSomething); |
+//| TESTCASE(1,TestSomethingElse); |
+//| TESTCASE(2,TestAnotherThing); |
+//| default: name = ""; break; |
+//| } |
+//| } |
+#define TESTCASE(id,test) \ |
+ case id: \ |
+ name = #test; \ |
+ if (exec) { \ |
+ logln(#test "---"); \ |
+ logln(); \ |
+ test(); \ |
+ } \ |
+ break |
+ |
+// More convenient macros. These allow easy reordering of the test cases. |
+// |
+//| void MyTest::runIndexedTest(int32_t index, UBool exec, |
+//| const char* &name, char* /*par*/) { |
+//| TESTCASE_AUTO_BEGIN; |
+//| TESTCASE_AUTO(TestSomething); |
+//| TESTCASE_AUTO(TestSomethingElse); |
+//| TESTCASE_AUTO(TestAnotherThing); |
+//| TESTCASE_AUTO_END; |
+//| } |
+#define TESTCASE_AUTO_BEGIN \ |
+ for(;;) { \ |
+ int32_t testCaseAutoNumber = 0 |
+ |
+#define TESTCASE_AUTO(test) \ |
+ if (index == testCaseAutoNumber++) { \ |
+ name = #test; \ |
+ if (exec) { \ |
+ logln(#test "---"); \ |
+ logln(); \ |
+ test(); \ |
+ } \ |
+ break; \ |
+ } |
+ |
+#define TESTCASE_AUTO_END \ |
+ name = ""; \ |
+ break; \ |
+ } |
+ |
+class IntlTest : public TestLog { |
+public: |
+ |
+ IntlTest(); |
+ // TestLog has a virtual destructor. |
+ |
+ virtual UBool runTest( char* name = NULL, char* par = NULL, char *baseName = NULL); // not to be overidden |
+ |
+ virtual UBool setVerbose( UBool verbose = TRUE ); |
+ virtual UBool setNoErrMsg( UBool no_err_msg = TRUE ); |
+ virtual UBool setQuick( UBool quick = TRUE ); |
+ virtual UBool setLeaks( UBool leaks = TRUE ); |
+ virtual UBool setWarnOnMissingData( UBool warn_on_missing_data = TRUE ); |
+ virtual int32_t setThreadCount( int32_t count = 1); |
+ |
+ virtual int32_t getErrors( void ); |
+ virtual int32_t getDataErrors (void ); |
+ |
+ virtual void setCaller( IntlTest* callingTest ); // for internal use only |
+ virtual void setPath( char* path ); // for internal use only |
+ |
+ virtual void log( const UnicodeString &message ); |
+ |
+ virtual void logln( const UnicodeString &message ); |
+ |
+ virtual void logln( void ); |
+ |
+ virtual void info( const UnicodeString &message ); |
+ |
+ virtual void infoln( const UnicodeString &message ); |
+ |
+ virtual void infoln( void ); |
+ |
+ virtual void err(void); |
+ |
+ virtual void err( const UnicodeString &message ); |
+ |
+ virtual void errln( const UnicodeString &message ); |
+ |
+ virtual void dataerr( const UnicodeString &message ); |
+ |
+ virtual void dataerrln( const UnicodeString &message ); |
+ |
+ void errcheckln(UErrorCode status, const UnicodeString &message ); |
+ |
+ // convenience functions: sprintf() + errln() etc. |
+ void log(const char *fmt, ...); |
+ void logln(const char *fmt, ...); |
+ void info(const char *fmt, ...); |
+ void infoln(const char *fmt, ...); |
+ void err(const char *fmt, ...); |
+ void errln(const char *fmt, ...); |
+ void dataerr(const char *fmt, ...); |
+ void dataerrln(const char *fmt, ...); |
+ void errcheckln(UErrorCode status, const char *fmt, ...); |
+ |
+ // Print ALL named errors encountered so far |
+ void printErrors(); |
+ |
+ virtual void usage( void ) ; |
+ |
+ /** |
+ * Returns a uniform random value x, with 0.0 <= x < 1.0. Use |
+ * with care: Does not return all possible values; returns one of |
+ * 714,025 values, uniformly spaced. However, the period is |
+ * effectively infinite. See: Numerical Recipes, section 7.1. |
+ * |
+ * @param seedp pointer to seed. Set *seedp to any negative value |
+ * to restart the sequence. |
+ */ |
+ static float random(int32_t* seedp); |
+ |
+ /** |
+ * Convenience method using a global seed. |
+ */ |
+ static float random(); |
+ |
+ /** |
+ * Ascertain the version of ICU. Useful for |
+ * time bomb testing |
+ */ |
+ UBool isICUVersionAtLeast(const UVersionInfo x); |
+ |
+ enum { kMaxProps = 16 }; |
+ |
+ virtual void setProperty(const char* propline); |
+ virtual const char* getProperty(const char* prop); |
+ |
+protected: |
+ /* JUnit-like assertions. Each returns TRUE if it succeeds. */ |
+ UBool assertTrue(const char* message, UBool condition, UBool quiet=FALSE, UBool possibleDataError=FALSE); |
+ UBool assertFalse(const char* message, UBool condition, UBool quiet=FALSE); |
+ UBool assertSuccess(const char* message, UErrorCode ec, UBool possibleDataError=FALSE); |
+ UBool assertEquals(const char* message, const UnicodeString& expected, |
+ const UnicodeString& actual, UBool possibleDataError=FALSE); |
+ UBool assertEquals(const char* message, const char* expected, |
+ const char* actual); |
+#if !UCONFIG_NO_FORMATTING |
+ UBool assertEquals(const char* message, const Formattable& expected, |
+ const Formattable& actual); |
+ UBool assertEquals(const UnicodeString& message, const Formattable& expected, |
+ const Formattable& actual); |
+#endif |
+ UBool assertTrue(const UnicodeString& message, UBool condition, UBool quiet=FALSE); |
+ UBool assertFalse(const UnicodeString& message, UBool condition, UBool quiet=FALSE); |
+ UBool assertSuccess(const UnicodeString& message, UErrorCode ec); |
+ UBool assertEquals(const UnicodeString& message, const UnicodeString& expected, |
+ const UnicodeString& actual); |
+ UBool assertEquals(const UnicodeString& message, const char* expected, |
+ const char* actual); |
+ |
+ virtual void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); // overide ! |
+ |
+ virtual UBool runTestLoop( char* testname, char* par, char *baseName ); |
+ |
+ virtual int32_t IncErrorCount( void ); |
+ |
+ virtual int32_t IncDataErrorCount( void ); |
+ |
+ virtual UBool callTest( IntlTest& testToBeCalled, char* par ); |
+ |
+ |
+ UBool verbose; |
+ UBool no_err_msg; |
+ UBool quick; |
+ UBool leaks; |
+ UBool warn_on_missing_data; |
+ int32_t threadCount; |
+ |
+private: |
+ UBool LL_linestart; |
+ int32_t LL_indentlevel; |
+ |
+ int32_t errorCount; |
+ int32_t dataErrorCount; |
+ IntlTest* caller; |
+ char* testPath; // specifies subtests |
+ |
+ char basePath[1024]; |
+ |
+ //FILE *testoutfp; |
+ void *testoutfp; |
+ |
+ const char* proplines[kMaxProps]; |
+ int32_t numProps; |
+ |
+protected: |
+ |
+ virtual void LL_message( UnicodeString message, UBool newline ); |
+ |
+ // used for collation result reporting, defined here for convenience |
+ |
+ static UnicodeString &prettify(const UnicodeString &source, UnicodeString &target); |
+ static UnicodeString prettify(const UnicodeString &source, UBool parseBackslash=FALSE); |
+ static UnicodeString &appendHex(uint32_t number, int32_t digits, UnicodeString &target); |
+ |
+public: |
+ static void setICU_DATA(); // Set up ICU_DATA if necessary. |
+ |
+ static const char* pathToDataDirectory(); |
+ |
+public: |
+ UBool run_phase2( char* name, char* par ); // internally, supports reporting memory leaks |
+ static const char* loadTestData(UErrorCode& err); |
+ virtual const char* getTestDataPath(UErrorCode& err); |
+ static const char* getSourceTestData(UErrorCode& err); |
+ |
+// static members |
+public: |
+ static IntlTest* gTest; |
+ static const char* fgDataDir; |
+ |
+}; |
+ |
+void it_log( UnicodeString message ); |
+void it_logln( UnicodeString message ); |
+void it_logln( void ); |
+void it_info( UnicodeString message ); |
+void it_infoln( UnicodeString message ); |
+void it_infoln( void ); |
+void it_err(void); |
+void it_err( UnicodeString message ); |
+void it_errln( UnicodeString message ); |
+void it_dataerr( UnicodeString message ); |
+void it_dataerrln( UnicodeString message ); |
+ |
+/** |
+ * This is a variant of cintltst/ccolltst.c:CharsToUChars(). |
+ * It converts a character string into a UnicodeString, with |
+ * unescaping \u sequences. |
+ */ |
+extern UnicodeString CharsToUnicodeString(const char* chars); |
+ |
+/* alias for CharsToUnicodeString */ |
+extern UnicodeString ctou(const char* chars); |
+ |
+#endif // _INTLTEST |
Property changes on: icu46/source/test/intltest/intltest.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |