+void DateIntervalFormatTest::testSetIntervalPatternNoSideEffect() {
+ UErrorCode ec = U_ZERO_ERROR;
+ LocalPointer<DateIntervalInfo> dtitvinf(new DateIntervalInfo(ec));
+ if (U_FAILURE(ec)) {
+ errln("Failure encountered: %s", u_errorName(ec));
+ return;
+ }
+ UnicodeString expected;
+ dtitvinf->getIntervalPattern(ctou("yMd"), UCAL_DATE, expected, ec);
+ dtitvinf->setIntervalPattern(ctou("yMd"), UCAL_DATE, ctou("M/d/y \\u2013 d"), ec);
+ if (U_FAILURE(ec)) {
+ errln("Failure encountered: %s", u_errorName(ec));
+ return;
+ }
+ dtitvinf.adoptInstead(new DateIntervalInfo(ec));
+ if (U_FAILURE(ec)) {
+ errln("Failure encountered: %s", u_errorName(ec));
+ return;
+ }
+ UnicodeString actual;
+ dtitvinf->getIntervalPattern(ctou("yMd"), UCAL_DATE, actual, ec);
+ if (U_FAILURE(ec)) {
+ errln("Failure encountered: %s", u_errorName(ec));
+ return;
+ }
+ if (expected != actual) {
+ errln("DateIntervalInfo.setIntervalPattern should have no side effects.");
+ }
+}
+
+void DateIntervalFormatTest::testYearFormats() {
+ const Locale &enLocale = Locale::getEnglish();
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> fromTime(Calendar::createInstance(enLocale, status));
+ LocalPointer<Calendar> toTime(Calendar::createInstance(enLocale, status));
+ if (U_FAILURE(status)) {
+ errln("Failure encountered: %s", u_errorName(status));
+ return;
+ }
+ // April 26, 113. Three digit year so that we can test 2 digit years;
+ // 4 digit years with padded 0's and full years.
+ fromTime->set(113, 3, 26);
+ // April 28, 113.
+ toTime->set(113, 3, 28);
+ {
+ LocalPointer<DateIntervalFormat> dif(DateIntervalFormat::createInstance("yyyyMd", enLocale, status));
+ if (U_FAILURE(status)) {
+ dataerrln("Failure encountered: %s", u_errorName(status));
+ return;
+ }
+ UnicodeString actual;
+ UnicodeString expected(ctou("4/26/0113 \\u2013 4/28/0113"));
+ FieldPosition pos = 0;
+ dif->format(*fromTime, *toTime, actual, pos, status);
+ if (U_FAILURE(status)) {
+ errln("Failure encountered: %s", u_errorName(status));
+ return;
+ }
+ if (actual != expected) {
+ errln("Expected " + expected + ", got: " + actual);
+ }
+ }
+ {
+ LocalPointer<DateIntervalFormat> dif(DateIntervalFormat::createInstance("yyMd", enLocale, status));
+ if (U_FAILURE(status)) {
+ errln("Failure encountered: %s", u_errorName(status));
+ return;
+ }
+ UnicodeString actual;
+ UnicodeString expected(ctou("4/26/13 \\u2013 4/28/13"));
+ FieldPosition pos = 0;
+ dif->format(*fromTime, *toTime, actual, pos, status);
+ if (U_FAILURE(status)) {
+ errln("Failure encountered: %s", u_errorName(status));
+ return;
+ }
+ if (actual != expected) {
+ errln("Expected " + expected + ", got: " + actual);
+ }
+ }
+ {
+ LocalPointer<DateIntervalFormat> dif(DateIntervalFormat::createInstance("yMd", enLocale, status));
+ if (U_FAILURE(status)) {
+ errln("Failure encountered: %s", u_errorName(status));
+ return;
+ }
+ UnicodeString actual;
+ UnicodeString expected(ctou("4/26/113 \\u2013 4/28/113"));
+ FieldPosition pos = 0;
+ dif->format(*fromTime, *toTime, actual, pos, status);
+ if (U_FAILURE(status)) {
+ errln("Failure encountered: %s", u_errorName(status));
+ return;
+ }
+ if (actual != expected) {
+ errln("Expected " + expected + ", got: " + actual);
+ }
+ }
+}
+