| Index: source/test/intltest/datadrivennumberformattestsuite.h
|
| diff --git a/source/test/intltest/datadrivennumberformattestsuite.h b/source/test/intltest/datadrivennumberformattestsuite.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9af62376fd6d219ba3a5f893b6323a39a21e6c38
|
| --- /dev/null
|
| +++ b/source/test/intltest/datadrivennumberformattestsuite.h
|
| @@ -0,0 +1,141 @@
|
| +/************************************************************************
|
| + * COPYRIGHT:
|
| + * Copyright (c) 2015, International Business Machines Corporation
|
| + * and others. All Rights Reserved.
|
| + ************************************************************************/
|
| +
|
| +#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;
|
| +
|
| +/**
|
| + * Performs various in-depth test on NumberFormat
|
| + **/
|
| +class DataDrivenNumberFormatTestSuite : public IntlTest {
|
| +
|
| + public:
|
| + DataDrivenNumberFormatTestSuite() {
|
| + for (int32_t i = 0; i < UPRV_LENGTHOF(fPreviousFormatters); ++i) {
|
| + fPreviousFormatters[i] = NULL;
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * Runs the data driven test suite.
|
| + *
|
| + * @param fileName is the name of the file in the source/test/testdata.
|
| + * This should be just a filename such as "numberformattest.txt"
|
| + * @param runAllTests If TRUE, runs every test in fileName. if FALSE,
|
| + * skips the tests that are known to break for ICU4C.
|
| + */
|
| + void run(const char *fileName, UBool runAllTests);
|
| + virtual ~DataDrivenNumberFormatTestSuite();
|
| + protected:
|
| + /**
|
| + * Subclasses override this method to test formatting numbers.
|
| + * Subclasses must not override both isFormatPass methods.
|
| + * @param tuple the test data for current test. The format method can
|
| + * assume that the format and output fields are populated.
|
| + * @param appendErrorMessage any message describing failures appended
|
| + * here.
|
| + * @param status any error returned here.
|
| + * @return TRUE if test passed or FALSE if test failed.
|
| + */
|
| + virtual UBool isFormatPass(
|
| + const NumberFormatTestTuple &tuple,
|
| + UnicodeString &appendErrorMessage,
|
| + UErrorCode &status);
|
| +
|
| +
|
| + /**
|
| + * Subclasses override this method to test formatting numbers.
|
| + * Along with copy and assignment operators.
|
| + * @param tuple the test data for current test. The format method can
|
| + * assume that the format and output fields are populated.
|
| + * @param somePreviousFormatter A pointer to a previous formatter
|
| + * that the test framework owns. This formatter changes as tests
|
| + * are run. Subclasses should initialize a formatter and assign
|
| + * the newly initialized formatter to this formatter. In this way,
|
| + * assignment gets tested with multiple previous states.
|
| + * @param appendErrorMessage any message describing failures appended
|
| + * here.
|
| + * @param status any error returned here.
|
| + * @return TRUE if test passed or FALSE if test failed.
|
| + */
|
| + virtual UBool isFormatPass(
|
| + const NumberFormatTestTuple &tuple,
|
| + UObject *somePreviousFormatter,
|
| + UnicodeString &appendErrorMessage,
|
| + UErrorCode &status);
|
| + /**
|
| + * If subclass is testing formatting with copy and assignmet, it
|
| + * needs to override this method to return a newly allocated formatter.
|
| + */
|
| + virtual UObject *newFormatter(UErrorCode &status);
|
| +
|
| + /**
|
| + * Tests toPattern method.
|
| + */
|
| + virtual UBool isToPatternPass(
|
| + const NumberFormatTestTuple &tuple,
|
| + UnicodeString &appendErrorMessage,
|
| + UErrorCode &status);
|
| + /**
|
| + * Test parsing.
|
| + */
|
| + virtual UBool isParsePass(
|
| + const NumberFormatTestTuple &tuple,
|
| + UnicodeString &appendErrorMessage,
|
| + UErrorCode &status);
|
| +
|
| + /**
|
| + * Test parsing with currency.
|
| + */
|
| + virtual UBool isParseCurrencyPass(
|
| + const NumberFormatTestTuple &tuple,
|
| + UnicodeString &appendErrorMessage,
|
| + UErrorCode &status);
|
| +
|
| + /**
|
| + * Test plural selection.
|
| + */
|
| + 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 /* !UCONFIG_NO_FORMATTING */
|
| +#endif // _DATADRIVENNUMBERFORMATTESTSUITE_
|
|
|