datadrivennumberformattestsuite.h [plain text]
#ifndef _DATADRIVENNUMBERFORMATTESTSUITE_H__
#define _DATADRIVENNUMBERFORMATTESTSUITE_H__
#include "unicode/utypes.h"
#if !UCONFIG_NO_FORMATTING
#include "unicode/uobject.h"
#include "unicode/unistr.h"
#include "numberformattesttuple.h"
#include "intltest.h"
struct UCHARBUF;
class IntlTest;
class DataDrivenNumberFormatTestSuite : public IntlTest {
public:
DataDrivenNumberFormatTestSuite() {
for (int32_t i = 0; i < UPRV_LENGTHOF(fPreviousFormatters); ++i) {
fPreviousFormatters[i] = NULL;
}
}
void run(const char *fileName, UBool runAllTests);
virtual ~DataDrivenNumberFormatTestSuite();
protected:
virtual UBool isFormatPass(
const NumberFormatTestTuple &tuple,
UnicodeString &appendErrorMessage,
UErrorCode &status);
virtual UBool isFormatPass(
const NumberFormatTestTuple &tuple,
UObject *somePreviousFormatter,
UnicodeString &appendErrorMessage,
UErrorCode &status);
virtual UObject *newFormatter(UErrorCode &status);
virtual UBool isToPatternPass(
const NumberFormatTestTuple &tuple,
UnicodeString &appendErrorMessage,
UErrorCode &status);
virtual UBool isParsePass(
const NumberFormatTestTuple &tuple,
UnicodeString &appendErrorMessage,
UErrorCode &status);
virtual UBool isParseCurrencyPass(
const NumberFormatTestTuple &tuple,
UnicodeString &appendErrorMessage,
UErrorCode &status);
virtual UBool isSelectPass(
const NumberFormatTestTuple &tuple,
UnicodeString &appendErrorMessage,
UErrorCode &status);
private:
UnicodeString fFileLine;
int32_t fFileLineNumber;
UnicodeString fFileTestName;
NumberFormatTestTuple fTuple;
int32_t fFormatTestNumber;
UObject *fPreviousFormatters[13];
void setTupleField(UErrorCode &);
int32_t splitBy(
UnicodeString *columnValues,
int32_t columnValueCount,
UChar delimiter);
void showError(const char *message);
void showFailure(const UnicodeString &message);
void showLineInfo();
UBool breaksC();
UBool readLine(UCHARBUF *f, UErrorCode &);
UBool isPass(
const NumberFormatTestTuple &tuple,
UnicodeString &appendErrorMessage,
UErrorCode &status);
};
#endif
#endif // _DATADRIVENNUMBERFORMATTESTSUITE_