]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / eclipse / plugins / com.ibm.icu.base.tests / src / com / ibm / icu / tests / NumberFormatTest.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2007, International Business Machines Corporation and         *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 \r
8 package com.ibm.icu.tests;\r
9 \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
15 \r
16 import com.ibm.icu.text.NumberFormat;\r
17 import com.ibm.icu.util.ULocale;\r
18 \r
19 public class NumberFormatTest extends ICUTestCase {\r
20 \r
21     /*\r
22      * Test method for 'com.ibm.icu.x.text.NumberFormat.NumberFormat(NumberFormat)'\r
23      */\r
24     public void testNumberFormat() {\r
25         NumberFormat nf = new NumberFormat(java.text.NumberFormat.getInstance());\r
26         assertEquals(nf, NumberFormat.getInstance());\r
27     }\r
28 \r
29     /*\r
30      * Test method for 'com.ibm.icu.x.text.NumberFormat.format(Object, StringBuffer, FieldPosition)'\r
31      */\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
38     }\r
39 \r
40     /*\r
41      * Test method for 'com.ibm.icu.x.text.NumberFormat.parseObject(String, ParsePosition)'\r
42      */\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
47     }\r
48 \r
49     /*\r
50      * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double)'\r
51      */\r
52     public void testFormatDouble() {\r
53         assertEquals("1,234.567", NumberFormat.getInstance().format(1234.567));\r
54     }\r
55 \r
56     /*\r
57      * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long)'\r
58      */\r
59     public void testFormatLong() {\r
60         assertEquals("1,234", NumberFormat.getInstance().format(1234L));\r
61     }\r
62 \r
63     /*\r
64      * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger)'\r
65      */\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
70     }\r
71 \r
72     /*\r
73      * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double, StringBuffer, FieldPosition)'\r
74      */\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
79     }\r
80 \r
81     /*\r
82      * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long, StringBuffer, FieldPosition)'\r
83      */\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
88     }\r
89 \r
90     /*\r
91      * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger, StringBuffer, FieldPosition)'\r
92      */\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
99     }\r
100 \r
101     /*\r
102      * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String, ParsePosition)'\r
103      */\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
108     }\r
109 \r
110     /*\r
111      * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String)'\r
112      */\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
116     }\r
117 \r
118     /*\r
119      * Test method for 'com.ibm.icu.x.text.NumberFormat.isParseIntegerOnly()'\r
120      */\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
127     }\r
128 \r
129     /*\r
130      * Test method for 'com.ibm.icu.x.text.NumberFormat.setParseIntegerOnly(boolean)'\r
131      */\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
138     }\r
139 \r
140     /*\r
141      * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance()'\r
142      */\r
143     public void testGetInstance() {\r
144         // used everywhere, no need to test\r
145     }\r
146 \r
147     /*\r
148      * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(Locale)'\r
149      */\r
150     public void testGetInstanceLocale() {\r
151         NumberFormat nf = NumberFormat.getInstance(Locale.GERMANY);\r
152         assertEquals("123,456", nf.format(123.456));\r
153     }\r
154 \r
155     /*\r
156      * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(ULocale)'\r
157      */\r
158     public void testGetInstanceULocale() {\r
159         NumberFormat nf = NumberFormat.getInstance(ULocale.GERMANY);\r
160         assertEquals("123,456", nf.format(123.456));            \r
161     }\r
162 \r
163     /*\r
164      * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance()'\r
165      */\r
166     public void testGetNumberInstance() {\r
167         NumberFormat nf = NumberFormat.getNumberInstance();\r
168         assertEquals("123,456.789", nf.format(123456.789));\r
169     }\r
170 \r
171     /*\r
172      * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(Locale)'\r
173      */\r
174     public void testGetNumberInstanceLocale() {\r
175         NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMANY);\r
176         assertEquals("123.456,789", nf.format(123456.789));\r
177     }\r
178 \r
179     /*\r
180      * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(ULocale)'\r
181      */\r
182     public void testGetNumberInstanceULocale() {\r
183         NumberFormat nf = NumberFormat.getNumberInstance(ULocale.GERMANY);\r
184         assertEquals("123.456,789", nf.format(123456.789));\r
185     }\r
186 \r
187     /*\r
188      * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance()'\r
189      */\r
190     public void testGetIntegerInstance() {\r
191         NumberFormat nf = NumberFormat.getIntegerInstance();\r
192         assertEquals("123,457", nf.format(123456.789)); // rounds\r
193     }\r
194 \r
195     /*\r
196      * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(Locale)'\r
197      */\r
198     public void testGetIntegerInstanceLocale() {\r
199         NumberFormat nf = NumberFormat.getIntegerInstance(Locale.GERMANY);\r
200         assertEquals("123.457", nf.format(123456.789)); // rounds\r
201     }\r
202 \r
203     /*\r
204      * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(ULocale)'\r
205      */\r
206     public void testGetIntegerInstanceULocale() {\r
207         NumberFormat nf = NumberFormat.getIntegerInstance(ULocale.GERMANY);\r
208         assertEquals("123.457", nf.format(123456.789)); // rounds\r
209     }\r
210 \r
211     /*\r
212      * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance()'\r
213      */\r
214     public void testGetCurrencyInstance() {\r
215         NumberFormat nf = NumberFormat.getCurrencyInstance();\r
216         assertEquals("$123,456.99", nf.format(123456.99));\r
217     }\r
218 \r
219     /*\r
220      * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(Locale)'\r
221      */\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
225     }\r
226 \r
227     /*\r
228      * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(ULocale)'\r
229      */\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
233     }\r
234 \r
235     /*\r
236      * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance()'\r
237      */\r
238     public void testGetPercentInstance() {\r
239         NumberFormat nf = NumberFormat.getPercentInstance();\r
240         assertEquals("123,456%", nf.format(1234.56));\r
241     }\r
242 \r
243     /*\r
244      * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(Locale)'\r
245      */\r
246     public void testGetPercentInstanceLocale() {\r
247         NumberFormat nf = NumberFormat.getPercentInstance(Locale.GERMANY);\r
248         assertEquals("123.456%", nf.format(1234.56));\r
249     }\r
250 \r
251     /*\r
252      * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(ULocale)'\r
253      */\r
254     public void testGetPercentInstanceULocale() {\r
255         NumberFormat nf = NumberFormat.getPercentInstance(ULocale.GERMANY);\r
256         assertEquals("123.456%", nf.format(1234.56));\r
257     }\r
258 \r
259     /*\r
260      * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance()'\r
261      */\r
262     public void testGetScientificInstance() {\r
263         NumberFormat nf = NumberFormat.getScientificInstance();\r
264         assertEquals(".123456E4", nf.format(1234.56));\r
265     }\r
266 \r
267     /*\r
268      * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(Locale)'\r
269      */\r
270     public void testGetScientificInstanceLocale() {\r
271         NumberFormat nf = NumberFormat.getScientificInstance(Locale.GERMANY);\r
272         assertEquals(",123456E4", nf.format(1234.56));\r
273     }\r
274 \r
275     /*\r
276      * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(ULocale)'\r
277      */\r
278     public void testGetScientificInstanceULocale() {\r
279         NumberFormat nf = NumberFormat.getScientificInstance(ULocale.GERMANY);\r
280         assertEquals(",123456E4", nf.format(1234.56));\r
281     }\r
282 \r
283     /*\r
284      * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableLocales()'\r
285      */\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
292             }\r
293         }\r
294     }\r
295 \r
296     /*\r
297      * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableULocales()'\r
298      */\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
305             }\r
306         }\r
307     }\r
308 \r
309     /*\r
310      * Test method for 'com.ibm.icu.x.text.NumberFormat.isGroupingUsed()'\r
311      */\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
318     }\r
319 \r
320     /*\r
321      * Test method for 'com.ibm.icu.x.text.NumberFormat.setGroupingUsed(boolean)'\r
322      */\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
328     }\r
329 \r
330     /*\r
331      * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumIntegerDigits()'\r
332      */\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
339     }\r
340 \r
341     /*\r
342      * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumIntegerDigits(int)'\r
343      */\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
348     }\r
349 \r
350     /*\r
351      * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumIntegerDigits()'\r
352      */\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
359     }\r
360 \r
361     /*\r
362      * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumIntegerDigits(int)'\r
363      */\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
368     }\r
369 \r
370     /*\r
371      * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumFractionDigits()'\r
372      */\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
379     }\r
380 \r
381     /*\r
382      * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumFractionDigits(int)'\r
383      */\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
388     }\r
389 \r
390     /*\r
391      * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumFractionDigits()'\r
392      */\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
399     }\r
400 \r
401     /*\r
402      * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumFractionDigits(int)'\r
403      */\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
408     }\r
409 \r
410     /*\r
411      * Test method for 'com.ibm.icu.x.text.NumberFormat.toString()'\r
412      */\r
413     public void testToString() {\r
414         assertNotNull(NumberFormat.getInstance().toString());\r
415     }\r
416 \r
417     /*\r
418      * Test method for 'com.ibm.icu.x.text.NumberFormat.hashCode()'\r
419      */\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
424                 \r
425         ICUTestCase.testEHCS(nf, eq, neq);\r
426     }\r
427 \r
428     /*\r
429      * Test method for 'com.ibm.icu.x.text.NumberFormat.clone()'\r
430      */\r
431     public void testClone() {\r
432         // see testHashCode\r
433     }\r
434 \r
435     /*\r
436      * Test method for 'com.ibm.icu.x.text.NumberFormat.equals(Object)'\r
437      */\r
438     public void testEqualsObject() {\r
439         // see testHashCode\r
440     }\r
441 }\r