]> granicus.if.org Git - icu/commitdiff
ICU-13358 No-data test fixes (cf. BRS task).
authorNorbert Runge <nrunge@google.com>
Fri, 6 Oct 2017 23:11:11 +0000 (23:11 +0000)
committerNorbert Runge <nrunge@google.com>
Fri, 6 Oct 2017 23:11:11 +0000 (23:11 +0000)
X-SVN-Rev: 40599

icu4c/source/i18n/msgfmt.cpp
icu4c/source/i18n/number_compact.cpp
icu4c/source/i18n/number_fluent.cpp
icu4c/source/i18n/number_formatimpl.cpp
icu4c/source/test/intltest/normconf.cpp
icu4c/source/test/intltest/numbertest_api.cpp
icu4c/source/test/intltest/numbertest_patternmodifier.cpp
icu4c/source/test/intltest/numfmtst.cpp
icu4c/source/test/intltest/rbbitst.cpp
icu4c/source/test/intltest/tzfmttst.cpp

index 94a0286196a92b80c4d62dd01bde8f5d6b728dde..064585665ae5e629b2a79789f610a09eaaf353a4 100644 (file)
@@ -1954,7 +1954,10 @@ UnicodeString MessageFormat::PluralSelectorProvider::select(void *ctx, double nu
         context.formatter = msgFormat.getDefaultNumberFormat(ec);
         context.forReplaceNumber = TRUE;
     }
-    U_ASSERT(context.number.getDouble(ec) == number);  // argument number minus the offset
+    if (context.number.getDouble(ec) != number) {
+        ec = U_INTERNAL_PROGRAM_ERROR;
+        return UnicodeString(FALSE, OTHER_STRING, 5);
+    }
     context.formatter->format(context.number, context.numberString, ec);
     const DecimalFormat *decFmt = dynamic_cast<const DecimalFormat *>(context.formatter);
     if(decFmt != NULL) {
index df3b250f0d10065cb9d97207a666ae0d5e8c9e66..db83ca748e68c20b6680a789b6e5a5ae9d37b19f 100644 (file)
@@ -60,6 +60,7 @@ void CompactData::populate(const Locale &locale, const char *nsName, CompactStyl
                            CompactType compactType, UErrorCode &status) {
     CompactDataSink sink(*this);
     LocalUResourceBundlePointer rb(ures_open(nullptr, locale.getName(), &status));
+    if (U_FAILURE(status)) { return; }
 
     bool nsIsLatn = strcmp(nsName, "latn") == 0;
     bool compactIsShort = compactStyle == CompactStyle::UNUM_SHORT;
index c37f684c3c0f528320ce1f22424d7b53dfbb76c8..1a29eb8c177e7013db8ed410474f560274dbe8e1 100644 (file)
@@ -321,20 +321,24 @@ LocalizedNumberFormatter::formatImpl(impl::NumberFormatterResults *results, UErr
 }
 
 UnicodeString FormattedNumber::toString() const {
+    if (fResults == nullptr) { return {}; }
     return fResults->string.toUnicodeString();
 }
 
 Appendable &FormattedNumber::appendTo(Appendable &appendable) {
+    if (fResults == nullptr) { return appendable; }
     appendable.appendString(fResults->string.chars(), fResults->string.length());
     return appendable;
 }
 
 void FormattedNumber::populateFieldPosition(FieldPosition &fieldPosition, UErrorCode &status) {
+    if (fResults == nullptr) { return; }
     fResults->string.populateFieldPosition(fieldPosition, 0, status);
 }
 
 void
 FormattedNumber::populateFieldPositionIterator(FieldPositionIterator &iterator, UErrorCode &status) {
+    if (fResults == nullptr) { return; }
     fResults->string.populateFieldPositionIterator(iterator, status);
 }
 
index 6e9d287538a45275af8383b67a6a8c180700b264..0741a9dd11648accbc3aefd35a85784103cfb925 100644 (file)
@@ -69,6 +69,7 @@ const char16_t *getPatternForStyle(const Locale &locale, const char *nsName, Cld
             break;
     }
     LocalUResourceBundlePointer res(ures_open(nullptr, locale.getName(), &status));
+    if (U_FAILURE(status)) { return u""; }
 
     // Attempt to get the pattern with the native numbering system.
     UErrorCode localStatus = U_ZERO_ERROR;
@@ -181,7 +182,7 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps &macros, bool safe,
         // Give ownership to the function scope.
         nsLocal.adoptInstead(ns);
     }
-    const char *nsName = ns->getName();
+    const char *nsName = U_SUCCESS(status) ? ns->getName() : "latn";
 
     // Load and parse the pattern string.  It is used for grouping sizes and affixes only.
     CldrPatternStyle patternStyle;
index 4d2a9f76f071d64790afa0eb47016d6825b77689..62710dbb46df0c047f3349981a07f857c838986d 100644 (file)
@@ -43,7 +43,7 @@ NormalizerConformanceTest::NormalizerConformanceTest() :
     nfd = Normalizer2::getNFDInstance(errorCode);
     nfkc = Normalizer2::getNFKCInstance(errorCode);
     nfkd = Normalizer2::getNFKDInstance(errorCode);
-    U_ASSERT(U_SUCCESS(errorCode));
+    assertSuccess("", errorCode, true, __FILE__, __LINE__);
 }
 
 NormalizerConformanceTest::~NormalizerConformanceTest() {}
@@ -368,19 +368,20 @@ UBool NormalizerConformanceTest::checkConformance(const UnicodeString* field,
     if(!Normalizer::isNormalized(field[3], UNORM_NFKC, options, status)) {
         dataerrln("Normalizer error: isNormalized(NFKC(s), UNORM_NFKC) is FALSE");
         pass = FALSE;
-    }
-    if(options==0 && !isNormalizedUTF8(*nfkc, field[3], status)) {
-        dataerrln("Normalizer error: nfkc.isNormalizedUTF8(NFKC(s)) is FALSE");
-        pass = FALSE;
-    }
-    if(field[0]!=field[3]) {
-        if(Normalizer::isNormalized(field[0], UNORM_NFKC, options, status)) {
-            errln("Normalizer error: isNormalized(s, UNORM_NFKC) is TRUE");
+    } else {
+        if(options==0 && !isNormalizedUTF8(*nfkc, field[3], status)) {
+            dataerrln("Normalizer error: nfkc.isNormalizedUTF8(NFKC(s)) is FALSE");
             pass = FALSE;
         }
-        if(options==0 && isNormalizedUTF8(*nfkc, field[0], status)) {
-            errln("Normalizer error: nfkc.isNormalizedUTF8(s) is TRUE");
-            pass = FALSE;
+        if(field[0]!=field[3]) {
+            if(Normalizer::isNormalized(field[0], UNORM_NFKC, options, status)) {
+                errln("Normalizer error: isNormalized(s, UNORM_NFKC) is TRUE");
+                pass = FALSE;
+            }
+            if(options==0 && isNormalizedUTF8(*nfkc, field[0], status)) {
+                errln("Normalizer error: nfkc.isNormalizedUTF8(s) is TRUE");
+                pass = FALSE;
+            }
         }
     }
 
index b8420ed12af0c5d69a1d1bfadbc51317dab476d6..b936f5d51cff9db73169d9db9da8e0b9a51f0008 100644 (file)
@@ -17,7 +17,6 @@ UErrorCode globalNumberFormatterApiTestStatus = U_ZERO_ERROR;
 
 NumberFormatterApiTest::NumberFormatterApiTest()
         : NumberFormatterApiTest(globalNumberFormatterApiTestStatus) {
-    U_ASSERT(U_SUCCESS(globalNumberFormatterApiTestStatus));
 }
 
 NumberFormatterApiTest::NumberFormatterApiTest(UErrorCode &status)
@@ -28,6 +27,10 @@ NumberFormatterApiTest::NumberFormatterApiTest(UErrorCode &status)
                 MYANMAR_SYMBOLS(Locale("my"), status) {
 
     MeasureUnit *unit = MeasureUnit::createMeter(status);
+    if (U_FAILURE(status)) {
+        dataerrln("%s %d status = %s", __FILE__, __LINE__, u_errorName(status));
+        return;
+    }
     METER = *unit;
     delete unit;
     unit = MeasureUnit::createDay(status);
index 323f215fbf4507cd5a05bc25ded3e67b04daffe0..f30203ea80c7e0f21f4dd20969d168ced23908be 100644 (file)
@@ -79,6 +79,7 @@ void PatternModifierTest::testMutableEqualsImmutable() {
     DecimalFormatSymbols symbols(Locale::getEnglish(), status);
     CurrencyUnit currency(u"USD", status);
     assertSuccess("Spot 2", status);
+    if (U_FAILURE(status)) { return; }
     mod.setSymbols(&symbols, currency, UNUM_UNIT_WIDTH_SHORT, nullptr);
     DecimalQuantity fq;
     fq.setToInt(1);
index fabc1d0b005239e10eeb7ac0564fb44206b22f8a..410566416625718856987a680f293a9939818f8c 100644 (file)
@@ -8810,8 +8810,12 @@ void NumberFormatTest::Test13327_numberingSystemBufferOverflow() {
 
 void NumberFormatTest::Test13391_chakmaParsing() {
     UErrorCode status = U_ZERO_ERROR;
-    LocalPointer<DecimalFormat> df(static_cast<DecimalFormat*>(
+    LocalPointer<DecimalFormat> df(dynamic_cast<DecimalFormat*>(
         NumberFormat::createInstance(Locale("ccp"), status)));
+    if (df == nullptr) {
+        dataerrln("%s %d Chakma df is null",  __FILE__, __LINE__);
+        return;
+    }
     const UChar* expected = u"\U00011137\U00011138,\U00011139\U0001113A\U0001113B";
     UnicodeString actual;
     df->format(12345, actual, status);
index aa6091183bae4749c05a6cbdaa4088e6269bac51..2503862793229acad02e99f3cc02d91efd97147a 100644 (file)
@@ -4818,8 +4818,12 @@ void RBBITest::TestBug12519() {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<RuleBasedBreakIterator> biEn((RuleBasedBreakIterator *)BreakIterator::createWordInstance(Locale::getEnglish(), status));
     LocalPointer<RuleBasedBreakIterator> biFr((RuleBasedBreakIterator *)BreakIterator::createWordInstance(Locale::getFrance(), status));
-    assertSuccess(WHERE, status);
+    if (!assertSuccess(WHERE, status)) {
+        dataerrln("%s %d status = %s", __FILE__, __LINE__, u_errorName(status));
+        return;
+    }
     assertTrue(WHERE, Locale::getEnglish() == biEn->getLocale(ULOC_VALID_LOCALE, status));
+    
     assertTrue(WHERE, Locale::getFrench() == biFr->getLocale(ULOC_VALID_LOCALE, status));
     assertTrue(WHERE "Locales do not participate in BreakIterator equality.", *biEn == *biFr);
 
index 25a9aaa7fc10b5166d34c1a13912fd926b20644a..9de6261e5875e402600583adc47bf356b086ea41 100644 (file)
@@ -1261,6 +1261,10 @@ void
 TimeZoneFormatTest::TestFormatTZDBNamesAllZoneCoverage(void) {
     UErrorCode status = U_ZERO_ERROR;
     LocalPointer<StringEnumeration> tzids(TimeZone::createEnumeration());
+    if (tzids.getAlias() == nullptr) {
+        dataerrln("%s %d tzids is null", __FILE__, __LINE__);
+        return;
+    }
     const UnicodeString *tzid;
     LocalPointer<TimeZoneNames> tzdbNames(TimeZoneNames::createTZDBInstance(Locale("en"), status));
     UDate now = Calendar::getNow();