From: Travis Keep Date: Tue, 12 Feb 2013 22:51:17 +0000 (+0000) Subject: ICU-9919 Add test that DateIntervalFormat.setDateIntervalInfo does not corrup the... X-Git-Tag: milestone-59-0-1~3138 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=003a138300d616af211eed94016b1b95c6923854;p=icu ICU-9919 Add test that DateIntervalFormat.setDateIntervalInfo does not corrup the cache. X-SVN-Rev: 33198 --- diff --git a/icu4c/source/test/intltest/dtifmtts.cpp b/icu4c/source/test/intltest/dtifmtts.cpp index 441a4bc6e89..e0d071f388e 100644 --- a/icu4c/source/test/intltest/dtifmtts.cpp +++ b/icu4c/source/test/intltest/dtifmtts.cpp @@ -138,6 +138,38 @@ void DateIntervalFormatTest::testAPI() { dataerrln("ERROR: getDateIntervalInfo/setDateIntervalInfo failed"); } + // We make sure that setDateIntervalInfo does not corrupt the cache. See ticket 9919. + status = U_ZERO_ERROR; + logln("Testing DateIntervalFormat setDateIntervalInfo"); + const Locale &enLocale = Locale::getEnglish(); + DateIntervalFormat* dif = DateIntervalFormat::createInstance("yMd", enLocale, status); + UnicodeString expected; + Calendar *fromTime = Calendar::createInstance(enLocale, status); + Calendar *toTime = Calendar::createInstance(enLocale, status); + FieldPosition pos = 0; + fromTime->set(2013, 3, 26); + toTime->set(2013, 3, 28); + dif->format(*fromTime, *toTime, expected, pos, status); + DateIntervalInfo* dii = new DateIntervalInfo(Locale::getEnglish(), status); + dii->setIntervalPattern(ctou("yMd"), UCAL_DATE, ctou("M/d/y \\u2013 d"), status); + dif->setDateIntervalInfo(*dii, status); + delete dii; + delete dif; + dif = DateIntervalFormat::createInstance("yMd", enLocale, status); + UnicodeString actual; + pos = 0; + dif->format(*fromTime, *toTime, actual, pos, status); + delete dif; + delete fromTime; + delete toTime; + if (U_FAILURE(status)) { + errln("Failure encountered: %s", u_errorName(status)); + return; + } + if (expected != actual) { + errln("DateIntervalFormat.setIntervalInfo should have no side effects."); + } + /* status = U_ZERO_ERROR; DateIntervalInfo* nonConstInf = inf->clone(); @@ -219,7 +251,7 @@ void DateIntervalFormatTest::testAPI() { Formattable formattable; formattable.setInt64(10); UnicodeString res; - FieldPosition pos = 0; + pos = 0; status = U_ZERO_ERROR; dtitvfmt->format(formattable, res, pos, status); if ( status != U_ILLEGAL_ARGUMENT_ERROR ) {