/* | |
******************************************************************************* | |
* Copyright (C) 2007-2011, International Business Machines Corporation and * | |
* others. All Rights Reserved. * | |
******************************************************************************* | |
*/ | |
package com.ibm.icu.tests; | |
import java.math.BigInteger; | |
import java.text.FieldPosition; | |
import java.text.ParseException; | |
import java.text.ParsePosition; | |
import java.util.Locale; | |
import com.ibm.icu.text.NumberFormat; | |
import com.ibm.icu.util.ULocale; | |
public class NumberFormatTest extends ICUTestCase { | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.NumberFormat(NumberFormat)' | |
*/ | |
public void testNumberFormat() { | |
NumberFormat nf = new NumberFormat(java.text.NumberFormat.getInstance()); | |
assertEquals(nf, NumberFormat.getInstance()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.format(Object, StringBuffer, FieldPosition)' | |
*/ | |
public void testFormatObjectStringBufferFieldPosition() { | |
Number num = new Long(1234L); | |
StringBuffer buf = new StringBuffer(); | |
FieldPosition fp = new FieldPosition(NumberFormat.INTEGER_FIELD); | |
NumberFormat.getInstance().format(num, buf, fp); | |
assertEquals("1,234", buf.toString()); | |
assertEquals(0, fp.getBeginIndex()); | |
assertEquals(5, fp.getEndIndex()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.parseObject(String, ParsePosition)' | |
*/ | |
public void testParseObjectStringParsePosition() { | |
ParsePosition pp = new ParsePosition(0); | |
Object result = NumberFormat.getInstance().parse("1,234", pp); | |
assertEquals(result, new Long(1234)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.format(double)' | |
*/ | |
public void testFormatDouble() { | |
assertEquals("1,234.567", NumberFormat.getInstance().format(1234.567)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.format(long)' | |
*/ | |
public void testFormatLong() { | |
assertEquals("1,234", NumberFormat.getInstance().format(1234L)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger)' | |
*/ | |
public void testFormatBigInteger() { | |
// note, java doesn't handle biginteger with full precision. | |
BigInteger bi = new BigInteger("123456"); | |
assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.format(double, StringBuffer, FieldPosition)' | |
*/ | |
public void testFormatDoubleStringBufferFieldPosition() { | |
StringBuffer buf = new StringBuffer(); | |
FieldPosition fp = new FieldPosition(NumberFormat.FRACTION_FIELD); | |
assertEquals("123,456.789", NumberFormat.getInstance().format(123456.789, buf, fp).toString()); | |
assertEquals(8, fp.getBeginIndex()); | |
assertEquals(11, fp.getEndIndex()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.format(long, StringBuffer, FieldPosition)' | |
*/ | |
public void testFormatLongStringBufferFieldPosition() { | |
StringBuffer buf = new StringBuffer(); | |
FieldPosition fp = new FieldPosition(NumberFormat.Field.GROUPING_SEPARATOR); | |
assertEquals("123,456", NumberFormat.getInstance().format(123456L, buf, fp).toString()); | |
assertEquals(3, fp.getBeginIndex()); | |
assertEquals(4, fp.getEndIndex()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger, StringBuffer, FieldPosition)' | |
*/ | |
public void testFormatBigIntegerStringBufferFieldPosition() { | |
// note, java doesn't handle biginteger with full precision. | |
StringBuffer buf = new StringBuffer(); | |
FieldPosition fp = new FieldPosition(0); | |
BigInteger bi = new BigInteger("123456"); | |
assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi, buf, fp).toString()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String, ParsePosition)' | |
*/ | |
public void testParseStringParsePosition() { | |
ParsePosition pp = new ParsePosition(3); | |
assertEquals(new Long(123456), NumberFormat.getInstance().parse("xxx123,456yyy", pp)); | |
assertEquals(10, pp.getIndex()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String)' | |
*/ | |
public void testParseString() throws ParseException { | |
Number result = NumberFormat.getInstance().parse("123,456,yyy"); | |
assertEquals(new Long(123456), result); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.isParseIntegerOnly()' | |
*/ | |
public void testIsParseIntegerOnly() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setParseIntegerOnly(true); | |
assertTrue(nf.isParseIntegerOnly()); | |
nf.setParseIntegerOnly(false); | |
assertFalse(nf.isParseIntegerOnly()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.setParseIntegerOnly(boolean)' | |
*/ | |
public void testSetParseIntegerOnly() throws ParseException { | |
String str = "123.456,yyy"; | |
NumberFormat nf = NumberFormat.getInstance(); | |
assertEquals(new Double(123.456), nf.parse(str)); | |
nf.setParseIntegerOnly(true); | |
assertEquals(new Long(123), nf.parse(str)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance()' | |
*/ | |
public void testGetInstance() { | |
// used everywhere, no need to test | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(Locale)' | |
*/ | |
public void testGetInstanceLocale() { | |
NumberFormat nf = NumberFormat.getInstance(Locale.GERMANY); | |
assertEquals("123,456", nf.format(123.456)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(ULocale)' | |
*/ | |
public void testGetInstanceULocale() { | |
NumberFormat nf = NumberFormat.getInstance(ULocale.GERMANY); | |
assertEquals("123,456", nf.format(123.456)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance()' | |
*/ | |
public void testGetNumberInstance() { | |
NumberFormat nf = NumberFormat.getNumberInstance(); | |
assertEquals("123,456.789", nf.format(123456.789)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(Locale)' | |
*/ | |
public void testGetNumberInstanceLocale() { | |
NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMANY); | |
assertEquals("123.456,789", nf.format(123456.789)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(ULocale)' | |
*/ | |
public void testGetNumberInstanceULocale() { | |
NumberFormat nf = NumberFormat.getNumberInstance(ULocale.GERMANY); | |
assertEquals("123.456,789", nf.format(123456.789)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance()' | |
*/ | |
public void testGetIntegerInstance() { | |
NumberFormat nf = NumberFormat.getIntegerInstance(); | |
assertEquals("123,457", nf.format(123456.789)); // rounds | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(Locale)' | |
*/ | |
public void testGetIntegerInstanceLocale() { | |
NumberFormat nf = NumberFormat.getIntegerInstance(Locale.GERMANY); | |
assertEquals("123.457", nf.format(123456.789)); // rounds | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(ULocale)' | |
*/ | |
public void testGetIntegerInstanceULocale() { | |
NumberFormat nf = NumberFormat.getIntegerInstance(ULocale.GERMANY); | |
assertEquals("123.457", nf.format(123456.789)); // rounds | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance()' | |
*/ | |
public void testGetCurrencyInstance() { | |
NumberFormat nf = NumberFormat.getCurrencyInstance(); | |
assertEquals("$123,456.99", nf.format(123456.99)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(Locale)' | |
*/ | |
public void testGetCurrencyInstanceLocale() { | |
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY); | |
assertEquals("123.456,99 \u20AC", nf.format(123456.99)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(ULocale)' | |
*/ | |
public void testGetCurrencyInstanceULocale() { | |
NumberFormat nf = NumberFormat.getCurrencyInstance(ULocale.GERMANY); | |
assertEquals("123.456,99 \u20AC", nf.format(123456.99)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance()' | |
*/ | |
public void testGetPercentInstance() { | |
NumberFormat nf = NumberFormat.getPercentInstance(); | |
assertEquals("123,456%", nf.format(1234.56)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(Locale)' | |
*/ | |
public void testGetPercentInstanceLocale() { | |
NumberFormat nf = NumberFormat.getPercentInstance(Locale.GERMANY); | |
assertEquals("123.456%", nf.format(1234.56)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(ULocale)' | |
*/ | |
public void testGetPercentInstanceULocale() { | |
NumberFormat nf = NumberFormat.getPercentInstance(ULocale.GERMANY); | |
assertEquals("123.456%", nf.format(1234.56)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance()' | |
*/ | |
public void testGetScientificInstance() { | |
NumberFormat nf = NumberFormat.getScientificInstance(); | |
assertEquals(".123456E4", nf.format(1234.56)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(Locale)' | |
*/ | |
public void testGetScientificInstanceLocale() { | |
NumberFormat nf = NumberFormat.getScientificInstance(Locale.GERMANY); | |
assertEquals(",123456E4", nf.format(1234.56)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(ULocale)' | |
*/ | |
public void testGetScientificInstanceULocale() { | |
NumberFormat nf = NumberFormat.getScientificInstance(ULocale.GERMANY); | |
assertEquals(",123456E4", nf.format(1234.56)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableLocales()' | |
*/ | |
public void testGetAvailableLocales() { | |
Locale[] ilocales = NumberFormat.getAvailableLocales(); | |
if (ICUTestCase.testingWrapper) { | |
Locale[] jlocales = java.text.NumberFormat.getAvailableLocales(); | |
for (int i = 0; i < ilocales.length; ++i) { | |
assertEquals(jlocales[i], ilocales[i]); | |
} | |
} | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableULocales()' | |
*/ | |
public void testGetAvailableULocales() { | |
ULocale[] ulocales = NumberFormat.getAvailableULocales(); | |
if (ICUTestCase.testingWrapper) { | |
Locale[] jlocales = java.text.NumberFormat.getAvailableLocales(); | |
for (int i = 0; i < ulocales.length; ++i) { | |
assertEquals(jlocales[i], ulocales[i].toLocale()); | |
} | |
} | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.isGroupingUsed()' | |
*/ | |
public void testIsGroupingUsed() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setGroupingUsed(true); | |
assertTrue(nf.isGroupingUsed()); | |
nf.setGroupingUsed(false); | |
assertFalse(nf.isGroupingUsed()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.setGroupingUsed(boolean)' | |
*/ | |
public void testSetGroupingUsed() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
assertEquals("123,456,789", nf.format(123456789)); | |
nf.setGroupingUsed(false); | |
assertEquals("123456789", nf.format(123456789)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumIntegerDigits()' | |
*/ | |
public void testGetMaximumIntegerDigits() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setMaximumIntegerDigits(4); | |
assertEquals(4, nf.getMaximumIntegerDigits()); | |
nf.setMaximumIntegerDigits(6); | |
assertEquals(6, nf.getMaximumIntegerDigits()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumIntegerDigits(int)' | |
*/ | |
public void testSetMaximumIntegerDigits() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setMaximumIntegerDigits(4); | |
assertEquals("3,456", nf.format(123456)); // high digits truncated | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumIntegerDigits()' | |
*/ | |
public void testGetMinimumIntegerDigits() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setMinimumIntegerDigits(4); | |
assertEquals(4, nf.getMinimumIntegerDigits()); | |
nf.setMinimumIntegerDigits(6); | |
assertEquals(6, nf.getMinimumIntegerDigits()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumIntegerDigits(int)' | |
*/ | |
public void testSetMinimumIntegerDigits() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setMinimumIntegerDigits(4); | |
assertEquals("0,012", nf.format(12)); // pad out with zero, grouping still used | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumFractionDigits()' | |
*/ | |
public void testGetMaximumFractionDigits() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setMaximumFractionDigits(4); | |
assertEquals(4, nf.getMaximumFractionDigits()); | |
nf.setMaximumFractionDigits(6); | |
assertEquals(6, nf.getMaximumFractionDigits()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumFractionDigits(int)' | |
*/ | |
public void testSetMaximumFractionDigits() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setMaximumFractionDigits(4); | |
assertEquals("1.2346", nf.format(1.2345678)); // low digits rounded | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumFractionDigits()' | |
*/ | |
public void testGetMinimumFractionDigits() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setMinimumFractionDigits(4); | |
assertEquals(4, nf.getMinimumFractionDigits()); | |
nf.setMinimumFractionDigits(6); | |
assertEquals(6, nf.getMinimumFractionDigits()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumFractionDigits(int)' | |
*/ | |
public void testSetMinimumFractionDigits() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
nf.setMinimumFractionDigits(4); | |
assertEquals("1.2000", nf.format(1.2)); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.toString()' | |
*/ | |
public void testToString() { | |
assertNotNull(NumberFormat.getInstance().toString()); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.hashCode()' | |
*/ | |
public void testHashCode() { | |
NumberFormat nf = NumberFormat.getInstance(); | |
NumberFormat eq = NumberFormat.getInstance(Locale.US); | |
NumberFormat neq = NumberFormat.getInstance(Locale.GERMANY); | |
ICUTestCase.testEHCS(nf, eq, neq); | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.clone()' | |
*/ | |
public void testClone() { | |
// see testHashCode | |
} | |
/* | |
* Test method for 'com.ibm.icu.x.text.NumberFormat.equals(Object)' | |
*/ | |
public void testEqualsObject() { | |
// see testHashCode | |
} | |
} |