static void Test12052_NullPointer(void);
static void TestParseCases(void);
static void TestSetMaxFracAndRoundIncr(void);
+static void TestIgnorePadding(void);
#define TESTCASE(x) addTest(root, &x, "tsformat/cnumtst/" #x)
TESTCASE(Test12052_NullPointer);
TESTCASE(TestParseCases);
TESTCASE(TestSetMaxFracAndRoundIncr);
+ TESTCASE(TestIgnorePadding);
}
/* test Parse int 64 */
}
}
+static void TestIgnorePadding(void) {
+ UErrorCode status = U_ZERO_ERROR;
+ UNumberFormat* unum = unum_open(UNUM_PATTERN_DECIMAL, NULL, 0, "en_US", NULL, &status);
+ if (U_FAILURE(status)) {
+ log_data_err("unum_open UNUM_PATTERN_DECIMAL for en_US and NULL pattern fails:%s\n", u_errorName(status));
+ } else {
+ unum_setAttribute(unum, UNUM_GROUPING_USED, 0);
+ unum_setAttribute(unum, UNUM_FORMAT_WIDTH, 0);
+ unum_setTextAttribute(unum, UNUM_PADDING_CHARACTER, u"*", 1, &status);
+ if (U_FAILURE(status)) {
+ log_err("unum_setTextAttribute UNUM_PADDING_CHARACTER to '*' fails: %s\n", u_errorName(status));
+ } else {
+ unum_setAttribute(unum, UNUM_PADDING_POSITION, 0);
+ unum_setAttribute(unum, UNUM_MIN_INTEGER_DIGITS, 0);
+ unum_setAttribute(unum, UNUM_MAX_INTEGER_DIGITS, 8);
+ unum_setAttribute(unum, UNUM_MIN_FRACTION_DIGITS, 0);
+ unum_setAttribute(unum, UNUM_MAX_FRACTION_DIGITS, 0);
+
+ UChar ubuf[kUBufMax];
+ int32_t ulen = unum_toPattern(unum, FALSE, ubuf, kUBufMax, &status);
+ if (U_FAILURE(status)) {
+ log_err("unum_toPattern fails: %s\n", u_errorName(status));
+ } else {
+ char bbuf[kBBufMax];
+ if (ulen > 0 && ubuf[0]==u'*') {
+ ubuf[kUBufMax-1] = 0; // ensure zero termination
+ u_austrncpy(bbuf, ubuf, kBBufMax);
+ log_err("unum_toPattern result should ignore padding but get %s\n", bbuf);
+ }
+ unum_applyPattern(unum, FALSE, ubuf, ulen, NULL, &status);
+ if (U_FAILURE(status)) {
+ log_err("unum_applyPattern fails: %s\n", u_errorName(status));
+ } else {
+ ulen = unum_formatDecimal(unum, "24", -1, ubuf, kUBufMax, NULL, &status);
+ if (U_FAILURE(status)) {
+ log_err("unum_formatDecimal fails: %s\n", u_errorName(status));
+ } else if (u_strcmp(ubuf, u"24") != 0) {
+ ubuf[kUBufMax-1] = 0; // ensure zero termination
+ u_austrncpy(bbuf, ubuf, kBBufMax);
+ log_err("unum_formatDecimal result expect 24 but get %s\n", bbuf);
+ }
+ }
+ }
+ }
+ unum_close(unum);
+ }
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
expect2(new DecimalFormat("*'😃'####.00", US), 1.1, "😃😃😃1.10");
}
+ @Test
+ public void TestIgnorePadding() {
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+ DecimalFormat fmt = new DecimalFormat("", dfs);
+ fmt.setGroupingUsed(false);
+ fmt.setFormatWidth(0);
+ fmt.setPadCharacter('*');
+ fmt.setPadPosition(0);
+ fmt.setMinimumIntegerDigits(0);
+ fmt.setMaximumIntegerDigits(8);
+ fmt.setMinimumFractionDigits(0);
+ fmt.setMaximumFractionDigits(0);
+ String pattern = fmt.toPattern();
+ if (pattern.startsWith("*")) {
+ errln("ERROR toPattern result should ignore padding but get \"" + pattern + "\"");
+ }
+ fmt.applyPattern(pattern);
+ String format = fmt.format(24);
+ if (!format.equals("24")) {
+ errln("ERROR format result expect 24 but get \"" + format + "\"");
+ }
+ }
+
/**
* Upgrade to alphaWorks
*/