16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/************************************************************************ 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT: 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1997-2013, International Business Machines Corporation 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ************************************************************************/ 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef _NUMBERFORMATTEST_ 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _NUMBERFORMATTEST_ 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/numfmt.h" 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/decimfmt.h" 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "caltztst.h" 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Performs various in-depth test on NumberFormat 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org **/ 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass NumberFormatTest: public CalendarTimeZoneTest { 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // IntlTest override 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ); 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org public: 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test APIs (to increase code coverage) 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestAPI(void); 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCoverage(void); 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test the handling of quotes 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org **/ 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestQuotes(void); 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test patterns with exponential representation 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org **/ 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestExponential(void); 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test handling of patterns with currency symbols 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org **/ 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencySign(void); 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test different format patterns 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org **/ 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestPatterns(void); 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * API coverage for DigitList 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org **/ 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org //void TestDigitList(void); 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test localized currency patterns. 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrency(void); 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test the Currency object handling, new as of ICU 2.2. 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyObject(void); 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyPatterns(void); 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Do rudimentary testing of parsing. 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestParse(void); 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test proper rounding by the format method. 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestRounding487(void); 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // New tests for alphaWorks upgrade 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestExponent(void); 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestScientific(void); 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestScientific2(void); 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestScientificGrouping(void); 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestInt64(void); 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestSurrogateSupport(void); 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test the functioning of the secondary grouping value. 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestSecondaryGrouping(void); 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestWhiteSpaceParsing(void); 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestComplexCurrency(void); 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestPad(void); 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestPatterns2(void); 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test currency registration. 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestRegCurrency(void); 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyNames(void); 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyAmount(void); 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyUnit(void); 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestSymbolsWithBadLocale(void); 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestAdoptDecimalFormatSymbols(void); 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestPerMill(void); 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestIllegalPatterns(void); 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCases(void); 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestJB3832(void); 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestHost(void); 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestHostClone(void); 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyFormat(void); 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* Port of ICU4J rounding test. */ 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestRounding(void); 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestRoundingPattern(void); 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestNonpositiveMultiplier(void); 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestNumberingSystems(); 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestSpaceParsing(); 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestMultiCurrencySign(); 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyFormatForMixParsing(); 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestDecimalFormatCurrencyParse(); 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyIsoPluralFormat(); 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyParsing(); 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestParseCurrencyInUCurr(); 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestFormatAttributes(); 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestFieldPositionIterator(); 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestLenientParse(); 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestDecimal(); 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCurrencyFractionDigits(); 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestExponentParse(); 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestExplicitParents(); 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestAvailableNumberingSystems(); 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void Test9087(); 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestFormatFastpaths(); 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestFormattableSize(); 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestUFormattable(); 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestEnumSet(); 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestSignificantDigits(); 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestShowZero(); 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCompatibleCurrencies(); 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestBug9936(); 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestParseNegativeWithFaLocale(); 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestParseNegativeWithAlternateMinusSign(); 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCustomCurrencySignAndSeparator(); 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestParseSignsAndMarks(); 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org private: 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool testFormattableAsUFormattable(const char *file, int line, Formattable &f); 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectParseCurrency(const NumberFormat &fmt, const UChar* currency, double amount, const char *text); 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UBool equalValue(const Formattable& a, const Formattable& b); 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPositions(FieldPositionIterator& iter, int32_t *values, int32_t tupleCount, 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString& str); 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPosition(FieldPosition& pos, int32_t id, int32_t start, int32_t limit, 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString& str); 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect2(NumberFormat& fmt, const Formattable& n, const UnicodeString& str); 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect3(NumberFormat& fmt, const Formattable& n, const UnicodeString& str); 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect2(NumberFormat& fmt, const Formattable& n, const char* str) { 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expect2(fmt, n, UnicodeString(str, "")); 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect2(NumberFormat* fmt, const Formattable& n, const UnicodeString& str, UErrorCode ec); 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect2(NumberFormat* fmt, const Formattable& n, const char* str, UErrorCode ec) { 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expect2(fmt, n, UnicodeString(str, ""), ec); 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect(NumberFormat& fmt, const UnicodeString& str, const Formattable& n); 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect(NumberFormat& fmt, const char *str, const Formattable& n) { 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expect(fmt, UnicodeString(str, ""), n); 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect(NumberFormat& fmt, const Formattable& n, 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString& exp, UBool rt=TRUE); 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect(NumberFormat& fmt, const Formattable& n, 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *exp, UBool rt=TRUE) { 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expect(fmt, n, UnicodeString(exp, ""), rt); 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect(NumberFormat* fmt, const Formattable& n, 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString& exp, UErrorCode); 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect(NumberFormat* fmt, const Formattable& n, 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *exp, UErrorCode errorCode) { 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expect(fmt, n, UnicodeString(exp, ""), errorCode); 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectCurrency(NumberFormat& nf, const Locale& locale, 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org double value, const UnicodeString& string); 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPad(DecimalFormat& fmt, const UnicodeString& pat, 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t pos, int32_t width, UChar pad); 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPad(DecimalFormat& fmt, const char *pat, 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t pos, int32_t width, UChar pad) { 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expectPad(fmt, UnicodeString(pat, ""), pos, width, pad); 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPad(DecimalFormat& fmt, const UnicodeString& pat, 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t pos, int32_t width, const UnicodeString& pad); 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPad(DecimalFormat& fmt, const char *pat, 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t pos, int32_t width, const UnicodeString& pad) { 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expectPad(fmt, UnicodeString(pat, ""), pos, width, pad); 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPat(DecimalFormat& fmt, const UnicodeString& exp); 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPat(DecimalFormat& fmt, const char *exp) { 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expectPat(fmt, UnicodeString(exp, "")); 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPad(DecimalFormat& fmt, const UnicodeString& pat, 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t pos); 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expectPad(DecimalFormat& fmt, const char *pat, 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t pos) { 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expectPad(fmt, pat, pos, 0, (UChar)0); 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect_rbnf(NumberFormat& fmt, const UnicodeString& str, const Formattable& n); 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void expect_rbnf(NumberFormat& fmt, const Formattable& n, 2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString& exp, UBool rt=TRUE); 2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // internal utility routine 2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UnicodeString& escape(UnicodeString& s); 2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org enum { ILLEGAL = -1 }; 2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // internal subtest used by TestRounding487 2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void roundingTest(NumberFormat& nf, double x, int32_t maxFractionDigits, const char* expected); 2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // internal rounding checking for TestRounding 2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void checkRounding(DecimalFormat* df, double base, int iterations, double increment); 2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org double checkRound(DecimalFormat* df, double iValue, double lastParsed); 2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */ 2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif // _NUMBERFORMATTEST_ 283