2 *******************************************************************************
\r
3 * Copyright (C) 2007, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
8 package com.ibm.icu.tests;
\r
10 import java.math.BigInteger;
\r
11 import java.text.FieldPosition;
\r
12 import java.text.ParseException;
\r
13 import java.text.ParsePosition;
\r
14 import java.util.Locale;
\r
16 import com.ibm.icu.text.NumberFormat;
\r
17 import com.ibm.icu.util.ULocale;
\r
19 public class NumberFormatTest extends ICUTestCase {
\r
22 * Test method for 'com.ibm.icu.x.text.NumberFormat.NumberFormat(NumberFormat)'
\r
24 public void testNumberFormat() {
\r
25 NumberFormat nf = new NumberFormat(java.text.NumberFormat.getInstance());
\r
26 assertEquals(nf, NumberFormat.getInstance());
\r
30 * Test method for 'com.ibm.icu.x.text.NumberFormat.format(Object, StringBuffer, FieldPosition)'
\r
32 public void testFormatObjectStringBufferFieldPosition() {
\r
33 Number num = new Long(1234L);
\r
34 StringBuffer buf = new StringBuffer();
\r
35 FieldPosition fp = new FieldPosition(0);
\r
36 NumberFormat.getInstance().format(num, buf, fp);
\r
37 assertEquals("1,234", buf.toString());
\r
41 * Test method for 'com.ibm.icu.x.text.NumberFormat.parseObject(String, ParsePosition)'
\r
43 public void testParseObjectStringParsePosition() {
\r
44 ParsePosition pp = new ParsePosition(0);
\r
45 Object result = NumberFormat.getInstance().parse("1,234", pp);
\r
46 assertEquals(result, new Long(1234));
\r
50 * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double)'
\r
52 public void testFormatDouble() {
\r
53 assertEquals("1,234.567", NumberFormat.getInstance().format(1234.567));
\r
57 * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long)'
\r
59 public void testFormatLong() {
\r
60 assertEquals("1,234", NumberFormat.getInstance().format(1234L));
\r
64 * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger)'
\r
66 public void testFormatBigInteger() {
\r
67 // note, java doesn't handle biginteger with full precision.
\r
68 BigInteger bi = new BigInteger("123456");
\r
69 assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi));
\r
73 * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double, StringBuffer, FieldPosition)'
\r
75 public void testFormatDoubleStringBufferFieldPosition() {
\r
76 StringBuffer buf = new StringBuffer();
\r
77 FieldPosition fp = new FieldPosition(0);
\r
78 assertEquals("123,456.789", NumberFormat.getInstance().format(123456.789, buf, fp).toString());
\r
82 * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long, StringBuffer, FieldPosition)'
\r
84 public void testFormatLongStringBufferFieldPosition() {
\r
85 StringBuffer buf = new StringBuffer();
\r
86 FieldPosition fp = new FieldPosition(0);
\r
87 assertEquals("123,456", NumberFormat.getInstance().format(123456L, buf, fp).toString());
\r
91 * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger, StringBuffer, FieldPosition)'
\r
93 public void testFormatBigIntegerStringBufferFieldPosition() {
\r
94 // note, java doesn't handle biginteger with full precision.
\r
95 StringBuffer buf = new StringBuffer();
\r
96 FieldPosition fp = new FieldPosition(0);
\r
97 BigInteger bi = new BigInteger("123456");
\r
98 assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi, buf, fp).toString());
\r
102 * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String, ParsePosition)'
\r
104 public void testParseStringParsePosition() {
\r
105 ParsePosition pp = new ParsePosition(3);
\r
106 assertEquals(new Long(123456), NumberFormat.getInstance().parse("xxx123,456yyy", pp));
\r
107 assertEquals(10, pp.getIndex());
\r
111 * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String)'
\r
113 public void testParseString() throws ParseException {
\r
114 Number result = NumberFormat.getInstance().parse("123,456,yyy");
\r
115 assertEquals(new Long(123456), result);
\r
119 * Test method for 'com.ibm.icu.x.text.NumberFormat.isParseIntegerOnly()'
\r
121 public void testIsParseIntegerOnly() {
\r
122 NumberFormat nf = NumberFormat.getInstance();
\r
123 nf.setParseIntegerOnly(true);
\r
124 assertTrue(nf.isParseIntegerOnly());
\r
125 nf.setParseIntegerOnly(false);
\r
126 assertFalse(nf.isParseIntegerOnly());
\r
130 * Test method for 'com.ibm.icu.x.text.NumberFormat.setParseIntegerOnly(boolean)'
\r
132 public void testSetParseIntegerOnly() throws ParseException {
\r
133 String str = "123.456,yyy";
\r
134 NumberFormat nf = NumberFormat.getInstance();
\r
135 assertEquals(new Double(123.456), nf.parse(str));
\r
136 nf.setParseIntegerOnly(true);
\r
137 assertEquals(new Long(123), nf.parse(str));
\r
141 * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance()'
\r
143 public void testGetInstance() {
\r
144 // used everywhere, no need to test
\r
148 * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(Locale)'
\r
150 public void testGetInstanceLocale() {
\r
151 NumberFormat nf = NumberFormat.getInstance(Locale.GERMANY);
\r
152 assertEquals("123,456", nf.format(123.456));
\r
156 * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(ULocale)'
\r
158 public void testGetInstanceULocale() {
\r
159 NumberFormat nf = NumberFormat.getInstance(ULocale.GERMANY);
\r
160 assertEquals("123,456", nf.format(123.456));
\r
164 * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance()'
\r
166 public void testGetNumberInstance() {
\r
167 NumberFormat nf = NumberFormat.getNumberInstance();
\r
168 assertEquals("123,456.789", nf.format(123456.789));
\r
172 * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(Locale)'
\r
174 public void testGetNumberInstanceLocale() {
\r
175 NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMANY);
\r
176 assertEquals("123.456,789", nf.format(123456.789));
\r
180 * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(ULocale)'
\r
182 public void testGetNumberInstanceULocale() {
\r
183 NumberFormat nf = NumberFormat.getNumberInstance(ULocale.GERMANY);
\r
184 assertEquals("123.456,789", nf.format(123456.789));
\r
188 * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance()'
\r
190 public void testGetIntegerInstance() {
\r
191 NumberFormat nf = NumberFormat.getIntegerInstance();
\r
192 assertEquals("123,457", nf.format(123456.789)); // rounds
\r
196 * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(Locale)'
\r
198 public void testGetIntegerInstanceLocale() {
\r
199 NumberFormat nf = NumberFormat.getIntegerInstance(Locale.GERMANY);
\r
200 assertEquals("123.457", nf.format(123456.789)); // rounds
\r
204 * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(ULocale)'
\r
206 public void testGetIntegerInstanceULocale() {
\r
207 NumberFormat nf = NumberFormat.getIntegerInstance(ULocale.GERMANY);
\r
208 assertEquals("123.457", nf.format(123456.789)); // rounds
\r
212 * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance()'
\r
214 public void testGetCurrencyInstance() {
\r
215 NumberFormat nf = NumberFormat.getCurrencyInstance();
\r
216 assertEquals("$123,456.99", nf.format(123456.99));
\r
220 * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(Locale)'
\r
222 public void testGetCurrencyInstanceLocale() {
\r
223 NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY);
\r
224 assertEquals("123.456,99 \u20AC", nf.format(123456.99));
\r
228 * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(ULocale)'
\r
230 public void testGetCurrencyInstanceULocale() {
\r
231 NumberFormat nf = NumberFormat.getCurrencyInstance(ULocale.GERMANY);
\r
232 assertEquals("123.456,99 \u20AC", nf.format(123456.99));
\r
236 * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance()'
\r
238 public void testGetPercentInstance() {
\r
239 NumberFormat nf = NumberFormat.getPercentInstance();
\r
240 assertEquals("123,456%", nf.format(1234.56));
\r
244 * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(Locale)'
\r
246 public void testGetPercentInstanceLocale() {
\r
247 NumberFormat nf = NumberFormat.getPercentInstance(Locale.GERMANY);
\r
248 assertEquals("123.456%", nf.format(1234.56));
\r
252 * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(ULocale)'
\r
254 public void testGetPercentInstanceULocale() {
\r
255 NumberFormat nf = NumberFormat.getPercentInstance(ULocale.GERMANY);
\r
256 assertEquals("123.456%", nf.format(1234.56));
\r
260 * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance()'
\r
262 public void testGetScientificInstance() {
\r
263 NumberFormat nf = NumberFormat.getScientificInstance();
\r
264 assertEquals(".123456E4", nf.format(1234.56));
\r
268 * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(Locale)'
\r
270 public void testGetScientificInstanceLocale() {
\r
271 NumberFormat nf = NumberFormat.getScientificInstance(Locale.GERMANY);
\r
272 assertEquals(",123456E4", nf.format(1234.56));
\r
276 * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(ULocale)'
\r
278 public void testGetScientificInstanceULocale() {
\r
279 NumberFormat nf = NumberFormat.getScientificInstance(ULocale.GERMANY);
\r
280 assertEquals(",123456E4", nf.format(1234.56));
\r
284 * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableLocales()'
\r
286 public void testGetAvailableLocales() {
\r
287 Locale[] ilocales = NumberFormat.getAvailableLocales();
\r
288 if (ICUTestCase.testingWrapper) {
\r
289 Locale[] jlocales = java.text.NumberFormat.getAvailableLocales();
\r
290 for (int i = 0; i < ilocales.length; ++i) {
\r
291 assertEquals(jlocales[i], ilocales[i]);
\r
297 * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableULocales()'
\r
299 public void testGetAvailableULocales() {
\r
300 ULocale[] ulocales = NumberFormat.getAvailableULocales();
\r
301 if (ICUTestCase.testingWrapper) {
\r
302 Locale[] jlocales = java.text.NumberFormat.getAvailableLocales();
\r
303 for (int i = 0; i < ulocales.length; ++i) {
\r
304 assertEquals(jlocales[i], ulocales[i].toLocale());
\r
310 * Test method for 'com.ibm.icu.x.text.NumberFormat.isGroupingUsed()'
\r
312 public void testIsGroupingUsed() {
\r
313 NumberFormat nf = NumberFormat.getInstance();
\r
314 nf.setGroupingUsed(true);
\r
315 assertTrue(nf.isGroupingUsed());
\r
316 nf.setGroupingUsed(false);
\r
317 assertFalse(nf.isGroupingUsed());
\r
321 * Test method for 'com.ibm.icu.x.text.NumberFormat.setGroupingUsed(boolean)'
\r
323 public void testSetGroupingUsed() {
\r
324 NumberFormat nf = NumberFormat.getInstance();
\r
325 assertEquals("123,456,789", nf.format(123456789));
\r
326 nf.setGroupingUsed(false);
\r
327 assertEquals("123456789", nf.format(123456789));
\r
331 * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumIntegerDigits()'
\r
333 public void testGetMaximumIntegerDigits() {
\r
334 NumberFormat nf = NumberFormat.getInstance();
\r
335 nf.setMaximumIntegerDigits(4);
\r
336 assertEquals(4, nf.getMaximumIntegerDigits());
\r
337 nf.setMaximumIntegerDigits(6);
\r
338 assertEquals(6, nf.getMaximumIntegerDigits());
\r
342 * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumIntegerDigits(int)'
\r
344 public void testSetMaximumIntegerDigits() {
\r
345 NumberFormat nf = NumberFormat.getInstance();
\r
346 nf.setMaximumIntegerDigits(4);
\r
347 assertEquals("3,456", nf.format(123456)); // high digits truncated
\r
351 * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumIntegerDigits()'
\r
353 public void testGetMinimumIntegerDigits() {
\r
354 NumberFormat nf = NumberFormat.getInstance();
\r
355 nf.setMinimumIntegerDigits(4);
\r
356 assertEquals(4, nf.getMinimumIntegerDigits());
\r
357 nf.setMinimumIntegerDigits(6);
\r
358 assertEquals(6, nf.getMinimumIntegerDigits());
\r
362 * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumIntegerDigits(int)'
\r
364 public void testSetMinimumIntegerDigits() {
\r
365 NumberFormat nf = NumberFormat.getInstance();
\r
366 nf.setMinimumIntegerDigits(4);
\r
367 assertEquals("0,012", nf.format(12)); // pad out with zero, grouping still used
\r
371 * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumFractionDigits()'
\r
373 public void testGetMaximumFractionDigits() {
\r
374 NumberFormat nf = NumberFormat.getInstance();
\r
375 nf.setMaximumFractionDigits(4);
\r
376 assertEquals(4, nf.getMaximumFractionDigits());
\r
377 nf.setMaximumFractionDigits(6);
\r
378 assertEquals(6, nf.getMaximumFractionDigits());
\r
382 * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumFractionDigits(int)'
\r
384 public void testSetMaximumFractionDigits() {
\r
385 NumberFormat nf = NumberFormat.getInstance();
\r
386 nf.setMaximumFractionDigits(4);
\r
387 assertEquals("1.2346", nf.format(1.2345678)); // low digits rounded
\r
391 * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumFractionDigits()'
\r
393 public void testGetMinimumFractionDigits() {
\r
394 NumberFormat nf = NumberFormat.getInstance();
\r
395 nf.setMinimumFractionDigits(4);
\r
396 assertEquals(4, nf.getMinimumFractionDigits());
\r
397 nf.setMinimumFractionDigits(6);
\r
398 assertEquals(6, nf.getMinimumFractionDigits());
\r
402 * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumFractionDigits(int)'
\r
404 public void testSetMinimumFractionDigits() {
\r
405 NumberFormat nf = NumberFormat.getInstance();
\r
406 nf.setMinimumFractionDigits(4);
\r
407 assertEquals("1.2000", nf.format(1.2));
\r
411 * Test method for 'com.ibm.icu.x.text.NumberFormat.toString()'
\r
413 public void testToString() {
\r
414 assertNotNull(NumberFormat.getInstance().toString());
\r
418 * Test method for 'com.ibm.icu.x.text.NumberFormat.hashCode()'
\r
420 public void testHashCode() {
\r
421 NumberFormat nf = NumberFormat.getInstance();
\r
422 NumberFormat eq = NumberFormat.getInstance(Locale.US);
\r
423 NumberFormat neq = NumberFormat.getInstance(Locale.GERMANY);
\r
425 ICUTestCase.testEHCS(nf, eq, neq);
\r
429 * Test method for 'com.ibm.icu.x.text.NumberFormat.clone()'
\r
431 public void testClone() {
\r
432 // see testHashCode
\r
436 * Test method for 'com.ibm.icu.x.text.NumberFormat.equals(Object)'
\r
438 public void testEqualsObject() {
\r
439 // see testHashCode
\r