ICU-20438 Fixes issues found in the no-data testing of ICU4C (BRS health check)
ICU-20438 Review feedback worked in.
diff --git a/icu4c/source/test/cintltst/uformattedvaluetst.c b/icu4c/source/test/cintltst/uformattedvaluetst.c
index b046880..a5e3786 100644
--- a/icu4c/source/test/cintltst/uformattedvaluetst.c
+++ b/icu4c/source/test/cintltst/uformattedvaluetst.c
@@ -194,6 +194,10 @@
UErrorCode* ec) {
int32_t length;
const UChar* actualString = ufmtval_getString(fv, &length, ec);
+ if (U_FAILURE(*ec)) {
+ assertIntEquals(message, 0, length);
+ return;
+ }
assertSuccess(message, ec);
// The string is guaranteed to be NUL-terminated.
int32_t actualLength = u_strlen(actualString);
diff --git a/icu4c/source/test/intltest/dtifmtts.cpp b/icu4c/source/test/intltest/dtifmtts.cpp
index 6955c53..5c610eb 100644
--- a/icu4c/source/test/intltest/dtifmtts.cpp
+++ b/icu4c/source/test/intltest/dtifmtts.cpp
@@ -1673,7 +1673,9 @@
const char16_t* message = u"FormattedDateInterval test 1";
const char16_t* expectedString = u"July 20 \u2013 25, 2018";
LocalPointer<Calendar> input1(Calendar::createInstance("en-GB", status));
+ if (status.errIfFailureAndReset()) { return; }
LocalPointer<Calendar> input2(Calendar::createInstance("en-GB", status));
+ if (status.errIfFailureAndReset()) { return; }
input1->set(2018, 6, 20);
input2->set(2018, 6, 25);
FormattedDateInterval result = fmt->formatToValue(*input1, *input2, status);
@@ -1704,7 +1706,9 @@
const char16_t* message = u"FormattedDateInterval with fallback format test 1";
const char16_t* expectedString = u"<< July 25, 2018 --- July 20, 2018 >>";
LocalPointer<Calendar> input1(Calendar::createInstance("en-GB", status));
+ if (status.errIfFailureAndReset()) { return; }
LocalPointer<Calendar> input2(Calendar::createInstance("en-GB", status));
+ if (status.errIfFailureAndReset()) { return; }
input1->set(2018, 6, 20);
input2->set(2018, 6, 25);
FormattedDateInterval result = fmt->formatToValue(*input1, *input2, status);
diff --git a/icu4c/source/test/intltest/formattedvaluetest.cpp b/icu4c/source/test/intltest/formattedvaluetest.cpp
index 0b84b4c..976a90b 100644
--- a/icu4c/source/test/intltest/formattedvaluetest.cpp
+++ b/icu4c/source/test/intltest/formattedvaluetest.cpp
@@ -212,8 +212,10 @@
// The temp string is guaranteed to be NUL-terminated
UnicodeString readOnlyAlias = fv.toTempString(status);
- assertEquals(baseMessage + u"NUL-terminated",
- 0, readOnlyAlias.getBuffer()[readOnlyAlias.length()]);
+ if (!status.errIfFailureAndReset()) {
+ assertEquals(baseMessage + u"NUL-terminated",
+ 0, readOnlyAlias.getBuffer()[readOnlyAlias.length()]);
+ }
// Check nextPosition over all fields
ConstrainedFieldPosition cfpos;
diff --git a/icu4c/source/test/intltest/listformattertest.cpp b/icu4c/source/test/intltest/listformattertest.cpp
index 952ef7d..763f933 100644
--- a/icu4c/source/test/intltest/listformattertest.cpp
+++ b/icu4c/source/test/intltest/listformattertest.cpp
@@ -544,6 +544,7 @@
void ListFormatterTest::TestFormattedValue() {
IcuTestErrorCode status(*this, "TestFormattedValue");
LocalPointer<ListFormatter> fmt(ListFormatter::createInstance("en", status));
+ if (status.errIfFailureAndReset()) { return; }
{
const char16_t* message = u"Field position test 1";
diff --git a/icu4c/source/test/intltest/measfmttest.cpp b/icu4c/source/test/intltest/measfmttest.cpp
index 71d8d2b..1b73f54 100644
--- a/icu4c/source/test/intltest/measfmttest.cpp
+++ b/icu4c/source/test/intltest/measfmttest.cpp
@@ -2684,7 +2684,9 @@
};
for (const auto& cas : cases) {
MeasureFormat mf(cas.locale, cas.width, status);
+ if (status.errIfFailureAndReset()) { return; }
Measure measure(25, cas.unitToAdopt, status);
+ if (status.errIfFailureAndReset()) { return; }
verifyFormat(cas.locale, mf, &measure, 1, cas.expected);
}
}
diff --git a/icu4c/source/test/intltest/numfmtst.cpp b/icu4c/source/test/intltest/numfmtst.cpp
index e79be75..26ae404 100644
--- a/icu4c/source/test/intltest/numfmtst.cpp
+++ b/icu4c/source/test/intltest/numfmtst.cpp
@@ -9472,6 +9472,7 @@
IcuTestErrorCode status(*this, "Test20348_CurrencyPrefixOverride");
LocalPointer<DecimalFormat> fmt(static_cast<DecimalFormat*>(
NumberFormat::createCurrencyInstance("en", status)));
+ if (status.errIfFailureAndReset()) { return; }
UnicodeString result;
assertEquals("Initial pattern",
u"¤#,##0.00", fmt->toPattern(result.remove()));
@@ -9507,6 +9508,7 @@
IcuTestErrorCode status(*this, "Test20358_GroupingInPattern");
LocalPointer<DecimalFormat> fmt(static_cast<DecimalFormat*>(
NumberFormat::createInstance("en", status)));
+ if (status.errIfFailureAndReset()) { return; }
UnicodeString result;
assertEquals("Initial pattern",
u"#,##0.###", fmt->toPattern(result.remove()));
@@ -9538,6 +9540,7 @@
{
LocalPointer<NumberFormat> nf(NumberFormat::createInstance(
"en", UNumberFormatStyle::UNUM_CURRENCY, status), status);
+ if (status.errIfFailureAndReset()) { return; }
assertEquals("symbol", u"¤1.10",
nf->format(1.1, result.remove(), status));
assertEquals("currency", u"XXX", nf->getCurrency());
@@ -9545,6 +9548,7 @@
{
LocalPointer<NumberFormat> nf(NumberFormat::createInstance(
"en", UNumberFormatStyle::UNUM_CURRENCY_ISO, status), status);
+ if (status.errIfFailureAndReset()) { return; }
assertEquals("iso_code", u"XXX 1.10",
nf->format(1.1, result.remove(), status));
assertEquals("currency", u"XXX", nf->getCurrency());
@@ -9552,6 +9556,7 @@
{
LocalPointer<NumberFormat> nf(NumberFormat::createInstance(
"en", UNumberFormatStyle::UNUM_CURRENCY_PLURAL, status), status);
+ if (status.errIfFailureAndReset()) { return; }
assertEquals("plural", u"1.10 (unknown currency)",
nf->format(1.1, result.remove(), status));
assertEquals("currency", u"XXX", nf->getCurrency());
diff --git a/icu4c/source/test/intltest/reldatefmttest.cpp b/icu4c/source/test/intltest/reldatefmttest.cpp
index f95e4bb..baccceb 100644
--- a/icu4c/source/test/intltest/reldatefmttest.cpp
+++ b/icu4c/source/test/intltest/reldatefmttest.cpp
@@ -1424,6 +1424,7 @@
IcuTestErrorCode status(*this, "TestRBNF");
LocalPointer<RuleBasedNumberFormat> rbnf(new RuleBasedNumberFormat(URBNF_SPELLOUT, "en-us", status));
+ if (status.errIfFailureAndReset()) { return; }
RelativeDateTimeFormatter fmt("en-us", rbnf.orphan(), status);
UnicodeString result;
assertEquals("format (direction)", "in five seconds",