mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-07 14:31:31 +00:00
ICU-4081 Ported tests and fixed problems revealed by tests
X-SVN-Rev: 22894
This commit is contained in:
parent
4fc941c249
commit
f018a43611
3 changed files with 149 additions and 10 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
149
icu4c/source/test/testdata/calendar.txt
vendored
149
icu4c/source/test/testdata/calendar.txt
vendored
|
@ -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
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue