UnicodeString&
DecimalFormat::format(StringPiece number, UnicodeString& appendTo, FieldPositionIterator* posIter,
UErrorCode& status) const {
- ErrorCode localStatus;
- FormattedNumber output = fFormatter->formatDecimal(number, localStatus);
+ FormattedNumber output = fFormatter->formatDecimal(number, status);
if (posIter != nullptr) {
output.populateFieldPositionIterator(*posIter, status);
}
} else {
switch (n->getType()) {
case Formattable::kDouble:
- format(n->getDouble(), appendTo, pos);
+ format(n->getDouble(), appendTo, pos, status);
break;
case Formattable::kLong:
- format(n->getLong(), appendTo, pos);
+ format(n->getLong(), appendTo, pos, status);
break;
case Formattable::kInt64:
- format(n->getInt64(), appendTo, pos);
+ format(n->getInt64(), appendTo, pos, status);
break;
default:
status = U_INVALID_FORMAT_ERROR;
}
actual.remove();
+ pos.setBeginIndex(0);
+ pos.setEndIndex(0);
status = U_ZERO_ERROR;
cdf->format((double)123456.0, actual, &posIter, status);
- if (status != U_UNSUPPORTED_ERROR) {
- errln(UnicodeString("Fail format(double,UnicodeString&,FieldPositionIterator*,UErrorCode&): Expected status U_UNSUPPORTED_ERROR;") +
- "Got status " + u_errorName(status));
+ posIter.next(pos);
+ if (actual != expected || pos.getEndIndex() != 3 || status != U_ZERO_ERROR) {
+ errln(UnicodeString("Fail format(int32_t,UnicodeString&,FieldPosition&,UErrorCode&): Expected: \"") + expected + "\", first pos 3, status U_ZERO_ERROR; " +
+ "Got: \"" + actual + "\", pos " + pos.getEndIndex() + ", status " + u_errorName(status));
}
actual.remove();
}
actual.remove();
+ pos.setBeginIndex(0);
+ pos.setEndIndex(0);
status = U_ZERO_ERROR;
cdf->format((int32_t)123456, actual, &posIter, status);
- if (status != U_UNSUPPORTED_ERROR) {
- errln(UnicodeString("Fail format(int32_t,UnicodeString&,FieldPositionIterator*,UErrorCode&): Expected status U_UNSUPPORTED_ERROR;") +
- "Got status " + u_errorName(status));
+ posIter.next(pos);
+ if (actual != expected || pos.getEndIndex() != 3 || status != U_ZERO_ERROR) {
+ errln(UnicodeString("Fail format(int32_t,UnicodeString&,FieldPosition&,UErrorCode&): Expected: \"") + expected + "\", first pos 3, status U_ZERO_ERROR; " +
+ "Got: \"" + actual + "\", pos " + pos.getEndIndex() + ", status " + u_errorName(status));
}
actual.remove();
}
actual.remove();
+ pos.setBeginIndex(0);
+ pos.setEndIndex(0);
status = U_ZERO_ERROR;
cdf->format((int64_t)123456, actual, &posIter, status);
- if (status != U_UNSUPPORTED_ERROR) {
- errln(UnicodeString("Fail format(int64_t,UnicodeString&,FieldPositionIterator*,UErrorCode&): Expected status U_UNSUPPORTED_ERROR;") +
- "Got status " + u_errorName(status));
+ posIter.next(pos);
+ if (actual != expected || pos.getEndIndex() != 3 || status != U_ZERO_ERROR) {
+ errln(UnicodeString("Fail format(int32_t,UnicodeString&,FieldPosition&,UErrorCode&): Expected: \"") + expected + "\", first pos 3, status U_ZERO_ERROR; " +
+ "Got: \"" + actual + "\", pos " + pos.getEndIndex() + ", status " + u_errorName(status));
}
}
}
if (result != expected) {
- errln("[%s] file dcfmtest.txt, line %d: expected \"%s\", got \"%s\"",
- typeStr, lineNum, UnicodeStringPiece(expected).data(), UnicodeStringPiece(result).data());
+ errln("[%s] file dcfmtest.txt, line %d: expected \"%s\", got \"%s\", %s",
+ typeStr, lineNum, UnicodeStringPiece(expected).data(), UnicodeStringPiece(result).data(),
+ u_errorName(status));
}
}
if (!assertSuccess("Error creating format object", status)) {
return;
}
- verifyFormat("TestCurrenciesShort", fmt, &USD_NEG_1, 1, "-USD1.00");
- verifyFormat("TestCurrenciesShort", fmt, &USD_1, 1, "USD1.00");
- verifyFormat("TestCurrenciesShort", fmt, &USD_2, 1, "USD2.00");
+ verifyFormat("TestCurrenciesShort", fmt, &USD_NEG_1, 1, "-USD\\u00A01.00");
+ verifyFormat("TestCurrenciesShort", fmt, &USD_1, 1, "USD\\u00A01.00");
+ verifyFormat("TestCurrenciesShort", fmt, &USD_2, 1, "USD\\u00A02.00");
fmt = MeasureFormat(en, UMEASFMT_WIDTH_NARROW, status);
if (!assertSuccess("Error creating format object", status)) {
return;
"grouping separator",
"2,147,483,647 yrs, -2,147,483,648 mths, -987 days, 1,362 hr, 987 min",
appendTo);
- assertEquals("begin index", 9, pos.getBeginIndex());
- assertEquals("end index", 10, pos.getEndIndex());
+ assertEquals("begin index", 1, pos.getBeginIndex());
+ assertEquals("end index", 2, pos.getEndIndex());
}
void MeasureFormatTest::TestDoubleZero() {