if (U_FAILURE(status)) { return; }
if (fSameFormatters) {
int32_t length = NumberFormatterImpl::writeNumber(micros1, data.quantity1, data.string, 0, status);
- length += NumberFormatterImpl::writeAffixes(micros1, data.string, 0, length, status);
- fApproximatelyModifier.apply(data.string, 0, length, status);
+ // HEURISTIC: Desired modifier order: inner, middle, approximately, outer.
+ length += micros1.modInner->apply(data.string, 0, length, status);
+ length += micros1.modMiddle->apply(data.string, 0, length, status);
+ length += fApproximatelyModifier.apply(data.string, 0, length, status);
+ micros1.modOuter->apply(data.string, 0, length, status);
} else {
formatRange(data, micros1, micros2, status);
}
u"5,000–5,000,000");
assertFormatRange(
- u"Identity fallback Single Value",
+ u"Identity fallback Single Value",
NumberRangeFormatter::with().identityFallback(UNUM_IDENTITY_FALLBACK_SINGLE_VALUE),
Locale("en-us"),
u"1–5",
u"~5K",
u"5K",
u"5K – 5M");
+
+ assertFormatRange(
+ u"Approximately in middle of unit string",
+ NumberRangeFormatter::with().numberFormatterBoth(
+ NumberFormatter::with().unit(FAHRENHEIT).unitWidth(UNUM_UNIT_WIDTH_FULL_NAME)),
+ Locale("zh-Hant"),
+ u"華氏 1-5 度",
+ u"華氏 ~5 度",
+ u"華氏 ~5 度",
+ u"華氏 0-3 度",
+ u"華氏 ~0 度",
+ u"華氏 3-3,000 度",
+ u"華氏 3,000-5,000 度",
+ u"華氏 4,999-5,001 度",
+ u"華氏 ~5,000 度",
+ u"華氏 5,000-5,000,000 度");
}
void NumberRangeFormatterTest::testDifferentFormatters() {
MicroProps micros1, MicroProps micros2) {
if (fSameFormatters) {
int length = NumberFormatterImpl.writeNumber(micros1, quantity1, string, 0);
- length += NumberFormatterImpl.writeAffixes(micros1, string, 0, length);
- fApproximatelyModifier.apply(string, 0, length);
+ // HEURISTIC: Desired modifier order: inner, middle, approximately, outer.
+ length += micros1.modInner.apply(string, 0, length);
+ length += micros1.modMiddle.apply(string, 0, length);
+ length += fApproximatelyModifier.apply(string, 0, length);
+ micros1.modOuter.apply(string, 0, length);
} else {
formatRange(quantity1, quantity2, string, micros1, micros2);
}
"~5K",
"5K",
"5K – 5M");
+
+ assertFormatRange(
+ "Approximately in middle of unit string",
+ NumberRangeFormatter.with().numberFormatterBoth(
+ NumberFormatter.with().unit(MeasureUnit.FAHRENHEIT).unitWidth(UnitWidth.FULL_NAME)),
+ new ULocale("zh-Hant"),
+ "華氏 1-5 度",
+ "華氏 ~5 度",
+ "華氏 ~5 度",
+ "華氏 0-3 度",
+ "華氏 ~0 度",
+ "華氏 3-3,000 度",
+ "華氏 3,000-5,000 度",
+ "華氏 4,999-5,001 度",
+ "華氏 ~5,000 度",
+ "華氏 5,000-5,000,000 度");
}
@Test