1 // Copyright (C) 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html 3 /******************************************************************** 4 * COPYRIGHT: 5 * Copyright (c) 2004-2010, International Business Machines Corporation and 6 * others. All Rights Reserved. 7 ********************************************************************/ 8 9 /* Created by grhoten 03/17/2004 */ 10 11 /* Base class for data driven tests */ 12 13 #ifndef U_TESTFW_TESTLOG 14 #define U_TESTFW_TESTLOG 15 16 #include "unicode/errorcode.h" 17 #include "unicode/unistr.h" 18 #include "unicode/testtype.h" 19 20 /** Facilitates internal logging of data driven test service 21 * It would be interesting to develop this into a full 22 * fledged control system as in Java. 23 */ 24 class T_CTEST_EXPORT_API TestLog { 25 public: 26 virtual ~TestLog(); 27 virtual void errln( const UnicodeString &message ) = 0; 28 virtual void logln( const UnicodeString &message ) = 0; 29 virtual void dataerrln( const UnicodeString &message ) = 0; 30 virtual const char* getTestDataPath(UErrorCode& err) = 0; 31 }; 32 33 class T_CTEST_EXPORT_API IcuTestErrorCode : public ErrorCode { 34 public: IcuTestErrorCode(TestLog & callingTestClass,const char * callingTestName)35 IcuTestErrorCode(TestLog &callingTestClass, const char *callingTestName) : 36 testClass(callingTestClass), testName(callingTestName) {} 37 virtual ~IcuTestErrorCode(); 38 // Returns TRUE if isFailure(). 39 UBool logIfFailureAndReset(const char *fmt, ...); 40 UBool logDataIfFailureAndReset(const char *fmt, ...); 41 protected: 42 virtual void handleFailure() const; 43 private: 44 TestLog &testClass; 45 const char *const testName; 46 }; 47 48 #endif 49