ICU-6134 Added support for NumberFormat.Field constant properties

X-SVN-Rev: 25165
This commit is contained in:
Jason Spieth 2008-12-19 19:16:55 +00:00
parent 5f098499ce
commit 3db61599e2
2 changed files with 107 additions and 1 deletions

View file

@ -1,6 +1,6 @@
/*****************************************************************************************
*
* Copyright (C) 1996-2004, International Business Machines
* Copyright (C) 1996-2008, International Business Machines
* Corporation and others. All Rights Reserved.
**/
@ -264,6 +264,26 @@ public class IntlTestDecimalFormatAPI extends com.ibm.icu.dev.test.TestFmwk
errln("ERROR: toLocalizedPattern() result did not match pattern applied");
}
}
public void testJB6134()
{
DecimalFormat decfmt = new DecimalFormat();
StringBuffer buf = new StringBuffer();
FieldPosition fposByInt = new FieldPosition(NumberFormat.INTEGER_FIELD);
decfmt.format(123, buf, fposByInt);
buf.setLength(0);
FieldPosition fposByField = new FieldPosition(NumberFormat.Field.INTEGER);
decfmt.format(123, buf, fposByField);
if (fposByInt.getEndIndex() != fposByField.getEndIndex())
{
errln("ERROR: End index for integer field - fposByInt:" + fposByInt.getEndIndex() +
" / fposByField: " + fposByField.getEndIndex());
}
}
}

View file

@ -836,6 +836,12 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
fieldPosition.setBeginIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
fieldPosition.setBeginIndex(result.length());
}
//#endif
result.append(symbols.getNaN());
// [Spark/CDL] Add attribute for NaN here.
@ -850,6 +856,12 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
fieldPosition.setEndIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
fieldPosition.setEndIndex(result.length());
}
//#endif
addPadding(result, fieldPosition, 0, 0);
return result;
@ -887,6 +899,12 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
fieldPosition.setBeginIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
fieldPosition.setBeginIndex(result.length());
}
//#endif
// [Spark/CDL] Add attribute for infinity here.
result.append(symbols.getInfinity());
@ -900,6 +918,12 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
fieldPosition.setEndIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
fieldPosition.setEndIndex(result.length());
}
//#endif
int suffixLen = appendAffix(result, isNegative, false, parseAttr);
@ -1330,6 +1354,15 @@ public class DecimalFormat extends NumberFormat {
} else if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
fieldPosition.setBeginIndex(-1);
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
fieldPosition.setBeginIndex(result.length());
fieldPosition.setEndIndex(-1);
} else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
fieldPosition.setBeginIndex(-1);
}
//#endif
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
@ -1405,6 +1438,13 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
fieldPosition.setEndIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
fieldPosition.setEndIndex(result.length());
}
//#endif
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
// [Spark/CDL] Add attribute for integer part
@ -1429,6 +1469,13 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
fieldPosition.setBeginIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
fieldPosition.setBeginIndex(result.length());
}
//#endif
}
result.append((i < digitList.count) ?
(char)(digitList.digits[i] + zeroDelta) :
@ -1451,6 +1498,20 @@ public class DecimalFormat extends NumberFormat {
}
fieldPosition.setEndIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
if (fieldPosition.getEndIndex() < 0) {
fieldPosition.setEndIndex(result.length());
}
} else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
if (fieldPosition.getBeginIndex() < 0) {
fieldPosition.setBeginIndex(result.length());
}
fieldPosition.setEndIndex(result.length());
}
//#endif
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
// [Spark/CDL] Calcuate the end index of integer part and fractional
@ -1547,6 +1608,12 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
fieldPosition.setBeginIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
fieldPosition.setBeginIndex(result.length());
}
//#endif
int sigCount = 0;
int minSigDig = getMinimumSignificantDigits();
@ -1615,6 +1682,12 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
fieldPosition.setEndIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
fieldPosition.setEndIndex(result.length());
}
//#endif
// Determine whether or not there are any printable fractional
// digits. If we've used up the digits we know there aren't.
@ -1651,6 +1724,12 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
fieldPosition.setBeginIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
fieldPosition.setBeginIndex(result.length());
}
//#endif
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
@ -1708,6 +1787,13 @@ public class DecimalFormat extends NumberFormat {
if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
fieldPosition.setEndIndex(result.length());
}
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
fieldPosition.setEndIndex(result.length());
}
//#endif
//#if defined(FOUNDATION10) || defined(J2SE13)
//#else
// [Spark/CDL] Add attribute information if necessary.