mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-20 20:19:32 +00:00
ICU-6134 Added support for NumberFormat.Field constant properties
X-SVN-Rev: 25165
This commit is contained in:
parent
5f098499ce
commit
3db61599e2
2 changed files with 107 additions and 1 deletions
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Reference in a new issue