AT
@Test
public void testThatWatchedCronExpressionIsCorrect() {
CronTrigger trigger =
new CronTrigger(watchedCron);
Calendar today = Calendar.
getInstance();
today.set(Calendar.
HOUR_OF_DAY, 9);
today.set(Calendar.
MINUTE, 0);
final Date yesterday = today.getTime();
Date nextExecutionTime = trigger.nextExecutionTime(
new TriggerContext() {
@Override
public Date lastScheduledExecutionTime() {
return yesterday;
}
@Override
public Date lastActualExecutionTime() {
return yesterday;
}
@Override
public Date lastCompletionTime() {
return yesterday;
}
});
assertEquals(nextExecutionTime.getHours(), 9);
assertEquals(nextExecutionTime.getMinutes(), 0);
ZoneId defaultZoneId = ZoneId.
systemDefault();
LocalDate yesterdayLocalDate = LocalDate.
ofInstant(yesterday.toInstant(), defaultZoneId);
LocalDate nextExecutionLocalDate = LocalDate.
ofInstant(nextExecutionTime.toInstant(), defaultZoneId);
long difference =
DAYS.between(yesterdayLocalDate, nextExecutionLocalDate);
assertEquals(1, difference);
}
@Test
public void testThatExpiredCronExpressionIsCorrect() {
CronTrigger trigger =
new CronTrigger(expiredCron);
Calendar halfAnHour = Calendar.
getInstance();
halfAnHour.set(Calendar.
MINUTE, 30);
halfAnHour.set(Calendar.
SECOND, 0);
halfAnHour.set(Calendar.
MILLISECOND, 0);
final Date firstExecutionTime = halfAnHour.getTime();
Date nextExecutionTime = trigger.nextExecutionTime(
new TriggerContext() {
@Override
public Date lastScheduledExecutionTime() {
return firstExecutionTime;
}
@Override
public Date lastActualExecutionTime() {
return firstExecutionTime;
}
@Override
public Date lastCompletionTime() {
return firstExecutionTime;
}
});
var diffInMillis = nextExecutionTime.getTime() - firstExecutionTime.getTime();
assertEquals(30, TimeUnit.
MILLISECONDS.toMinutes(diffInMillis));
}