scuffed-code/icu4c/source/test/intltest/intltest.h
Helena Chapman 3aaa52af8d ICU-161 updated the copyright notices.
X-SVN-Rev: 596
2000-01-15 02:00:06 +00:00

177 lines
6.2 KiB
C++

/********************************************************************
* COPYRIGHT:
* Copyright (c) 1997-1999, International Business Machines Corporation and
* others. All Rights Reserved.
********************************************************************/
/*
* IntlTest in java is Copyright (c) 1997 Sun Microsystems, Inc. All
* Rights Reserved. */
/**
* IntlTest is a base class for tests. It is modelled according to,
* but not exactly similar to, JavaSoft's test class with the same
* name. */
#ifndef _INTLTEST
#define _INTLTEST
#include "unicode/utypes.h"
#include "unicode/unistr.h"
#include "unicode/coll.h"
#include "unicode/sortkey.h"
#include "unicode/fmtable.h" // liu
#include <iostream.h>
#define it_out (*IntlTest::gTest)
//-----------------------------------------------------------------------------
//convenience classes to ease porting code that uses the Java
//string-concatenation operator (moved from findword test by rtg)
UnicodeString UCharToUnicodeString(UChar c);
UnicodeString operator+(const UnicodeString& left, const UnicodeString& right);
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);
UnicodeString toString(const Formattable& f); // liu
//-----------------------------------------------------------------------------
class IntlTest {
public:
IntlTest();
virtual bool_t runTest( char* name = NULL, char* par = NULL ); // not to be overidden
virtual bool_t setVerbose( bool_t verbose = TRUE );
virtual bool_t setNoErrMsg( bool_t no_err_msg = TRUE );
virtual bool_t setQuick( bool_t quick = TRUE );
virtual bool_t setLeaks( bool_t leaks = TRUE );
virtual int32_t getErrors( 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 );
// convenience function; assume that the message contains only invariant charcters
virtual void log( const char *message );
virtual void logln( const UnicodeString &message );
// convenience function; assume that the message contains only invariant charcters
virtual void logln( const char *message );
virtual void logln( void );
virtual void err(void);
virtual void err( const UnicodeString &message );
// convenience function; assume that the message contains only invariant charcters
virtual void err( const char *message );
virtual void errln( const UnicodeString &message );
// convenience function; assume that the message contains only invariant charcters
virtual void errln( const char *message );
virtual void usage( void ) ;
ostream* testout;
protected:
virtual void runIndexedTest( int32_t index, bool_t exec, char* &name, char* par = NULL ); // overide !
virtual bool_t runTestLoop( char* testname, char* par );
virtual int32_t IncErrorCount( void );
virtual bool_t callTest( IntlTest& testToBeCalled, char* par );
bool_t LL_linestart;
int32_t LL_indentlevel;
bool_t verbose;
bool_t no_err_msg;
bool_t quick;
bool_t leaks;
int32_t errorCount;
IntlTest* caller;
char* path; // specifies subtests
virtual void LL_message( UnicodeString message, bool_t newline );
// used for collation result reporting, defined here for convenience
virtual void reportCResult( UnicodeString &source, UnicodeString &target,
CollationKey &sourceKey, CollationKey &targetKey,
Collator::EComparisonResult compareResult,
Collator::EComparisonResult keyResult,
Collator::EComparisonResult expectedResult );
static UnicodeString &prettify(const UnicodeString &source, UnicodeString &target);
static UnicodeString prettify(const UnicodeString &source);
static UnicodeString &prettify(const CollationKey &source, UnicodeString &target);
static UnicodeString &appendHex(uint32_t number, int8_t digits, UnicodeString &target);
static UnicodeString &appendCompareResult(Collator::EComparisonResult result, UnicodeString &target);
/* complete a relative path to a full pathname, and convert to platform-specific syntax. */
/* The character seperating directories for the relative path is '|'. */
static void pathnameInContext( char* fullname, int32_t maxsize, const char* relpath );
/*The function to set the Test Directory*/
static void setTestDirectory(const char* newDir);
/*The function to get the Test Directory*/
static const char* getTestDirectory(void);
public:
bool_t run_phase2( char* name, char* par ); // internally, supports reporting memory leaks
// static members
public:
static IntlTest* gTest;
};
inline void IntlTest::log( const char *message ) {
log(UnicodeString(message, ""));
}
inline void IntlTest::logln( const char *message ) {
logln(UnicodeString(message, ""));
}
inline void IntlTest::err( const char *message ) {
err(UnicodeString(message, ""));
}
inline void IntlTest::errln( const char *message ) {
errln(UnicodeString(message, ""));
}
void it_log( UnicodeString message );
void it_logln( UnicodeString message );
void it_logln( void );
void it_err(void);
void it_err( UnicodeString message );
void it_errln( UnicodeString message );
IntlTest& operator<<(IntlTest& test, const UnicodeString& string);
IntlTest& operator<<(IntlTest& test, const char* string);
IntlTest& operator<<(IntlTest& test, const int32_t num);
IntlTest& endl( IntlTest& test );
IntlTest& operator<<(IntlTest& test, IntlTest& ( * _f)(IntlTest&));
#endif // _INTLTEST