/************************************************************************ * COPYRIGHT: * Copyright (c) 1997-2010, International Business Machines Corporation * and others. All Rights Reserved. ************************************************************************/ #ifndef _NUMBERFORMATTEST_ #define _NUMBERFORMATTEST_ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING #include "unicode/numfmt.h" #include "unicode/decimfmt.h" #include "caltztst.h" /** * Performs various in-depth test on NumberFormat **/ class NumberFormatTest: public CalendarTimeZoneTest { // IntlTest override void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ); public: /** * Test APIs (to increase code coverage) */ void TestAPI(void); void TestCoverage(void); /** * Test the handling of quotes **/ void TestQuotes(void); /** * Test patterns with exponential representation **/ void TestExponential(void); /** * Test handling of patterns with currency symbols **/ void TestCurrencySign(void); /** * Test different format patterns **/ void TestPatterns(void); /** * API coverage for DigitList **/ //void TestDigitList(void); /** * Test localized currency patterns. */ void TestCurrency(void); /** * Test the Currency object handling, new as of ICU 2.2. */ void TestCurrencyObject(void); void TestCurrencyPatterns(void); /** * Do rudimentary testing of parsing. */ void TestParse(void); /** * Test proper rounding by the format method. */ void TestRounding487(void); // New tests for alphaWorks upgrade void TestExponent(void); void TestScientific(void); void TestScientific2(void); void TestScientificGrouping(void); void TestInt64(void); void TestSurrogateSupport(void); /** * Test the functioning of the secondary grouping value. */ void TestSecondaryGrouping(void); void TestWhiteSpaceParsing(void); void TestComplexCurrency(void); void TestPad(void); void TestPatterns2(void); /** * Test currency registration. */ void TestRegCurrency(void); void TestCurrencyNames(void); void TestCurrencyAmount(void); void TestCurrencyUnit(void); void TestSymbolsWithBadLocale(void); void TestAdoptDecimalFormatSymbols(void); void TestPerMill(void); void TestIllegalPatterns(void); void TestCases(void); void TestJB3832(void); void TestHost(void); void TestHostClone(void); void TestCurrencyFormat(void); /* Port of ICU4J rounding test. */ void TestRounding(void); void TestNonpositiveMultiplier(void); void TestNumberingSystems(); void TestSpaceParsing(); void TestMultiCurrencySign(); void TestCurrencyFormatForMixParsing(); void TestDecimalFormatCurrencyParse(); void TestCurrencyIsoPluralFormat(); void TestCurrencyParsing(); void TestParseCurrencyInUCurr(); void TestFormatAttributes(); void TestFieldPositionIterator(); void TestDecimal(); void TestCurrencyFractionDigits(); void TestExponentParse(); private: static UBool equalValue(const Formattable& a, const Formattable& b); void expectPositions(FieldPositionIterator& iter, int32_t *values, int32_t tupleCount, const UnicodeString& str); void expectPosition(FieldPosition& pos, int32_t id, int32_t start, int32_t limit, const UnicodeString& str); void expect2(NumberFormat& fmt, const Formattable& n, const UnicodeString& str); void expect3(NumberFormat& fmt, const Formattable& n, const UnicodeString& str); void expect2(NumberFormat& fmt, const Formattable& n, const char* str) { expect2(fmt, n, UnicodeString(str, "")); } void expect2(NumberFormat* fmt, const Formattable& n, const UnicodeString& str, UErrorCode ec); void expect2(NumberFormat* fmt, const Formattable& n, const char* str, UErrorCode ec) { expect2(fmt, n, UnicodeString(str, ""), ec); } void expect(NumberFormat& fmt, const UnicodeString& str, const Formattable& n); void expect(NumberFormat& fmt, const char *str, const Formattable& n) { expect(fmt, UnicodeString(str, ""), n); } void expect(NumberFormat& fmt, const Formattable& n, const UnicodeString& exp, UBool rt=TRUE); void expect(NumberFormat& fmt, const Formattable& n, const char *exp, UBool rt=TRUE) { expect(fmt, n, UnicodeString(exp, ""), rt); } void expect(NumberFormat* fmt, const Formattable& n, const UnicodeString& exp, UErrorCode); void expect(NumberFormat* fmt, const Formattable& n, const char *exp, UErrorCode errorCode) { expect(fmt, n, UnicodeString(exp, ""), errorCode); } void expectCurrency(NumberFormat& nf, const Locale& locale, double value, const UnicodeString& string); void expectPad(DecimalFormat& fmt, const UnicodeString& pat, int32_t pos, int32_t width, UChar pad); void expectPad(DecimalFormat& fmt, const char *pat, int32_t pos, int32_t width, UChar pad) { expectPad(fmt, UnicodeString(pat, ""), pos, width, pad); } void expectPad(DecimalFormat& fmt, const UnicodeString& pat, int32_t pos, int32_t width, const UnicodeString& pad); void expectPad(DecimalFormat& fmt, const char *pat, int32_t pos, int32_t width, const UnicodeString& pad) { expectPad(fmt, UnicodeString(pat, ""), pos, width, pad); } void expectPat(DecimalFormat& fmt, const UnicodeString& exp); void expectPat(DecimalFormat& fmt, const char *exp) { expectPat(fmt, UnicodeString(exp, "")); } void expectPad(DecimalFormat& fmt, const UnicodeString& pat, int32_t pos); void expectPad(DecimalFormat& fmt, const char *pat, int32_t pos) { expectPad(fmt, pat, pos, 0, (UChar)0); } void expect_rbnf(NumberFormat& fmt, const UnicodeString& str, const Formattable& n); void expect_rbnf(NumberFormat& fmt, const Formattable& n, const UnicodeString& exp, UBool rt=TRUE); // internal utility routine static UnicodeString& escape(UnicodeString& s); enum { ILLEGAL = -1 }; // internal subtest used by TestRounding487 void roundingTest(NumberFormat& nf, double x, int32_t maxFractionDigits, const char* expected); // internal rounding checking for TestRounding void checkRounding(DecimalFormat* df, double base, int iterations, double increment); double checkRound(DecimalFormat* df, double iValue, double lastParsed); }; #endif /* #if !UCONFIG_NO_FORMATTING */ #endif // _NUMBERFORMATTEST_