📄 testjdatetime2.java
字号:
package jodd.datetime;
import java.util.GregorianCalendar;
import junit.framework.TestCase;
public class TestJDateTime2 extends TestCase {
public void testCompareToAndAdd() {
JDateTime gt1 = new JDateTime();
if (gt1.getDay() > 28) { // back and forth adds works without corrections
gt1.setDay(28); // for days that exists in all months
}
JDateTime gt2 = gt1.getJDateTimeInstance();
assertEquals(0, gt1.compareTo(gt2));
for (int i = 1; i < 1000; i++) {
gt2.add(i, 0, 0);
assertEquals(-1, gt1.compareTo(gt2));
gt2.addYear(-2 * i);
assertEquals(1, gt1.compareTo(gt2));
gt2.addYear(i);
assertEquals(0, gt1.compareTo(gt2));
}
for (int i = 1; i < 60000; i++) {
gt2.add(0, i, 0);
assertEquals(-1, gt1.compareTo(gt2));
gt2.addMonth(-i);
assertEquals(0, gt1.compareTo(gt2));
}
for (int i = 1; i < 5000; i++) { // because of year 1582, months moving
gt2.add(0, i, 0); // before it still doesn't work
assertEquals(-1, gt1.compareTo(gt2));
gt2.addMonth(-2 * i);
assertEquals(1, gt1.compareTo(gt2));
gt2.addMonth(i);
assertEquals(0, gt1.compareTo(gt2));
}
for (int i = 1; i < 10000; i++) {
gt2.add(0, 0, i);
assertEquals(-1, gt1.compareTo(gt2));
gt2.addDay(-3 * i);
assertEquals(1, gt1.compareTo(gt2));
gt2.addDay(2 * i);
assertEquals(0, gt1.compareTo(gt2));
}
for (int i = 1; i < 100000; i++) {
gt2.addTime(i, 0, 0);
assertEquals(-1, gt1.compareTo(gt2));
gt2.addHour(-4 * i);
assertEquals(1, gt1.compareTo(gt2));
gt2.addHour(3 * i);
assertEquals(0, gt1.compareTo(gt2));
}
for (int i = 1; i < 100000; i++) {
gt2.addTime(0, i, 0);
assertEquals(-1, gt1.compareTo(gt2));
gt2.addMinute(-5 * i);
assertEquals(1, gt1.compareTo(gt2));
gt2.addMinute(4 * i);
assertEquals(0, gt1.compareTo(gt2));
}
for (int i = 1; i < 1000000; i++) {
gt2.addTime(0, 0, i);
assertEquals(-1, gt1.compareTo(gt2));
gt2.addSecond(- 7 * i);
assertEquals(1, gt1.compareTo(gt2));
gt2.addSecond(6 * i);
assertEquals(0, gt1.compareTo(gt2));
}
for (int i = 1; i < 1000000; i++) {
gt2.addTime(0, 0, i / 1000.0);
assertEquals(-1, gt1.compareTo(gt2));
gt2.addMillisecond(-8 * i);
assertEquals(1, gt1.compareTo(gt2));
gt2.addMillisecond(7 * i);
assertEquals(0, gt1.compareTo(gt2));
}
}
public void testWeekOfYear() {
JDateTime gt = new JDateTime();
GregorianCalendar gc = new GregorianCalendar();
int[] _fdiw = {0, GregorianCalendar.MONDAY, GregorianCalendar.TUESDAY, GregorianCalendar.WEDNESDAY, GregorianCalendar.THURSDAY, GregorianCalendar.FRIDAY, GregorianCalendar.SATURDAY, GregorianCalendar.SUNDAY};
// test all starting dates (first day in week)
for (int fdiw = 1; fdiw <= 7; fdiw++) {
gc.setFirstDayOfWeek(_fdiw[fdiw]);
// test all minimal days in first week
for (int min = 1; min <= 7; min++) {
gc.setMinimalDaysInFirstWeek(min);
gt.setWeekDefinitionAlt(fdiw, min);
// test many years
for (int y = 1800; y < 3000; y++) {
gt.set(y, 1, 1);
gc.set(y, 0, 1);
int total = gt.isLeap() ? 366 : 365;
// test all days
for (int i = 0; i < total; i++) {
assertEquals(gc.get(GregorianCalendar.DAY_OF_MONTH), gt.getDay());
assertEquals(gc.get(GregorianCalendar.MONTH) + 1, gt.getMonth());
assertEquals(gc.get(GregorianCalendar.YEAR), gt.getYear());
assertEquals(gc.get(GregorianCalendar.DAY_OF_YEAR), gt.getDayOfYear());
int dow = gc.get(GregorianCalendar.DAY_OF_WEEK) - 1;
if (dow == 0) {
dow = 7;
}
assertEquals(dow, gt.getDayOfWeek());
assertEquals(gc.get(GregorianCalendar.WEEK_OF_YEAR), gt.getWeekOfYear());
assertEquals(gc.get(GregorianCalendar.WEEK_OF_MONTH), gt.getWeekOfMonth());
gt.addDay(1);
gc.roll(GregorianCalendar.DAY_OF_YEAR, true);
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -