ICU-4081 Ported tests and fixed problems revealed by tests

X-SVN-Rev: 22894
This commit is contained in:
Andrew J Macheret 2007-11-06 22:26:06 +00:00
parent 4fc941c249
commit f018a43611
3 changed files with 149 additions and 10 deletions

View file

@ -742,8 +742,7 @@ void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta) {
// Pin the dom. In this calendar all months are 29 or 30 days
// so pinning just means handling dom 30.
if (dom > 29) {
set(UCAL_JULIAN_DAY, jd-1, status);
if (U_FAILURE(status)) return;
set(UCAL_JULIAN_DAY, jd-1);
// TODO Fix this. We really shouldn't ever have to
// explicitly call complete(). This is either a bug in
// this method, in ChineseCalendar, or in
@ -752,12 +751,10 @@ void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta) {
if (U_FAILURE(status)) return;
if (getActualMaximum(UCAL_DAY_OF_MONTH, status) >= dom) {
if (U_FAILURE(status)) return;
set(UCAL_JULIAN_DAY, jd, status);
if (U_FAILURE(status)) return;
set(UCAL_JULIAN_DAY, jd);
}
} else {
set(UCAL_JULIAN_DAY, jd, status);
if (U_FAILURE(status)) return;
set(UCAL_JULIAN_DAY, jd);
}
}

View file

@ -140,7 +140,6 @@ class ChineseCalendar : public Calendar {
protected:
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const;
virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const;
//virtual int32_t handleGetYearLength(int32_t extendedYear) const;
virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const;
virtual int32_t handleGetExtendedYear();
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status);

View file

@ -21,8 +21,9 @@ calendar:table(nofallback) {
Type { "convert_rev" }
},
}
// "0/1/1912/june/4 == gregorian year=1912, ERA=AD, same month, same day
Cases {
// taiwanese calendar
// "0/1/1912/june/4 == gregorian year=1912, ERA=AD, same month, same day
{
"en_US@calendar=taiwan",
"ERA=1,YEAR=1,MONTH=JUNE,DATE=4", // tw
@ -44,7 +45,76 @@ calendar:table(nofallback) {
"en_US@calendar=taiwan",
"ERA=0,YEAR=2,MONTH=JANUARY,DATE=24", // tw
"ERA=1,YEAR=1910,MONTH=JANUARY,DATE=24", // greg
}
},
// chinese calendar
// (0-based months)
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4601,MONTH=6,DATE=28,IS_LEAP_MONTH=0", // ch
"YEAR=1964,MONTH=8,DATE=4", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4601,MONTH=6,DATE=29,IS_LEAP_MONTH=0", // ch
"YEAR=1964,MONTH=8,DATE=5", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4601,MONTH=7,DATE=1,IS_LEAP_MONTH=0", // ch
"YEAR=1964,MONTH=8,DATE=6", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4601,MONTH=7,DATE=2,IS_LEAP_MONTH=0", // ch
"YEAR=1964,MONTH=8,DATE=7", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4598,MONTH=10,DATE=18,IS_LEAP_MONTH=0", // ch
"YEAR=1961,MONTH=11,DATE=25", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4636,MONTH=3,DATE=21,IS_LEAP_MONTH=0", // ch
"YEAR=1999,MONTH=5,DATE=4", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4627,MONTH=3,DATE=29,IS_LEAP_MONTH=0", // ch
"YEAR=1990,MONTH=4,DATE=23", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4627,MONTH=4,DATE=1,IS_LEAP_MONTH=0", // ch
"YEAR=1990,MONTH=4,DATE=24", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4627,MONTH=4,DATE=30,IS_LEAP_MONTH=0", // ch
"YEAR=1990,MONTH=5,DATE=22", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4627,MONTH=4,DATE=1,IS_LEAP_MONTH=1", // ch
"YEAR=1990,MONTH=5,DATE=23", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4627,MONTH=4,DATE=28,IS_LEAP_MONTH=1", // ch
"YEAR=1990,MONTH=6,DATE=20", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4627,MONTH=4,DATE=29,IS_LEAP_MONTH=1", // ch
"YEAR=1990,MONTH=6,DATE=21", // greg
},
{
"en_US@calendar=chinese",
"EXTENDED_YEAR=4627,MONTH=5,DATE=1,IS_LEAP_MONTH=0", // ch
"YEAR=1990,MONTH=6,DATE=22", // greg
},
}
}
TestCalendarOperations {
@ -57,7 +127,8 @@ calendar:table(nofallback) {
Type { "ops" }
},
}
Cases {
Cases {
//taiwan
{
"en_US@calendar=taiwan",
"ERA=1,YEAR=1,MONTH=JUNE,DATE=4", // tw
@ -86,6 +157,78 @@ calendar:table(nofallback) {
"YEAR=1", // date + 1
"ERA=1,YEAR=2,MONTH=JUNE,DATE=4", // tw
},
//chinese
{ // normal
"en_US@calendar=chinese",
"EXTENDED_YEAR=4642,MONTH=2,DATE=15,IS_LEAP_MONTH=0", // ch
"add",
"MONTH=3", // month + 3
"EXTENDED_YEAR=4642,MONTH=5,DATE=15,IS_LEAP_MONTH=0", // ch
},
{ // across year
"en_US@calendar=chinese",
"EXTENDED_YEAR=4639,MONTH=11,DATE=15,IS_LEAP_MONTH=0", // ch
"add",
"MONTH=1", // month + 1
"EXTENDED_YEAR=4640,MONTH=0,DATE=15,IS_LEAP_MONTH=0", // ch
},
{ // across year
"en_US@calendar=chinese",
"EXTENDED_YEAR=4640,MONTH=0,DATE=15,IS_LEAP_MONTH=0", // ch
"add",
"MONTH=-1", // month - 1
"EXTENDED_YEAR=4639,MONTH=11,DATE=15,IS_LEAP_MONTH=0", // ch
},
{ // month=3 is a leap month
"en_US@calendar=chinese",
"EXTENDED_YEAR=4638,MONTH=2,DATE=15,IS_LEAP_MONTH=0", // ch
"add",
"MONTH=3", // month + 3
"EXTENDED_YEAR=4638,MONTH=4,DATE=15,IS_LEAP_MONTH=0", // ch
},
{ // month=3 is a leap month
"en_US@calendar=chinese",
"EXTENDED_YEAR=4638,MONTH=2,DATE=15,IS_LEAP_MONTH=0", // ch
"add",
"MONTH=2", // month + 2
"EXTENDED_YEAR=4638,MONTH=3,DATE=15,IS_LEAP_MONTH=1", // ch
},
{ // month=3 is a leap month
"en_US@calendar=chinese",
"EXTENDED_YEAR=4638,MONTH=3,DATE=15,IS_LEAP_MONTH=0", // ch
"add",
"MONTH=1", // month + 1
"EXTENDED_YEAR=4638,MONTH=3,DATE=15,IS_LEAP_MONTH=1", // ch
},
{ // month=3 is a leap month
"en_US@calendar=chinese",
"EXTENDED_YEAR=4638,MONTH=3,DATE=15,IS_LEAP_MONTH=1", // ch
"add",
"MONTH=1", // month + 1
"EXTENDED_YEAR=4638,MONTH=4,DATE=15,IS_LEAP_MONTH=0", // ch
},
{ // dom should pin
"en_US@calendar=chinese",
"EXTENDED_YEAR=4638,MONTH=3,DATE=30,IS_LEAP_MONTH=0", // ch
"add",
"MONTH=1", // month + 1
"EXTENDED_YEAR=4638,MONTH=3,DATE=29,IS_LEAP_MONTH=1", // ch
},
{ // dom should pin
"en_US@calendar=chinese",
"EXTENDED_YEAR=4638,MONTH=3,DATE=30,IS_LEAP_MONTH=0", // ch
"add",
"MONTH=2", // month + 2
"EXTENDED_YEAR=4638,MONTH=4,DATE=30,IS_LEAP_MONTH=0", // ch
},
{ // dom should pin
"en_US@calendar=chinese",
"EXTENDED_YEAR=4638,MONTH=3,DATE=30,IS_LEAP_MONTH=0", // ch
"add",
"MONTH=3", // month + 3
"EXTENDED_YEAR=4638,MONTH=5,DATE=29,IS_LEAP_MONTH=0", // ch
},
}
}
}