1 // © 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), scopeMessage() {} 37 virtual ~IcuTestErrorCode(); 38 39 // Returns true if isFailure(). 40 UBool errIfFailureAndReset(); 41 UBool errIfFailureAndReset(const char *fmt, ...); 42 UBool errDataIfFailureAndReset(); 43 UBool errDataIfFailureAndReset(const char *fmt, ...); 44 UBool expectErrorAndReset(UErrorCode expectedError); 45 UBool expectErrorAndReset(UErrorCode expectedError, const char *fmt, ...); 46 47 /** Sets an additional message string to be appended to failure output. */ 48 void setScope(const char* message); 49 void setScope(const UnicodeString& message); 50 51 protected: 52 virtual void handleFailure() const override; 53 54 private: 55 TestLog &testClass; 56 const char *const testName; 57 UnicodeString scopeMessage; 58 59 void errlog(UBool dataErr, const UnicodeString& mainMessage, const char* extraMessage) const; 60 }; 61 62 #endif 63