}
return TRUE;
} else if (tuple.output == "-0.0") {
- if (std::signbit(result.getDouble()) == 0 || result.getDouble() != 0) {
+ if (!std::signbit(result.getDouble()) || result.getDouble() != 0) {
appendErrorMessage.append(UnicodeString("Expected -0.0, but got: ") + result.getDouble());
return FALSE;
}
TESTCASE_AUTO(TestParsePercentRegression);
TESTCASE_AUTO(TestMultiplierWithScale);
TESTCASE_AUTO(TestFastFormatInt32);
+ TESTCASE_AUTO(TestParseNaN);
TESTCASE_AUTO_END;
}
UnicodeString original;
fmt->format(agent,original);
- assertEquals("Test Currency Usage 1", UnicodeString("PKR\u00A0124"), original);
+ assertEquals("Test Currency Usage 1", u"PKR\u00A0124", original);
// test the getter here
UCurrencyUsage curUsage = fmt->getCurrencyUsage();
UnicodeString cash_currency;
fmt->format(agent,cash_currency);
- assertEquals("Test Currency Usage 2", UnicodeString("PKR\u00A0124"), cash_currency);
+ assertEquals("Test Currency Usage 2", u"PKR\u00A0124", cash_currency);
delete fmt;
}
UnicodeString original_rounding;
fmt->format(agent, original_rounding);
- assertEquals("Test Currency Usage 3", UnicodeString("CA$123.57"), original_rounding);
+ assertEquals("Test Currency Usage 3", u"CA$123.57", original_rounding);
fmt->setCurrencyUsage(UCURR_USAGE_CASH, &status);
}else{
fmt = (DecimalFormat *) NumberFormat::createInstance(enUS_CAD, UNUM_CASH_CURRENCY, status);
UnicodeString cash_rounding_currency;
fmt->format(agent, cash_rounding_currency);
- assertEquals("Test Currency Usage 4", UnicodeString("CA$123.55"), cash_rounding_currency);
+ assertEquals("Test Currency Usage 4", u"CA$123.55", cash_rounding_currency);
delete fmt;
}
UnicodeString cur_original;
fmt->setCurrencyUsage(UCURR_USAGE_STANDARD, &status);
fmt->format(agent, cur_original);
- assertEquals("Test Currency Usage 5", UnicodeString("CA$123.57"), cur_original);
+ assertEquals("Test Currency Usage 5", u"CA$123.57", cur_original);
fmt->setCurrency(CUR_PKR, status);
assertSuccess("Set currency to PKR", status);
UnicodeString PKR_changed;
fmt->format(agent, PKR_changed);
- assertEquals("Test Currency Usage 6", UnicodeString("PKR\u00A0124"), PKR_changed);
+ assertEquals("Test Currency Usage 6", u"PKR\u00A0124", PKR_changed);
delete fmt;
}
}
}
}
+void NumberFormatTest::TestParseNaN() {
+ IcuTestErrorCode status(*this, "TestParseNaN");
+
+ DecimalFormat df("0", { "en", status }, status);
+ Formattable parseResult;
+ df.parse(u"NaN", parseResult, status);
+ assertEquals("NaN should parse successfully", NAN, parseResult.getDouble());
+ assertFalse("Result NaN should be positive", std::signbit(parseResult.getDouble()));
+ UnicodeString formatResult;
+ df.format(parseResult.getDouble(), formatResult);
+ assertEquals("NaN should round-trip", u"NaN", formatResult);
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
DecimalFormatSymbols sym(Locale::getUS(), status);
UnicodeString customDecSeperator("S");
- Verify(34.5, (UnicodeString)"00.00", sym, (UnicodeString)"34.50");
+ Verify(34.5, u"00.00", sym, u"34.50");
sym.setSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol, customDecSeperator);
- Verify(34.5, (UnicodeString)"00.00", sym, (UnicodeString)"34S50");
- sym.setSymbol(DecimalFormatSymbols::kPercentSymbol, (UnicodeString)"P");
- Verify(34.5, (UnicodeString)"00 %", sym, (UnicodeString)"3450 P");
- sym.setSymbol(DecimalFormatSymbols::kCurrencySymbol, (UnicodeString)"D");
- Verify(34.5, CharsToUnicodeString("\\u00a4##.##"), sym, (UnicodeString)"DÂ 34.50");
- sym.setSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol, (UnicodeString)"|");
- Verify(3456.5, (UnicodeString)"0,000.##", sym, (UnicodeString)"3|456S5");
+ Verify(34.5, u"00.00", sym, u"34S50");
+ sym.setSymbol(DecimalFormatSymbols::kPercentSymbol, u"P");
+ Verify(34.5, u"00 %", sym, u"3450 P");
+ sym.setSymbol(DecimalFormatSymbols::kCurrencySymbol, u"D");
+ Verify(34.5, u"\u00a4##.##", sym, u"D\u00a034.50");
+ sym.setSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol, u"|");
+ Verify(3456.5, u"0,000.##", sym, u"3|456S5");
}