numfmtst.h revision 95bba3074fbe8ba9d29e736334ae3bad704102aa
150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/************************************************************************ 2b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * COPYRIGHT: 395bba3074fbe8ba9d29e736334ae3bad704102aaTravis Keep * Copyright (c) 1997-2015, International Business Machines Corporation 450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * and others. All Rights Reserved. 550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ************************************************************************/ 6b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef _NUMBERFORMATTEST_ 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define _NUMBERFORMATTEST_ 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/numfmt.h" 15b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "unicode/decimfmt.h" 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "caltztst.h" 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Performs various in-depth test on NumberFormat 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass NumberFormatTest: public CalendarTimeZoneTest { 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // IntlTest override 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ); 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru public: 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test APIs (to increase code coverage) 29b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestAPI(void); 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCoverage(void); 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the handling of quotes 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestQuotes(void); 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test patterns with exponential representation 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestExponential(void); 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test handling of patterns with currency symbols 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCurrencySign(void); 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test different format patterns 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestPatterns(void); 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * API coverage for DigitList 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //void TestDigitList(void); 54b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test localized currency patterns. 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCurrency(void); 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the Currency object handling, new as of ICU 2.2. 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCurrencyObject(void); 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCurrencyPatterns(void); 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Do rudimentary testing of parsing. 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestParse(void); 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test proper rounding by the format method. 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestRounding487(void); 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // New tests for alphaWorks upgrade 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestExponent(void); 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestScientific(void); 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestScientific2(void); 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestScientificGrouping(void); 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestInt64(void); 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestSurrogateSupport(void); 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the functioning of the secondary grouping value. 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestSecondaryGrouping(void); 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestWhiteSpaceParsing(void); 95b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestComplexCurrency(void); 97b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestPad(void); 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestPatterns2(void); 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test currency registration. 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestRegCurrency(void); 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCurrencyNames(void); 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCurrencyAmount(void); 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCurrencyUnit(void); 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestSymbolsWithBadLocale(void); 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestAdoptDecimalFormatSymbols(void); 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestPerMill(void); 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestIllegalPatterns(void); 119b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCases(void); 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestJB3832(void); 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestHost(void); 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestHostClone(void); 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCurrencyFormat(void); 129b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Port of ICU4J rounding test. */ 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestRounding(void); 132c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 133103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void TestRoundingPattern(void); 134103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 135c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru void TestNonpositiveMultiplier(void); 136b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 137b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TestNumberingSystems(); 138b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 139b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 140b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TestSpaceParsing(); 141b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TestMultiCurrencySign(); 142b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TestCurrencyFormatForMixParsing(); 143b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TestDecimalFormatCurrencyParse(); 144b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TestCurrencyIsoPluralFormat(); 145b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TestCurrencyParsing(); 146b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TestParseCurrencyInUCurr(); 14750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestFormatAttributes(); 14850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestFieldPositionIterator(); 14950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 150b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho void TestLenientParse(); 151b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 15250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestDecimal(); 15327f654740f2a26ad62a5c155af9199af9e69b889claireho void TestCurrencyFractionDigits(); 15427f654740f2a26ad62a5c155af9199af9e69b889claireho 15527f654740f2a26ad62a5c155af9199af9e69b889claireho void TestExponentParse(); 156b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho void TestExplicitParents(); 157103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void TestAvailableNumberingSystems(); 158103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void Test9087(); 159103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void TestFormatFastpaths(); 160103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 16154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius void TestFormattableSize(); 16254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 16359d709d503bab6e2b61931737e662dd293b40578ccornelius void TestUFormattable(); 16459d709d503bab6e2b61931737e662dd293b40578ccornelius 16554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius void TestEnumSet(); 166b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 16759d709d503bab6e2b61931737e662dd293b40578ccornelius void TestSignificantDigits(); 16859d709d503bab6e2b61931737e662dd293b40578ccornelius void TestShowZero(); 16959d709d503bab6e2b61931737e662dd293b40578ccornelius 17059d709d503bab6e2b61931737e662dd293b40578ccornelius void TestCompatibleCurrencies(); 17159d709d503bab6e2b61931737e662dd293b40578ccornelius void TestBug9936(); 17259d709d503bab6e2b61931737e662dd293b40578ccornelius void TestParseNegativeWithFaLocale(); 17359d709d503bab6e2b61931737e662dd293b40578ccornelius void TestParseNegativeWithAlternateMinusSign(); 17459d709d503bab6e2b61931737e662dd293b40578ccornelius 17559d709d503bab6e2b61931737e662dd293b40578ccornelius void TestCustomCurrencySignAndSeparator(); 17659d709d503bab6e2b61931737e662dd293b40578ccornelius 17759d709d503bab6e2b61931737e662dd293b40578ccornelius void TestParseSignsAndMarks(); 178fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void Test10419RoundingWith0FractionDigits(); 179fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void Test10468ApplyPattern(); 180fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void TestRoundingScientific10542(); 181fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void TestZeroScientific10547(); 182fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void TestAccountingCurrency(); 183fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void TestEquality(); 18459d709d503bab6e2b61931737e662dd293b40578ccornelius 185f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius void TestCurrencyUsage(); 18695bba3074fbe8ba9d29e736334ae3bad704102aaTravis Keep void TestFastPathConsistent11524(); 187f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru private: 18959d709d503bab6e2b61931737e662dd293b40578ccornelius UBool testFormattableAsUFormattable(const char *file, int line, Formattable &f); 19059d709d503bab6e2b61931737e662dd293b40578ccornelius 19159d709d503bab6e2b61931737e662dd293b40578ccornelius void expectParseCurrency(const NumberFormat &fmt, const UChar* currency, double amount, const char *text); 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static UBool equalValue(const Formattable& a, const Formattable& b); 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 19550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void expectPositions(FieldPositionIterator& iter, int32_t *values, int32_t tupleCount, 19650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UnicodeString& str); 19750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 19850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void expectPosition(FieldPosition& pos, int32_t id, int32_t start, int32_t limit, 19950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UnicodeString& str); 20050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect2(NumberFormat& fmt, const Formattable& n, const UnicodeString& str); 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 203b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void expect3(NumberFormat& fmt, const Formattable& n, const UnicodeString& str); 204b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect2(NumberFormat& fmt, const Formattable& n, const char* str) { 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect2(fmt, n, UnicodeString(str, "")); 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect2(NumberFormat* fmt, const Formattable& n, const UnicodeString& str, UErrorCode ec); 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect2(NumberFormat* fmt, const Formattable& n, const char* str, UErrorCode ec) { 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect2(fmt, n, UnicodeString(str, ""), ec); 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect(NumberFormat& fmt, const UnicodeString& str, const Formattable& n); 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect(NumberFormat& fmt, const char *str, const Formattable& n) { 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(fmt, UnicodeString(str, ""), n); 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect(NumberFormat& fmt, const Formattable& n, 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString& exp, UBool rt=TRUE); 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect(NumberFormat& fmt, const Formattable& n, 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *exp, UBool rt=TRUE) { 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(fmt, n, UnicodeString(exp, ""), rt); 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect(NumberFormat* fmt, const Formattable& n, 230fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const UnicodeString& exp, UBool rt, UErrorCode errorCode); 231fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 232fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void expect(NumberFormat* fmt, const Formattable& n, 233fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const char *exp, UBool rt, UErrorCode errorCode) { 234fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius expect(fmt, n, UnicodeString(exp, ""), rt, errorCode); 235fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius } 236fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 237fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void expect(NumberFormat* fmt, const Formattable& n, 238fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const UnicodeString& exp, UErrorCode errorCode) { 239fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius expect(fmt, n, exp, TRUE, errorCode); 240fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius } 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expect(NumberFormat* fmt, const Formattable& n, 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *exp, UErrorCode errorCode) { 244fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius expect(fmt, n, UnicodeString(exp, ""), TRUE, errorCode); 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expectCurrency(NumberFormat& nf, const Locale& locale, 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru double value, const UnicodeString& string); 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expectPad(DecimalFormat& fmt, const UnicodeString& pat, 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t pos, int32_t width, UChar pad); 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expectPad(DecimalFormat& fmt, const char *pat, 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t pos, int32_t width, UChar pad) { 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectPad(fmt, UnicodeString(pat, ""), pos, width, pad); 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expectPad(DecimalFormat& fmt, const UnicodeString& pat, 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t pos, int32_t width, const UnicodeString& pad); 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expectPad(DecimalFormat& fmt, const char *pat, 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t pos, int32_t width, const UnicodeString& pad) { 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectPad(fmt, UnicodeString(pat, ""), pos, width, pad); 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expectPat(DecimalFormat& fmt, const UnicodeString& exp); 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expectPat(DecimalFormat& fmt, const char *exp) { 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectPat(fmt, UnicodeString(exp, "")); 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expectPad(DecimalFormat& fmt, const UnicodeString& pat, 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t pos); 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void expectPad(DecimalFormat& fmt, const char *pat, 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t pos) { 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectPad(fmt, pat, pos, 0, (UChar)0); 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 280b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void expect_rbnf(NumberFormat& fmt, const UnicodeString& str, const Formattable& n); 281b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 282b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void expect_rbnf(NumberFormat& fmt, const Formattable& n, 283b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru const UnicodeString& exp, UBool rt=TRUE); 284b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // internal utility routine 286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static UnicodeString& escape(UnicodeString& s); 287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru enum { ILLEGAL = -1 }; 289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // internal subtest used by TestRounding487 291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void roundingTest(NumberFormat& nf, double x, int32_t maxFractionDigits, const char* expected); 292b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // internal rounding checking for TestRounding 294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void checkRounding(DecimalFormat* df, double base, int iterations, double increment); 295b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru double checkRound(DecimalFormat* df, double iValue, double lastParsed); 297fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 298fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void verifyRounding( 299fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius DecimalFormat& format, 300fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const double *values, 301fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const char * const *expected, 302fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const DecimalFormat::ERoundingMode *roundingModes, 303fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius const char * const *descriptions, 304fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t valueSize, 305fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius int32_t roundingModeSize); 306fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 310b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif // _NUMBERFORMATTEST_ 312