From b8364d38ed71814ea863009da795ed444b50eb2c Mon Sep 17 00:00:00 2001 From: Norbert Runge Date: Wed, 27 Feb 2019 17:54:49 -0800 Subject: [PATCH] ICU-20438 Fixes issues found in the no-data testing of ICU4C (BRS health check) ICU-20438 Review feedback worked in. --- icu4c/source/test/cintltst/uformattedvaluetst.c | 4 ++++ icu4c/source/test/intltest/dtifmtts.cpp | 4 ++++ icu4c/source/test/intltest/formattedvaluetest.cpp | 6 ++++-- icu4c/source/test/intltest/listformattertest.cpp | 1 + icu4c/source/test/intltest/measfmttest.cpp | 2 ++ icu4c/source/test/intltest/numfmtst.cpp | 5 +++++ icu4c/source/test/intltest/reldatefmttest.cpp | 1 + 7 files changed, 21 insertions(+), 2 deletions(-) diff --git a/icu4c/source/test/cintltst/uformattedvaluetst.c b/icu4c/source/test/cintltst/uformattedvaluetst.c index b046880114b..a5e37866459 100644 --- a/icu4c/source/test/cintltst/uformattedvaluetst.c +++ b/icu4c/source/test/cintltst/uformattedvaluetst.c @@ -194,6 +194,10 @@ static void checkFormattedValueString( 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 6955c532239..5c610ebb3ef 100644 --- a/icu4c/source/test/intltest/dtifmtts.cpp +++ b/icu4c/source/test/intltest/dtifmtts.cpp @@ -1673,7 +1673,9 @@ void DateIntervalFormatTest::testFormattedDateInterval() { const char16_t* message = u"FormattedDateInterval test 1"; const char16_t* expectedString = u"July 20 \u2013 25, 2018"; LocalPointer input1(Calendar::createInstance("en-GB", status)); + if (status.errIfFailureAndReset()) { return; } LocalPointer 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 @@ void DateIntervalFormatTest::testFormattedDateInterval() { const char16_t* message = u"FormattedDateInterval with fallback format test 1"; const char16_t* expectedString = u"<< July 25, 2018 --- July 20, 2018 >>"; LocalPointer input1(Calendar::createInstance("en-GB", status)); + if (status.errIfFailureAndReset()) { return; } LocalPointer 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 0b84b4cb2f3..976a90ba38e 100644 --- a/icu4c/source/test/intltest/formattedvaluetest.cpp +++ b/icu4c/source/test/intltest/formattedvaluetest.cpp @@ -212,8 +212,10 @@ void IntlTestWithFieldPosition::checkMixedFormattedValue( // 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 952ef7dc11b..763f933095e 100644 --- a/icu4c/source/test/intltest/listformattertest.cpp +++ b/icu4c/source/test/intltest/listformattertest.cpp @@ -544,6 +544,7 @@ void ListFormatterTest::TestOutOfOrderPatterns() { void ListFormatterTest::TestFormattedValue() { IcuTestErrorCode status(*this, "TestFormattedValue"); LocalPointer 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 71d8d2bafa4..1b73f541559 100644 --- a/icu4c/source/test/intltest/measfmttest.cpp +++ b/icu4c/source/test/intltest/measfmttest.cpp @@ -2684,7 +2684,9 @@ void MeasureFormatTest::Test20332_PersonUnits() { }; 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 e79be759ba0..26ae4046459 100644 --- a/icu4c/source/test/intltest/numfmtst.cpp +++ b/icu4c/source/test/intltest/numfmtst.cpp @@ -9472,6 +9472,7 @@ void NumberFormatTest::Test20348_CurrencyPrefixOverride() { IcuTestErrorCode status(*this, "Test20348_CurrencyPrefixOverride"); LocalPointer fmt(static_cast( NumberFormat::createCurrencyInstance("en", status))); + if (status.errIfFailureAndReset()) { return; } UnicodeString result; assertEquals("Initial pattern", u"¤#,##0.00", fmt->toPattern(result.remove())); @@ -9507,6 +9508,7 @@ void NumberFormatTest::Test20358_GroupingInPattern() { IcuTestErrorCode status(*this, "Test20358_GroupingInPattern"); LocalPointer fmt(static_cast( NumberFormat::createInstance("en", status))); + if (status.errIfFailureAndReset()) { return; } UnicodeString result; assertEquals("Initial pattern", u"#,##0.###", fmt->toPattern(result.remove())); @@ -9538,6 +9540,7 @@ void NumberFormatTest::Test13731_DefaultCurrency() { { LocalPointer 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 @@ void NumberFormatTest::Test13731_DefaultCurrency() { { LocalPointer 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 @@ void NumberFormatTest::Test13731_DefaultCurrency() { { LocalPointer 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 f95e4bbc24d..baccceb33cd 100644 --- a/icu4c/source/test/intltest/reldatefmttest.cpp +++ b/icu4c/source/test/intltest/reldatefmttest.cpp @@ -1424,6 +1424,7 @@ void RelativeDateTimeFormatterTest::TestRBNF() { IcuTestErrorCode status(*this, "TestRBNF"); LocalPointer 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", -- 2.50.1