|
|
|
|
@ -31,6 +31,7 @@ import org.junit.jupiter.api.Test;
@@ -31,6 +31,7 @@ import org.junit.jupiter.api.Test;
|
|
|
|
|
import static java.time.DayOfWeek.FRIDAY; |
|
|
|
|
import static java.time.DayOfWeek.MONDAY; |
|
|
|
|
import static java.time.DayOfWeek.SUNDAY; |
|
|
|
|
import static java.time.DayOfWeek.THURSDAY; |
|
|
|
|
import static java.time.DayOfWeek.TUESDAY; |
|
|
|
|
import static java.time.DayOfWeek.WEDNESDAY; |
|
|
|
|
import static java.time.temporal.TemporalAdjusters.next; |
|
|
|
|
@ -116,6 +117,7 @@ class CronExpressionTests {
@@ -116,6 +117,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withMinute(10); |
|
|
|
|
LocalDateTime expected = last.plusMinutes(1).withSecond(0).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -149,6 +151,7 @@ class CronExpressionTests {
@@ -149,6 +151,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.of(year, 10, 30, 11, 1); |
|
|
|
|
LocalDateTime expected = last.withHour(12).withMinute(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -173,6 +176,7 @@ class CronExpressionTests {
@@ -173,6 +176,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withDayOfMonth(1); |
|
|
|
|
LocalDateTime expected = last.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -207,6 +211,7 @@ class CronExpressionTests {
@@ -207,6 +211,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withMonth(9).withDayOfMonth(30); |
|
|
|
|
LocalDateTime expected = LocalDateTime.of(last.getYear(), 10, 1, 0, 0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -222,6 +227,7 @@ class CronExpressionTests {
@@ -222,6 +227,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withMonth(8).withDayOfMonth(30); |
|
|
|
|
LocalDateTime expected = last.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -237,6 +243,7 @@ class CronExpressionTests {
@@ -237,6 +243,7 @@ class CronExpressionTests {
|
|
|
|
|
ZonedDateTime last = ZonedDateTime.now(ZoneId.of("CET")).withMonth(10).withDayOfMonth(30); |
|
|
|
|
ZonedDateTime expected = last.withDayOfMonth(31).withHour(0).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
ZonedDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -251,6 +258,7 @@ class CronExpressionTests {
@@ -251,6 +258,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withMonth(10).withDayOfMonth(30); |
|
|
|
|
LocalDateTime expected = LocalDateTime.of(last.getYear(), 11, 1, 0, 0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -265,6 +273,7 @@ class CronExpressionTests {
@@ -265,6 +273,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withYear(2010).withMonth(12).withDayOfMonth(31); |
|
|
|
|
LocalDateTime expected = LocalDateTime.of(2011, 1, 1, 0, 0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -297,6 +306,7 @@ class CronExpressionTests {
@@ -297,6 +306,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().with(next(MONDAY)); |
|
|
|
|
LocalDateTime expected = last.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
assertThat(actual.getDayOfWeek()).isEqualTo(TUESDAY); |
|
|
|
|
} |
|
|
|
|
@ -308,6 +318,7 @@ class CronExpressionTests {
@@ -308,6 +318,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().with(next(WEDNESDAY)); |
|
|
|
|
LocalDateTime expected = last.plusDays(6).withHour(0).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
assertThat(actual.getDayOfWeek()).isEqualTo(TUESDAY); |
|
|
|
|
} |
|
|
|
|
@ -319,6 +330,7 @@ class CronExpressionTests {
@@ -319,6 +330,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withMinute(4).withSecond(54); |
|
|
|
|
LocalDateTime expected = last.plusMinutes(1).withSecond(55).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -333,6 +345,7 @@ class CronExpressionTests {
@@ -333,6 +345,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withHour(9).withSecond(54); |
|
|
|
|
LocalDateTime expected = last.plusHours(1).withMinute(0).withSecond(55).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -347,6 +360,7 @@ class CronExpressionTests {
@@ -347,6 +360,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withHour(9).withMinute(4); |
|
|
|
|
LocalDateTime expected = last.plusHours(1).plusMinutes(1).withSecond(0).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -362,6 +376,7 @@ class CronExpressionTests {
@@ -362,6 +376,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withDayOfMonth(2).withSecond(54); |
|
|
|
|
LocalDateTime expected = last.plusDays(1).withHour(0).withMinute(0).withSecond(55).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -376,6 +391,7 @@ class CronExpressionTests {
@@ -376,6 +391,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withMonth(10).withDayOfMonth(2); |
|
|
|
|
LocalDateTime expected = LocalDateTime.of(last.getYear(), 11, 3, 0, 0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -398,6 +414,7 @@ class CronExpressionTests {
@@ -398,6 +414,7 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.now().withYear(2007).withMonth(2).withDayOfMonth(10); |
|
|
|
|
LocalDateTime expected = LocalDateTime.of(2008, 2, 29, 0, 0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -413,12 +430,14 @@ class CronExpressionTests {
@@ -413,12 +430,14 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.of(LocalDate.of(2009, 9, 26), LocalTime.now()); |
|
|
|
|
LocalDateTime expected = last.plusDays(2).withHour(7).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
// Next day is a week day so add one
|
|
|
|
|
last = actual; |
|
|
|
|
expected = expected.plusDays(1); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -433,12 +452,14 @@ class CronExpressionTests {
@@ -433,12 +452,14 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.of(LocalDate.of(2010, 12, 30), LocalTime.now()); |
|
|
|
|
LocalDateTime expected = last.plusMonths(1).withHour(23).withMinute(30).withSecond(0).withSecond(0).withNano(0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
// Next trigger is 3 months later
|
|
|
|
|
last = actual; |
|
|
|
|
expected = expected.plusMonths(3); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -485,11 +506,13 @@ class CronExpressionTests {
@@ -485,11 +506,13 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime expected = LocalDateTime.of(last.getYear() + 1, 1, 1, 0, 0); |
|
|
|
|
|
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = expected.plusYears(1); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -513,11 +536,13 @@ class CronExpressionTests {
@@ -513,11 +536,13 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime expected = LocalDateTime.of(last.getYear(), 11, 1, 0, 0); |
|
|
|
|
|
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = expected.plusMonths(1); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -534,11 +559,13 @@ class CronExpressionTests {
@@ -534,11 +559,13 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime expected = last.with(next(SUNDAY)).withHour(0).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
|
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = expected.plusWeeks(1); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -555,11 +582,13 @@ class CronExpressionTests {
@@ -555,11 +582,13 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime expected = last.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
|
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = expected.plusDays(1); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -583,11 +612,13 @@ class CronExpressionTests {
@@ -583,11 +612,13 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime expected = last.plusHours(1).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
|
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = expected.plusHours(1); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -603,16 +634,19 @@ class CronExpressionTests {
@@ -603,16 +634,19 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.of(LocalDate.of(2008, 1, 4), LocalTime.now()); |
|
|
|
|
LocalDateTime expected = LocalDateTime.of(2008, 1, 31, 0, 0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = LocalDateTime.of(2008, 2, 29, 0, 0); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = LocalDateTime.of(2008, 3, 31, 0, 0); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -628,16 +662,19 @@ class CronExpressionTests {
@@ -628,16 +662,19 @@ class CronExpressionTests {
|
|
|
|
|
LocalDateTime last = LocalDateTime.of(LocalDate.of(2008, 1, 4), LocalTime.now()); |
|
|
|
|
LocalDateTime expected = LocalDateTime.of(2008, 1, 28, 0, 0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = LocalDateTime.of(2008, 2, 26, 0, 0); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = LocalDateTime.of(2008, 3, 28, 0, 0); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
@ -1042,4 +1079,62 @@ class CronExpressionTests {
@@ -1042,4 +1079,62 @@ class CronExpressionTests {
|
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
assertThat(actual.getDayOfWeek()).isEqualTo(WEDNESDAY); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void dayOfMonthListWithQuartz() { |
|
|
|
|
CronExpression expression = CronExpression.parse("0 0 0 1W,15,LW * ?"); |
|
|
|
|
|
|
|
|
|
LocalDateTime last = LocalDateTime.of(2019, 12, 30, 0, 0); |
|
|
|
|
LocalDateTime expected = LocalDateTime.of(2019, 12, 31, 0, 0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
assertThat(actual).is(weekday); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = LocalDateTime.of(2020, 1, 1, 0, 0); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
assertThat(actual).is(weekday); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = LocalDateTime.of(2020, 1, 15, 0, 0); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = LocalDateTime.of(2020, 1, 31, 0, 0); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
assertThat(actual).is(weekday); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void dayOfWeekListWithQuartz() { |
|
|
|
|
CronExpression expression = CronExpression.parse("0 0 0 ? * THU#1,THU#3,THU#5"); |
|
|
|
|
|
|
|
|
|
LocalDateTime last = LocalDateTime.of(2019, 12, 31, 0, 0); |
|
|
|
|
LocalDateTime expected = LocalDateTime.of(2020, 1, 2, 0, 0); |
|
|
|
|
LocalDateTime actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
assertThat(actual.getDayOfWeek()).isEqualTo(THURSDAY); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = LocalDateTime.of(2020, 1, 16, 0, 0); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
assertThat(actual.getDayOfWeek()).isEqualTo(THURSDAY); |
|
|
|
|
|
|
|
|
|
last = actual; |
|
|
|
|
expected = LocalDateTime.of(2020, 1, 30, 0, 0); |
|
|
|
|
actual = expression.next(last); |
|
|
|
|
assertThat(actual).isNotNull(); |
|
|
|
|
assertThat(actual).isEqualTo(expected); |
|
|
|
|
assertThat(actual.getDayOfWeek()).isEqualTo(THURSDAY); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|