new FieldStateTest().run(args);
} finally { // restore the reserved locale and time zone
Locale.setDefault(reservedLocale);
TimeZone.setDefault(reservedTimeZone);
}
}
publicvoid TestFieldState() {
Koyomi cal = new Koyomi();
logln("Right after instantialtion:"); if (!cal.checkAllSet()) {
errln(cal.getMessage());
}
logln("Set date to 2003/10/31 after the instantiation:");
cal.set(2003, OCTOBER, 31); // let cal calculate the time
cal.getTime(); // At this point, all fields have to be recalculated and // happen to have the set-state from the instantiation. The // three fields should have "externally set" and the rest of // the fields have "computed". But we can't distinguish them // outside the package. if (!cal.checkAllSet()) {
errln(cal.getMessage());
} // Make sure that the correct date was produced. if (!cal.checkInternalDate(2003, OCTOBER, 31, FRIDAY)) {
errln(cal.getMessage());
}
logln("Change to Monday of the week, which is 2003/10/27:");
cal.set(DAY_OF_WEEK, MONDAY);
cal.getTime(); if (!cal.checkDate(2003, OCTOBER, 27)) {
errln(cal.getMessage());
}
// The same operation didn't work after calling clear() before // 1.5 because the set-state was just depends on its previous // operations. After the instantiation, all the fields are set // to "computed". But after calling clear(), the state becomes // "unset".
logln("Set to 2003/10/31 after clear():");
cal.clear();
cal.set(2003, OCTOBER, 31);
cal.getTime();
cal.set(DAY_OF_WEEK, MONDAY); if (!cal.checkDate(2003, OCTOBER, 27, MONDAY)) {
errln(cal.getMessage());
}
logln("Set to 2003/10/31 after clear(), then to the 51st week of year (12/19):");
cal.clear();
cal.set(2003, OCTOBER, 31);
cal.getTime();
cal.set(WEEK_OF_YEAR, 51); if (!cal.checkFieldValue(WEEK_OF_YEAR, 51)) {
errln(cal.getMessage());
} if (!cal.checkDate(2003, DECEMBER, 19, FRIDAY)) {
errln(cal.getMessage());
}
logln("Set to 2003/10 Mon of 4th week (10/20: 43rd week of year, 293rd day):");
cal.clear();
cal.set(YEAR, 2003);
cal.set(MONTH, OCTOBER);
cal.set(DAY_OF_WEEK, MONDAY);
cal.set(WEEK_OF_MONTH, 4);
cal.getTime(); if (!cal.checkFieldValue(DAY_OF_MONTH, 20)) {
errln(cal.getMessage());
} if (!cal.checkFieldValue(DAY_OF_YEAR, 293)) {
errln(cal.getMessage());
} if (!cal.checkFieldValue(WEEK_OF_YEAR, 43)) {
errln(cal.getMessage());
}
logln("Set to 2003/10 Mon of 43rd week of year (10/20: 4th week of month, 293rd day):");
cal.clear();
cal.set(YEAR, 2003);
cal.set(DAY_OF_WEEK, MONDAY);
cal.set(WEEK_OF_YEAR, 43);
cal.getTime(); if (!cal.checkDate(2003, OCTOBER, 20, MONDAY)) {
errln(cal.getMessage());
} if (!cal.checkFieldValue(WEEK_OF_MONTH, 4)) {
errln(cal.getMessage());
} if (!cal.checkFieldValue(DAY_OF_YEAR, 293)) {
errln(cal.getMessage());
}
logln("Set day of week to SUNDAY and date to 2003/10/31. "
+ "Then, getTime and set week of year to 43.");
@SuppressWarnings("deprecation")
Date d = new Date(2003 - 1900, OCTOBER, 31);
cal.setTime(d);
cal.set(DAY_OF_WEEK, SUNDAY);
cal.set(2003, OCTOBER, 31); // 2003/10/31 is Friday.
cal.set(ZONE_OFFSET, 0);
cal.set(DST_OFFSET, 0);
// This call should change the day of week to FRIDAY since the // selected field combination should be YEAR, MONTH and // DAY_OF_MONTH. The other calendar fields must be normalized // with the selected date.
cal.getTime();
cal.set(WEEK_OF_YEAR, 43); if (!cal.checkDate(2003, OCTOBER, 24, FRIDAY)) {
errln(cal.getMessage());
}
}
/* *4916815:REGRESSION:Problemwithjava.util.CalendarVM1.4.2-b28
*/ publicvoid Test4916815() {
logln("Set date to 2003/9/26 (Fri). Roll to Aug and back to Sep. "
+ "Set dayofweek to Sunday which should be 2003/9/21.");
Koyomi cal = new Koyomi();
cal.clear(); // 2003/9/26 (Fri)
cal.set(2003, SEPTEMBER, 26); // Go to August then back to September
cal.roll(MONTH, -1);
cal.roll(MONTH, +1);
Koyomi cal2 = (Koyomi) cal.clone();
cal2.getTime(); // Sunday of the week should be 2003/9/21.
cal2.set(DAY_OF_WEEK, SUNDAY); if (!cal2.checkDate(2003, SEPTEMBER, 21, SUNDAY)) {
errln(cal2.getMessage());
}
}
privatevoid checkDate(Koyomi cal, int dayOfWeek, int expectedYear, int expectedMonth, int expectedDayOfMonth) {
cal.set(DAY_OF_WEEK, dayOfWeek);
cal.getTime(); if (!cal.checkInternalDate(expectedYear, expectedMonth, expectedDayOfMonth, dayOfWeek)) {
errln(cal.getMessage());
}
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.10Bemerkung:
(vorverarbeitet am 2026-10-11)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.