10596faeddefbf198de137d5e893708495ab1584cFredrik Roubert// © 2016 and later: Unicode, Inc. and others.
264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html
3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/********************************************************************
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * COPYRIGHT:
550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Copyright (c) 2004-2010, International Business Machines Corporation and
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * others. All Rights Reserved.
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* Created by grhoten 03/17/2004 */
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* Base class for data driven tests */
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef U_TESTFW_TESTLOG
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define U_TESTFW_TESTLOG
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/errorcode.h"
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/unistr.h"
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/testtype.h"
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** Facilitates internal logging of data driven test service
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  It would be interesting to develop this into a full
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  fledged control system as in Java.
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass T_CTEST_EXPORT_API TestLog {
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual ~TestLog();
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void errln( const UnicodeString &message ) = 0;
2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual void logln( const UnicodeString &message ) = 0;
29c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    virtual void dataerrln( const UnicodeString &message ) = 0;
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual const char* getTestDataPath(UErrorCode& err) = 0;
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
3350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoclass T_CTEST_EXPORT_API IcuTestErrorCode : public ErrorCode {
3450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehopublic:
3550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    IcuTestErrorCode(TestLog &callingTestClass, const char *callingTestName) :
3650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        testClass(callingTestClass), testName(callingTestName) {}
3750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual ~IcuTestErrorCode();
3850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    // Returns TRUE if isFailure().
3950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    UBool logIfFailureAndReset(const char *fmt, ...);
4050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    UBool logDataIfFailureAndReset(const char *fmt, ...);
4150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoprotected:
4250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual void handleFailure() const;
4350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoprivate:
4450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    TestLog &testClass;
4550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    const char *const testName;
4650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho};
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
49