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