1
1
/*
2
- * Copyright 2002-2009 the original author or authors.
2
+ * Copyright 2002-2010 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
16
16
17
17
package org .springframework .scheduling .support ;
18
18
19
- import static org .junit .Assert .assertEquals ;
20
-
21
19
import java .util .ArrayList ;
22
20
import java .util .Calendar ;
23
21
import java .util .Date ;
24
22
import java .util .GregorianCalendar ;
25
23
import java .util .List ;
26
24
import java .util .TimeZone ;
27
25
26
+ import static org .junit .Assert .*;
28
27
import org .junit .Before ;
29
28
import org .junit .Test ;
30
29
import org .junit .runner .RunWith ;
31
30
import org .junit .runners .Parameterized ;
32
31
import org .junit .runners .Parameterized .Parameters ;
32
+
33
33
import org .springframework .scheduling .TriggerContext ;
34
34
35
35
/**
36
36
* @author Dave Syer
37
37
* @author Mark Fisher
38
+ * @author Juergen Hoeller
38
39
*/
39
40
@ RunWith (Parameterized .class )
40
41
public class CronTriggerTests {
@@ -45,6 +46,7 @@ public class CronTriggerTests {
45
46
46
47
private final TimeZone timeZone ;
47
48
49
+
48
50
public CronTriggerTests (Date date , TimeZone timeZone ) {
49
51
this .timeZone = timeZone ;
50
52
this .date = date ;
@@ -58,9 +60,6 @@ public static List<Object[]> getParameters() {
58
60
return list ;
59
61
}
60
62
61
- /**
62
- * @param calendar
63
- */
64
63
private void roundup (Calendar calendar ) {
65
64
calendar .add (Calendar .SECOND , 1 );
66
65
calendar .set (Calendar .MILLISECOND , 0 );
@@ -106,6 +105,17 @@ public void testIncrementSecondByOne() throws Exception {
106
105
assertEquals (calendar .getTime (), trigger .nextExecutionTime (context ));
107
106
}
108
107
108
+ @ Test
109
+ public void testIncrementSecondWithPreviousExecutionTooEarly () throws Exception {
110
+ CronTrigger trigger = new CronTrigger ("11 * * * * *" , timeZone );
111
+ calendar .set (Calendar .SECOND , 11 );
112
+ SimpleTriggerContext context = new SimpleTriggerContext ();
113
+ context .update (calendar .getTime (), new Date (calendar .getTimeInMillis () - 100 ),
114
+ new Date (calendar .getTimeInMillis () - 90 ));
115
+ calendar .add (Calendar .MINUTE , 1 );
116
+ assertEquals (calendar .getTime (), trigger .nextExecutionTime (context ));
117
+ }
118
+
109
119
@ Test
110
120
public void testIncrementSecondAndRollover () throws Exception {
111
121
CronTrigger trigger = new CronTrigger ("10 * * * * *" , timeZone );
@@ -126,28 +136,29 @@ public void testSecondRange() throws Exception {
126
136
}
127
137
128
138
@ Test
129
- public void testIncrementMinuteByOne () throws Exception {
130
- CronTrigger trigger = new CronTrigger ("0 11 * * * *" , timeZone );
139
+ public void testIncrementMinute () throws Exception {
140
+ CronTrigger trigger = new CronTrigger ("0 * * * * *" , timeZone );
131
141
calendar .set (Calendar .MINUTE , 10 );
132
142
Date date = calendar .getTime ();
133
143
calendar .add (Calendar .MINUTE , 1 );
134
144
calendar .set (Calendar .SECOND , 0 );
135
- TriggerContext context = getTriggerContext (date );
136
- assertEquals (calendar .getTime (), trigger .nextExecutionTime (context ));
145
+ TriggerContext context1 = getTriggerContext (date );
146
+ date = trigger .nextExecutionTime (context1 );
147
+ assertEquals (calendar .getTime (), date );
148
+ calendar .add (Calendar .MINUTE , 1 );
149
+ TriggerContext context2 = getTriggerContext (date );
150
+ date = trigger .nextExecutionTime (context2 );
151
+ assertEquals (calendar .getTime (), date );
137
152
}
138
153
139
154
@ Test
140
- public void testIncrementMinute () throws Exception {
141
- CronTrigger trigger = new CronTrigger ("0 * * * * *" , timeZone );
155
+ public void testIncrementMinuteByOne () throws Exception {
156
+ CronTrigger trigger = new CronTrigger ("0 11 * * * *" , timeZone );
142
157
calendar .set (Calendar .MINUTE , 10 );
143
- Date date = calendar .getTime ();
158
+ TriggerContext context = getTriggerContext ( calendar .getTime () );
144
159
calendar .add (Calendar .MINUTE , 1 );
145
160
calendar .set (Calendar .SECOND , 0 );
146
- TriggerContext context1 = getTriggerContext (date );
147
- assertEquals (calendar .getTime (), date = trigger .nextExecutionTime (context1 ));
148
- calendar .add (Calendar .MINUTE , 1 );
149
- TriggerContext context2 = getTriggerContext (date );
150
- assertEquals (calendar .getTime (), date = trigger .nextExecutionTime (context2 ));
161
+ assertEquals (calendar .getTime (), trigger .nextExecutionTime (context ));
151
162
}
152
163
153
164
@ Test
@@ -612,10 +623,7 @@ public void testWhitespace() throws Exception {
612
623
assertEquals (trigger1 , trigger2 );
613
624
}
614
625
615
- /**
616
- * @param trigger
617
- * @param calendar
618
- */
626
+
619
627
private void assertMatchesNextSecond (CronTrigger trigger , Calendar calendar ) {
620
628
Date date = calendar .getTime ();
621
629
roundup (calendar );
0 commit comments