]>
git.saurik.com Git - apple/icu.git/blob - icuSources/test/intltest/numfmtst.h
1 /************************************************************************
3 * Copyright (c) 1997-2015, International Business Machines Corporation
4 * and others. All Rights Reserved.
5 ************************************************************************/
7 #ifndef _NUMBERFORMATTEST_
8 #define _NUMBERFORMATTEST_
10 #include "unicode/utypes.h"
12 #if !UCONFIG_NO_FORMATTING
14 #include "unicode/numfmt.h"
15 #include "unicode/decimfmt.h"
19 * Performs various in-depth test on NumberFormat
21 class NumberFormatTest
: public CalendarTimeZoneTest
{
24 void runIndexedTest( int32_t index
, UBool exec
, const char* &name
, char* par
);
28 * Test APIs (to increase code coverage)
32 void TestCoverage(void);
35 * Test the handling of quotes
37 void TestQuotes(void);
39 * Test patterns with exponential representation
41 void TestExponential(void);
43 * Test handling of patterns with currency symbols
45 void TestCurrencySign(void);
47 * Test different format patterns
49 void TestPatterns(void);
51 * API coverage for DigitList
53 //void TestDigitList(void);
56 * Test localized currency patterns.
58 void TestCurrency(void);
61 * Test the Currency object handling, new as of ICU 2.2.
63 void TestCurrencyObject(void);
65 void TestCurrencyPatterns(void);
68 * Do rudimentary testing of parsing.
72 * Test proper rounding by the format method.
74 void TestRounding487(void);
76 // New tests for alphaWorks upgrade
77 void TestExponent(void);
79 void TestScientific(void);
81 void TestScientific2(void);
83 void TestScientificGrouping(void);
87 void TestSurrogateSupport(void);
90 * Test the functioning of the secondary grouping value.
92 void TestSecondaryGrouping(void);
94 void TestWhiteSpaceParsing(void);
96 void TestComplexCurrency(void);
99 void TestPatterns2(void);
102 * Test currency registration.
104 void TestRegCurrency(void);
106 void TestCurrencyNames(void);
108 void TestCurrencyAmount(void);
110 void TestCurrencyUnit(void);
112 void TestSymbolsWithBadLocale(void);
114 void TestAdoptDecimalFormatSymbols(void);
116 void TestPerMill(void);
118 void TestIllegalPatterns(void);
120 void TestCases(void);
122 void TestJB3832(void);
126 void TestHostClone(void);
128 void TestCurrencyFormat(void);
130 /* Port of ICU4J rounding test. */
131 void TestRounding(void);
133 void TestRoundingPattern(void);
135 void TestNonpositiveMultiplier(void);
137 void TestNumberingSystems();
140 void TestSpaceParsing();
141 void TestMultiCurrencySign();
142 void TestCurrencyFormatForMixParsing();
143 void TestDecimalFormatCurrencyParse();
144 void TestCurrencyIsoPluralFormat();
145 void TestCurrencyParsing();
146 void TestParseCurrencyInUCurr();
147 void TestFormatAttributes();
148 void TestFieldPositionIterator();
150 void TestLenientParse();
153 void TestCurrencyFractionDigits();
155 void TestExponentParse();
156 void TestExplicitParents();
157 void TestAvailableNumberingSystems();
159 void TestFormatFastpaths();
161 void TestFormattableSize();
163 void TestUFormattable();
167 void TestSignificantDigits();
170 void TestCompatibleCurrencies();
172 void TestParseNegativeWithFaLocale();
173 void TestParseNegativeWithAlternateMinusSign();
175 void TestCustomCurrencySignAndSeparator();
177 void TestParseSignsAndMarks();
178 void Test10419RoundingWith0FractionDigits();
179 void Test10468ApplyPattern();
180 void TestRoundingScientific10542();
181 void TestZeroScientific10547();
182 void TestAccountingCurrency();
185 void TestCurrencyUsage();
186 void TestDoubleLimit11439();
187 void TestFastPathConsistent11524();
190 UBool
testFormattableAsUFormattable(const char *file
, int line
, Formattable
&f
);
192 void expectParseCurrency(const NumberFormat
&fmt
, const UChar
* currency
, double amount
, const char *text
);
194 static UBool
equalValue(const Formattable
& a
, const Formattable
& b
);
196 void expectPositions(FieldPositionIterator
& iter
, int32_t *values
, int32_t tupleCount
,
197 const UnicodeString
& str
);
199 void expectPosition(FieldPosition
& pos
, int32_t id
, int32_t start
, int32_t limit
,
200 const UnicodeString
& str
);
202 void expect2(NumberFormat
& fmt
, const Formattable
& n
, const UnicodeString
& str
);
204 void expect3(NumberFormat
& fmt
, const Formattable
& n
, const UnicodeString
& str
);
206 void expect2(NumberFormat
& fmt
, const Formattable
& n
, const char* str
) {
207 expect2(fmt
, n
, UnicodeString(str
, ""));
210 void expect2(NumberFormat
* fmt
, const Formattable
& n
, const UnicodeString
& str
, UErrorCode ec
);
212 void expect2(NumberFormat
* fmt
, const Formattable
& n
, const char* str
, UErrorCode ec
) {
213 expect2(fmt
, n
, UnicodeString(str
, ""), ec
);
216 void expect(NumberFormat
& fmt
, const UnicodeString
& str
, const Formattable
& n
);
218 void expect(NumberFormat
& fmt
, const char *str
, const Formattable
& n
) {
219 expect(fmt
, UnicodeString(str
, ""), n
);
222 void expect(NumberFormat
& fmt
, const Formattable
& n
,
223 const UnicodeString
& exp
, UBool rt
=TRUE
);
225 void expect(NumberFormat
& fmt
, const Formattable
& n
,
226 const char *exp
, UBool rt
=TRUE
) {
227 expect(fmt
, n
, UnicodeString(exp
, ""), rt
);
230 void expect(NumberFormat
* fmt
, const Formattable
& n
,
231 const UnicodeString
& exp
, UBool rt
, UErrorCode errorCode
);
233 void expect(NumberFormat
* fmt
, const Formattable
& n
,
234 const char *exp
, UBool rt
, UErrorCode errorCode
) {
235 expect(fmt
, n
, UnicodeString(exp
, ""), rt
, errorCode
);
238 void expect(NumberFormat
* fmt
, const Formattable
& n
,
239 const UnicodeString
& exp
, UErrorCode errorCode
) {
240 expect(fmt
, n
, exp
, TRUE
, errorCode
);
243 void expect(NumberFormat
* fmt
, const Formattable
& n
,
244 const char *exp
, UErrorCode errorCode
) {
245 expect(fmt
, n
, UnicodeString(exp
, ""), TRUE
, errorCode
);
248 void expectCurrency(NumberFormat
& nf
, const Locale
& locale
,
249 double value
, const UnicodeString
& string
);
251 void expectPad(DecimalFormat
& fmt
, const UnicodeString
& pat
,
252 int32_t pos
, int32_t width
, UChar pad
);
254 void expectPad(DecimalFormat
& fmt
, const char *pat
,
255 int32_t pos
, int32_t width
, UChar pad
) {
256 expectPad(fmt
, UnicodeString(pat
, ""), pos
, width
, pad
);
259 void expectPad(DecimalFormat
& fmt
, const UnicodeString
& pat
,
260 int32_t pos
, int32_t width
, const UnicodeString
& pad
);
262 void expectPad(DecimalFormat
& fmt
, const char *pat
,
263 int32_t pos
, int32_t width
, const UnicodeString
& pad
) {
264 expectPad(fmt
, UnicodeString(pat
, ""), pos
, width
, pad
);
267 void expectPat(DecimalFormat
& fmt
, const UnicodeString
& exp
);
269 void expectPat(DecimalFormat
& fmt
, const char *exp
) {
270 expectPat(fmt
, UnicodeString(exp
, ""));
273 void expectPad(DecimalFormat
& fmt
, const UnicodeString
& pat
,
276 void expectPad(DecimalFormat
& fmt
, const char *pat
,
278 expectPad(fmt
, pat
, pos
, 0, (UChar
)0);
281 void expect_rbnf(NumberFormat
& fmt
, const UnicodeString
& str
, const Formattable
& n
);
283 void expect_rbnf(NumberFormat
& fmt
, const Formattable
& n
,
284 const UnicodeString
& exp
, UBool rt
=TRUE
);
286 // internal utility routine
287 static UnicodeString
& escape(UnicodeString
& s
);
289 enum { ILLEGAL
= -1 };
291 // internal subtest used by TestRounding487
292 void roundingTest(NumberFormat
& nf
, double x
, int32_t maxFractionDigits
, const char* expected
);
294 // internal rounding checking for TestRounding
295 void checkRounding(DecimalFormat
* df
, double base
, int iterations
, double increment
);
297 double checkRound(DecimalFormat
* df
, double iValue
, double lastParsed
);
300 DecimalFormat
& format
,
301 const double *values
,
302 const char * const *expected
,
303 const DecimalFormat::ERoundingMode
*roundingModes
,
304 const char * const *descriptions
,
306 int32_t roundingModeSize
);
310 #endif /* #if !UCONFIG_NO_FORMATTING */
312 #endif // _NUMBERFORMATTEST_