Index: source/test/intltest/caltest.cpp |
diff --git a/source/test/intltest/caltest.cpp b/source/test/intltest/caltest.cpp |
index 6fcd3a636662abb328dc06240d89d64650448c2d..02f6b78899e1d4acf10842917859daa8fb546ed4 100644 |
--- a/source/test/intltest/caltest.cpp |
+++ b/source/test/intltest/caltest.cpp |
@@ -1,6 +1,6 @@ |
/************************************************************************ |
* COPYRIGHT: |
- * Copyright (c) 1997-2013, International Business Machines Corporation |
+ * Copyright (c) 1997-2014, International Business Machines Corporation |
* and others. All Rights Reserved. |
************************************************************************/ |
#include "unicode/utypes.h" |
@@ -31,6 +31,14 @@ |
errln("%s:%d: Test failure. status=%s", __FILE__, __LINE__, u_errorName(status)); \ |
} return;}} |
+#define TEST_CHECK_STATUS_LOCALE(testlocale) { \ |
+ if (U_FAILURE(status)) { \ |
+ if (status == U_MISSING_RESOURCE_ERROR) { \ |
+ dataerrln("%s:%d: Test failure, locale %s. status=%s", __FILE__, __LINE__, testlocale, u_errorName(status)); \ |
+ } else { \ |
+ errln("%s:%d: Test failure, locale %s. status=%s", __FILE__, __LINE__, testlocale, u_errorName(status)); \ |
+ } return;}} |
+ |
#define TEST_ASSERT(expr) {if ((expr)==FALSE) {errln("%s:%d: Test failure \n", __FILE__, __LINE__);};} |
// ***************************************************************************** |
@@ -298,6 +306,27 @@ void CalendarTest::runIndexedTest( int32_t index, UBool exec, const char* &name, |
TestIslamicTabularDates(); |
} |
break; |
+ case 33: |
+ name = "TestHebrewMonthValidation"; |
+ if(exec) { |
+ logln("TestHebrewMonthValidation---"); logln(""); |
+ TestHebrewMonthValidation(); |
+ } |
+ break; |
+ case 34: |
+ name = "TestWeekData"; |
+ if(exec) { |
+ logln("TestWeekData---"); logln(""); |
+ TestWeekData(); |
+ } |
+ break; |
+ case 35: |
+ name = "TestAddAcrossZoneTransition"; |
+ if(exec) { |
+ logln("TestAddAcrossZoneTransition---"); logln(""); |
+ TestAddAcrossZoneTransition(); |
+ } |
+ break; |
default: name = ""; break; |
} |
} |
@@ -353,12 +382,12 @@ CalendarTest::TestGenericAPI() |
SimpleTimeZone *zone = new SimpleTimeZone(tzoffset, tzid); |
Calendar *cal = Calendar::createInstance(zone->clone(), status); |
- if (failure(status, "Calendar::createInstance", TRUE)) return; |
+ if (failure(status, "Calendar::createInstance #1", TRUE)) return; |
if (*zone != cal->getTimeZone()) errln("FAIL: Calendar::getTimeZone failed"); |
Calendar *cal2 = Calendar::createInstance(cal->getTimeZone(), status); |
- if (failure(status, "Calendar::createInstance")) return; |
+ if (failure(status, "Calendar::createInstance #2")) return; |
cal->setTime(when, status); |
cal2->setTime(when, status); |
if (failure(status, "Calendar::setTime")) return; |
@@ -503,17 +532,20 @@ CalendarTest::TestGenericAPI() |
for (i=0; i<count; ++i) |
{ |
cal = Calendar::createInstance(loc[i], status); |
- if (failure(status, "Calendar::createInstance")) return; |
+ if (U_FAILURE(status)) { |
+ errcheckln(status, UnicodeString("FAIL: Calendar::createInstance #3, locale ") + loc[i].getName() + " , error " + u_errorName(status)); |
+ return; |
+ } |
delete cal; |
} |
} |
cal = Calendar::createInstance(TimeZone::createDefault(), Locale::getEnglish(), status); |
- if (failure(status, "Calendar::createInstance")) return; |
+ if (failure(status, "Calendar::createInstance #4")) return; |
delete cal; |
cal = Calendar::createInstance(*zone, Locale::getEnglish(), status); |
- if (failure(status, "Calendar::createInstance")) return; |
+ if (failure(status, "Calendar::createInstance #5")) return; |
delete cal; |
GregorianCalendar *gc = new GregorianCalendar(*zone, status); |
@@ -555,7 +587,7 @@ CalendarTest::TestGenericAPI() |
/* Code coverage for Calendar class. */ |
cal = Calendar::createInstance(status); |
- if (failure(status, "Calendar::createInstance")) { |
+ if (failure(status, "Calendar::createInstance #6")) { |
return; |
}else { |
((Calendar *)cal)->roll(UCAL_HOUR, (int32_t)100, status); |
@@ -569,7 +601,7 @@ CalendarTest::TestGenericAPI() |
status = U_ZERO_ERROR; |
cal = Calendar::createInstance(Locale("he_IL@calendar=hebrew"), status); |
- if (failure(status, "Calendar::createInstance")) { |
+ if (failure(status, "Calendar::createInstance #7")) { |
return; |
} else { |
cal->roll(Calendar::MONTH, (int32_t)100, status); |
@@ -2408,12 +2440,13 @@ CalendarTest::TestAmbiguousWallTimeAPIs(void) { |
class CalFields { |
public: |
- CalFields(int32_t year, int32_t month, int32_t day, int32_t hour, int32_t min, int32_t sec); |
+ CalFields(int32_t year, int32_t month, int32_t day, int32_t hour, int32_t min, int32_t sec, int32_t ms = 0); |
CalFields(const Calendar& cal, UErrorCode& status); |
void setTo(Calendar& cal) const; |
char* toString(char* buf, int32_t len) const; |
UBool operator==(const CalFields& rhs) const; |
UBool operator!=(const CalFields& rhs) const; |
+ UBool isEquivalentTo(const Calendar& cal, UErrorCode& status) const; |
private: |
int32_t year; |
@@ -2422,10 +2455,11 @@ private: |
int32_t hour; |
int32_t min; |
int32_t sec; |
+ int32_t ms; |
}; |
-CalFields::CalFields(int32_t year, int32_t month, int32_t day, int32_t hour, int32_t min, int32_t sec) |
- : year(year), month(month), day(day), hour(hour), min(min), sec(sec) { |
+CalFields::CalFields(int32_t year, int32_t month, int32_t day, int32_t hour, int32_t min, int32_t sec, int32_t ms) |
+ : year(year), month(month), day(day), hour(hour), min(min), sec(sec), ms(ms) { |
} |
CalFields::CalFields(const Calendar& cal, UErrorCode& status) { |
@@ -2435,18 +2469,20 @@ CalFields::CalFields(const Calendar& cal, UErrorCode& status) { |
hour = cal.get(UCAL_HOUR_OF_DAY, status); |
min = cal.get(UCAL_MINUTE, status); |
sec = cal.get(UCAL_SECOND, status); |
+ ms = cal.get(UCAL_MILLISECOND, status); |
} |
void |
CalFields::setTo(Calendar& cal) const { |
cal.clear(); |
cal.set(year, month - 1, day, hour, min, sec); |
+ cal.set(UCAL_MILLISECOND, ms); |
} |
char* |
CalFields::toString(char* buf, int32_t len) const { |
char local[32]; |
- sprintf(local, "%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, min, sec); |
+ sprintf(local, "%04d-%02d-%02d %02d:%02d:%02d.%03d", year, month, day, hour, min, sec, ms); |
uprv_strncpy(buf, local, len - 1); |
buf[len - 1] = 0; |
return buf; |
@@ -2459,7 +2495,8 @@ CalFields::operator==(const CalFields& rhs) const { |
&& day == rhs.day |
&& hour == rhs.hour |
&& min == rhs.min |
- && sec == rhs.sec; |
+ && sec == rhs.sec |
+ && ms == rhs.ms; |
} |
UBool |
@@ -2467,6 +2504,17 @@ CalFields::operator!=(const CalFields& rhs) const { |
return !(*this == rhs); |
} |
+UBool |
+CalFields::isEquivalentTo(const Calendar& cal, UErrorCode& status) const { |
+ return year == cal.get(UCAL_YEAR, status) |
+ && month == cal.get(UCAL_MONTH, status) + 1 |
+ && day == cal.get(UCAL_DAY_OF_MONTH, status) |
+ && hour == cal.get(UCAL_HOUR_OF_DAY, status) |
+ && min == cal.get(UCAL_MINUTE, status) |
+ && sec == cal.get(UCAL_SECOND, status) |
+ && ms == cal.get(UCAL_MILLISECOND, status); |
+} |
+ |
typedef struct { |
const char* tzid; |
const CalFields in; |
@@ -2771,7 +2819,7 @@ void CalendarTest::TestIslamicUmAlQura() { |
UErrorCode status = U_ZERO_ERROR; |
Locale islamicLoc("ar_SA@calendar=islamic-umalqura"); |
Calendar* tstCal = Calendar::createInstance(islamicLoc, status); |
- |
+ |
IslamicCalendar* iCal = (IslamicCalendar*)tstCal; |
if(strcmp(iCal->getType(), "islamic-umalqura") != 0) { |
errln("wrong type of calendar created - %s", iCal->getType()); |
@@ -2840,8 +2888,8 @@ void CalendarTest::TestIslamicUmAlQura() { |
int32_t is_month = is_cal->get(UCAL_MONTH,status); |
int32_t is_year = is_cal->get(UCAL_YEAR,status); |
TEST_CHECK_STATUS; |
- if(is_day != 29 || is_month != IslamicCalendar::RABI_2 || is_year != 1395) |
- errln("unexpected conversion date month %i not %i or day %i not 20 or year %i not 1395", is_month, IslamicCalendar::RABI_2, is_day, is_year); |
+ if(is_day != 24 || is_month != IslamicCalendar::RABI_2 || is_year != 1395) |
+ errln("unexpected conversion date month %i not %i or day %i not 24 or year %i not 1395", is_month, IslamicCalendar::RABI_2, is_day, is_year); |
UDate date2 = is_cal->getTime(status); |
TEST_CHECK_STATUS; |
@@ -2858,7 +2906,7 @@ void CalendarTest::TestIslamicTabularDates() { |
UErrorCode status = U_ZERO_ERROR; |
Locale islamicLoc("ar_SA@calendar=islamic-civil"); |
Locale tblaLoc("ar_SA@calendar=islamic-tbla"); |
- SimpleDateFormat* formatter = new SimpleDateFormat("yyyy-MM-dd", Locale::getUS(), status); |
+ SimpleDateFormat* formatter = new SimpleDateFormat("yyyy-MM-dd", Locale::getUS(), status); |
UDate date = formatter->parse("1975-05-06", status); |
Calendar* tstCal = Calendar::createInstance(islamicLoc, status); |
@@ -2885,6 +2933,252 @@ void CalendarTest::TestIslamicTabularDates() { |
delete formatter; |
} |
+void CalendarTest::TestHebrewMonthValidation() { |
+ UErrorCode status = U_ZERO_ERROR; |
+ LocalPointer<Calendar> cal(Calendar::createInstance(Locale::createFromName("he_IL@calendar=hebrew"), status)); |
+ if (failure(status, "Calendar::createInstance, locale:he_IL@calendar=hebrew", TRUE)) return; |
+ Calendar *pCal = cal.getAlias(); |
+ |
+ UDate d; |
+ pCal->setLenient(FALSE); |
+ |
+ // 5776 is a leap year and has month Adar I |
+ pCal->set(5776, HebrewCalendar::ADAR_1, 1); |
+ d = pCal->getTime(status); |
+ if (U_FAILURE(status)) { |
+ errln("Fail: 5776 Adar I 1 is a valid date."); |
+ } |
+ status = U_ZERO_ERROR; |
+ |
+ // 5777 is NOT a lear year and does not have month Adar I |
+ pCal->set(5777, HebrewCalendar::ADAR_1, 1); |
+ d = pCal->getTime(status); |
+ (void)d; |
+ if (status == U_ILLEGAL_ARGUMENT_ERROR) { |
+ logln("Info: U_ILLEGAL_ARGUMENT_ERROR, because 5777 Adar I 1 is not a valid date."); |
+ } else { |
+ errln("Fail: U_ILLEGAL_ARGUMENT_ERROR should be set for input date 5777 Adar I 1."); |
+ } |
+} |
+ |
+void CalendarTest::TestWeekData() { |
+ // Each line contains two locales using the same set of week rule data. |
+ const char* LOCALE_PAIRS[] = { |
+ "en", "en_US", |
+ "de", "de_DE", |
+ "de_DE", "en_DE", |
+ "en_GB", "und_GB", |
+ "ar_EG", "en_EG", |
+ "ar_SA", "fr_SA", |
+ 0 |
+ }; |
+ |
+ UErrorCode status; |
+ |
+ for (int32_t i = 0; LOCALE_PAIRS[i] != 0; i += 2) { |
+ status = U_ZERO_ERROR; |
+ LocalPointer<Calendar> cal1(Calendar::createInstance(LOCALE_PAIRS[i], status)); |
+ LocalPointer<Calendar> cal2(Calendar::createInstance(LOCALE_PAIRS[i + 1], status)); |
+ TEST_CHECK_STATUS_LOCALE(LOCALE_PAIRS[i]); |
+ |
+ // First day of week |
+ UCalendarDaysOfWeek dow1 = cal1->getFirstDayOfWeek(status); |
+ UCalendarDaysOfWeek dow2 = cal2->getFirstDayOfWeek(status); |
+ TEST_CHECK_STATUS; |
+ TEST_ASSERT(dow1 == dow2); |
+ |
+ // Minimum days in first week |
+ uint8_t minDays1 = cal1->getMinimalDaysInFirstWeek(); |
+ uint8_t minDays2 = cal2->getMinimalDaysInFirstWeek(); |
+ TEST_ASSERT(minDays1 == minDays2); |
+ |
+ // Weekdays and Weekends |
+ for (int32_t d = UCAL_SUNDAY; d <= UCAL_SATURDAY; d++) { |
+ status = U_ZERO_ERROR; |
+ UCalendarWeekdayType wdt1 = cal1->getDayOfWeekType((UCalendarDaysOfWeek)d, status); |
+ UCalendarWeekdayType wdt2 = cal2->getDayOfWeekType((UCalendarDaysOfWeek)d, status); |
+ TEST_CHECK_STATUS; |
+ TEST_ASSERT(wdt1 == wdt2); |
+ } |
+ } |
+} |
+ |
+typedef struct { |
+ const char* zone; |
+ const CalFields base; |
+ int32_t deltaDays; |
+ UCalendarWallTimeOption skippedWTOpt; |
+ const CalFields expected; |
+} TestAddAcrossZoneTransitionData; |
+ |
+static const TestAddAcrossZoneTransitionData AAZTDATA[] = |
+{ |
+ // Time zone Base wall time day(s) Skipped time options |
+ // Expected wall time |
+ |
+ // Add 1 day, from the date before DST transition |
+ {"America/Los_Angeles", CalFields(2014,3,8,1,59,59,999), 1, UCAL_WALLTIME_FIRST, |
+ CalFields(2014,3,9,1,59,59,999)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,1,59,59,999), 1, UCAL_WALLTIME_LAST, |
+ CalFields(2014,3,9,1,59,59,999)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,1,59,59,999), 1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2014,3,9,1,59,59,999)}, |
+ |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,2,0,0,0), 1, UCAL_WALLTIME_FIRST, |
+ CalFields(2014,3,9,1,0,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,2,0,0,0), 1, UCAL_WALLTIME_LAST, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,2,0,0,0), 1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,2,30,0,0), 1, UCAL_WALLTIME_FIRST, |
+ CalFields(2014,3,9,1,30,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,2,30,0,0), 1, UCAL_WALLTIME_LAST, |
+ CalFields(2014,3,9,3,30,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,2,30,0,0), 1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,3,0,0,0), 1, UCAL_WALLTIME_FIRST, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,3,0,0,0), 1, UCAL_WALLTIME_LAST, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,8,3,0,0,0), 1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ // Subtract 1 day, from one day after DST transition |
+ {"America/Los_Angeles", CalFields(2014,3,10,1,59,59,999), -1, UCAL_WALLTIME_FIRST, |
+ CalFields(2014,3,9,1,59,59,999)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,1,59,59,999), -1, UCAL_WALLTIME_LAST, |
+ CalFields(2014,3,9,1,59,59,999)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,1,59,59,999), -1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2014,3,9,1,59,59,999)}, |
+ |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,2,0,0,0), -1, UCAL_WALLTIME_FIRST, |
+ CalFields(2014,3,9,1,0,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,2,0,0,0), -1, UCAL_WALLTIME_LAST, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,2,0,0,0), -1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,2,30,0,0), -1, UCAL_WALLTIME_FIRST, |
+ CalFields(2014,3,9,1,30,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,2,30,0,0), -1, UCAL_WALLTIME_LAST, |
+ CalFields(2014,3,9,3,30,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,2,30,0,0), -1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,3,0,0,0), -1, UCAL_WALLTIME_FIRST, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,3,0,0,0), -1, UCAL_WALLTIME_LAST, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ {"America/Los_Angeles", CalFields(2014,3,10,3,0,0,0), -1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2014,3,9,3,0,0,0)}, |
+ |
+ |
+ // Test case for ticket#10544 |
+ {"America/Santiago", CalFields(2013,4,27,0,0,0,0), 134, UCAL_WALLTIME_FIRST, |
+ CalFields(2013,9,7,23,0,0,0)}, |
+ |
+ {"America/Santiago", CalFields(2013,4,27,0,0,0,0), 134, UCAL_WALLTIME_LAST, |
+ CalFields(2013,9,8,1,0,0,0)}, |
+ |
+ {"America/Santiago", CalFields(2013,4,27,0,0,0,0), 134, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2013,9,8,1,0,0,0)}, |
+ |
+ |
+ {"America/Santiago", CalFields(2013,4,27,0,30,0,0), 134, UCAL_WALLTIME_FIRST, |
+ CalFields(2013,9,7,23,30,0,0)}, |
+ |
+ {"America/Santiago", CalFields(2013,4,27,0,30,0,0), 134, UCAL_WALLTIME_LAST, |
+ CalFields(2013,9,8,1,30,0,0)}, |
+ |
+ {"America/Santiago", CalFields(2013,4,27,0,30,0,0), 134, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2013,9,8,1,0,0,0)}, |
+ |
+ |
+ // Extreme transition - Pacific/Apia completely skips 2011-12-30 |
+ {"Pacific/Apia", CalFields(2011,12,29,0,0,0,0), 1, UCAL_WALLTIME_FIRST, |
+ CalFields(2011,12,31,0,0,0,0)}, |
+ |
+ {"Pacific/Apia", CalFields(2011,12,29,0,0,0,0), 1, UCAL_WALLTIME_LAST, |
+ CalFields(2011,12,31,0,0,0,0)}, |
+ |
+ {"Pacific/Apia", CalFields(2011,12,29,0,0,0,0), 1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2011,12,31,0,0,0,0)}, |
+ |
+ |
+ {"Pacific/Apia", CalFields(2011,12,31,12,0,0,0), -1, UCAL_WALLTIME_FIRST, |
+ CalFields(2011,12,29,12,0,0,0)}, |
+ |
+ {"Pacific/Apia", CalFields(2011,12,31,12,0,0,0), -1, UCAL_WALLTIME_LAST, |
+ CalFields(2011,12,29,12,0,0,0)}, |
+ |
+ {"Pacific/Apia", CalFields(2011,12,31,12,0,0,0), -1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2011,12,29,12,0,0,0)}, |
+ |
+ |
+ // 30 minutes DST - Australia/Lord_Howe |
+ {"Australia/Lord_Howe", CalFields(2013,10,5,2,15,0,0), 1, UCAL_WALLTIME_FIRST, |
+ CalFields(2013,10,6,1,45,0,0)}, |
+ |
+ {"Australia/Lord_Howe", CalFields(2013,10,5,2,15,0,0), 1, UCAL_WALLTIME_LAST, |
+ CalFields(2013,10,6,2,45,0,0)}, |
+ |
+ {"Australia/Lord_Howe", CalFields(2013,10,5,2,15,0,0), 1, UCAL_WALLTIME_NEXT_VALID, |
+ CalFields(2013,10,6,2,30,0,0)}, |
+ |
+ {NULL, CalFields(0,0,0,0,0,0,0), 0, UCAL_WALLTIME_LAST, CalFields(0,0,0,0,0,0,0)} |
+}; |
+ |
+void CalendarTest::TestAddAcrossZoneTransition() { |
+ UErrorCode status = U_ZERO_ERROR; |
+ GregorianCalendar cal(status); |
+ TEST_CHECK_STATUS; |
+ |
+ for (int32_t i = 0; AAZTDATA[i].zone; i++) { |
+ status = U_ZERO_ERROR; |
+ TimeZone *tz = TimeZone::createTimeZone(AAZTDATA[i].zone); |
+ cal.adoptTimeZone(tz); |
+ cal.setSkippedWallTimeOption(AAZTDATA[i].skippedWTOpt); |
+ AAZTDATA[i].base.setTo(cal); |
+ cal.add(UCAL_DATE, AAZTDATA[i].deltaDays, status); |
+ TEST_CHECK_STATUS; |
+ |
+ if (!AAZTDATA[i].expected.isEquivalentTo(cal, status)) { |
+ CalFields res(cal, status); |
+ TEST_CHECK_STATUS; |
+ char buf[32]; |
+ const char *optDisp = AAZTDATA[i].skippedWTOpt == UCAL_WALLTIME_FIRST ? "FIRST" : |
+ AAZTDATA[i].skippedWTOpt == UCAL_WALLTIME_LAST ? "LAST" : "NEXT_VALID"; |
+ dataerrln(UnicodeString("Error: base:") + AAZTDATA[i].base.toString(buf, sizeof(buf)) + ", tz:" + AAZTDATA[i].zone |
+ + ", delta:" + AAZTDATA[i].deltaDays + " day(s), opt:" + optDisp |
+ + ", result:" + res.toString(buf, sizeof(buf)) |
+ + " - expected:" + AAZTDATA[i].expected.toString(buf, sizeof(buf))); |
+ } |
+ } |
+} |
#endif /* #if !UCONFIG_NO_FORMATTING */ |