View Javadoc

1   package com.atlassian.scheduler.core.tests;
2   
3   import org.junit.Test;
4   
5   import static com.atlassian.scheduler.core.tests.CronExpressionAssertions.satisfiedBy;
6   import static com.atlassian.scheduler.core.tests.CronExpressionAssertions.unsatisfiedBy;
7   
8   /**
9    * Tests covering the functionality of the seconds cron field.
10   *
11   * @since v1.5
12   */
13  public abstract class CronExpressionSecondsTest extends AbstractCronExpressionTest {
14      protected CronExpressionSecondsTest(CronFactory cronFactory) {
15          super(cronFactory);
16      }
17  
18      private void secondsBy17s(final String secondsExpr) {
19          assertCron(secondsExpr, secondsExpr + " 0 0 1 1 ?",
20                  satisfiedBy(0, 0, 0, 1, 1, 2014),
21                  unsatisfiedBy(1, 0, 0, 1, 1, 2014),
22                  unsatisfiedBy(16, 0, 0, 1, 1, 2014),
23                  satisfiedBy(17, 0, 0, 1, 1, 2014),
24                  unsatisfiedBy(20, 0, 0, 1, 1, 2014),
25                  satisfiedBy(34, 0, 0, 1, 1, 2014),
26                  satisfiedBy(51, 0, 0, 1, 1, 2014),
27                  unsatisfiedBy(52, 0, 0, 1, 1, 2014),
28                  unsatisfiedBy(59, 0, 0, 1, 1, 2014));
29      }
30  
31      @Test
32      public void testSecondsIncrement_simple() {
33          secondsBy17s("/17");
34          secondsBy17s("*/17");
35          secondsBy17s("0/17");
36          secondsBy17s("0-52/17");
37  
38          assertCron("3/17", "3/17 0 0 1 1 ?",
39                  satisfiedBy(3, 0, 0, 1, 1, 2014),
40                  unsatisfiedBy(17, 0, 0, 1, 1, 2014),
41                  satisfiedBy(20, 0, 0, 1, 1, 2014),
42                  satisfiedBy(37, 0, 0, 1, 1, 2014),
43                  unsatisfiedBy(51, 0, 0, 1, 1, 2014),
44                  satisfiedBy(54, 0, 0, 1, 1, 2014));
45      }
46  
47      @Test
48      public void testSecondsIncrement_complex() {
49          assertCron("1,3-5,8-30/10,42", "1,3-5,8-30/10,42 0 0 1 1 ?",
50                  unsatisfiedBy(0, 0, 0, 1, 1, 2014),
51                  satisfiedBy(1, 0, 0, 1, 1, 2014),
52                  unsatisfiedBy(2, 0, 0, 1, 1, 2014),
53                  satisfiedBy(3, 0, 0, 1, 1, 2014),
54                  satisfiedBy(4, 0, 0, 1, 1, 2014),
55                  satisfiedBy(5, 0, 0, 1, 1, 2014),
56                  unsatisfiedBy(6, 0, 0, 1, 1, 2014),
57                  unsatisfiedBy(7, 0, 0, 1, 1, 2014),
58                  satisfiedBy(8, 0, 0, 1, 1, 2014),
59                  unsatisfiedBy(9, 0, 0, 1, 1, 2014),
60                  unsatisfiedBy(17, 0, 0, 1, 1, 2014),
61                  satisfiedBy(18, 0, 0, 1, 1, 2014),
62                  unsatisfiedBy(19, 0, 0, 1, 1, 2014),
63                  satisfiedBy(28, 0, 0, 1, 1, 2014),
64                  unsatisfiedBy(30, 0, 0, 1, 1, 2014),
65                  unsatisfiedBy(38, 0, 0, 1, 1, 2014),
66                  satisfiedBy(42, 0, 0, 1, 1, 2014));
67      }
68  
69      @Test
70      public void testSecondsIncrement_normalRange() {
71          assertCron("0-50/17", "0-50/17 0 0 1 1 ?",
72                  satisfiedBy(0, 0, 0, 1, 1, 2014),
73                  unsatisfiedBy(7, 0, 0, 1, 1, 2014),
74                  satisfiedBy(17, 0, 0, 1, 1, 2014),
75                  unsatisfiedBy(24, 0, 0, 1, 1, 2014),
76                  satisfiedBy(34, 0, 0, 1, 1, 2014),
77                  unsatisfiedBy(50, 0, 0, 1, 1, 2014),
78                  unsatisfiedBy(51, 0, 0, 1, 1, 2014));
79  
80          assertCron("20-50/10", "20-50/10 0 0 1 1 ?",
81                  unsatisfiedBy(0, 0, 0, 1, 1, 2014),
82                  unsatisfiedBy(10, 0, 0, 1, 1, 2014),
83                  satisfiedBy(20, 0, 0, 1, 1, 2014),
84                  satisfiedBy(30, 0, 0, 1, 1, 2014),
85                  satisfiedBy(40, 0, 0, 1, 1, 2014),
86                  satisfiedBy(50, 0, 0, 1, 1, 2014));
87  
88          assertCron("3-37/17", "3-37/17 0 0 1 1 ?",
89                  satisfiedBy(3, 0, 0, 1, 1, 2014),
90                  unsatisfiedBy(17, 0, 0, 1, 1, 2014),
91                  satisfiedBy(20, 0, 0, 1, 1, 2014),
92                  unsatisfiedBy(21, 0, 0, 1, 1, 2014),
93                  satisfiedBy(37, 0, 0, 1, 1, 2014),
94                  unsatisfiedBy(54, 0, 0, 1, 1, 2014),
95                  unsatisfiedBy(59, 0, 0, 1, 1, 2014));
96      }
97  
98      @Test
99      public void testSecondsIncrement_wrappedRange() {
100         assertCron("50-0/17", "50-0/17 0 0 1 1 ?",
101                 unsatisfiedBy(0, 0, 0, 1, 1, 2014),
102                 unsatisfiedBy(7, 0, 0, 1, 1, 2014),
103                 unsatisfiedBy(17, 0, 0, 1, 1, 2014),
104                 unsatisfiedBy(24, 0, 0, 1, 1, 2014),
105                 unsatisfiedBy(34, 0, 0, 1, 1, 2014),
106                 satisfiedBy(50, 0, 0, 1, 1, 2014),
107                 unsatisfiedBy(51, 0, 0, 1, 1, 2014));
108 
109         assertCron("50-20/10", "50-20/10 0 0 1 1 ?",
110                 satisfiedBy(0, 0, 0, 1, 1, 2014),
111                 satisfiedBy(10, 0, 0, 1, 1, 2014),
112                 satisfiedBy(20, 0, 0, 1, 1, 2014),
113                 unsatisfiedBy(30, 0, 0, 1, 1, 2014),
114                 unsatisfiedBy(40, 0, 0, 1, 1, 2014),
115                 satisfiedBy(50, 0, 0, 1, 1, 2014));
116 
117         assertCron("37-3/17", "37-3/17 0 0 1 1 ?",
118                 unsatisfiedBy(3, 0, 0, 1, 1, 2014),
119                 unsatisfiedBy(11, 0, 0, 1, 1, 2014),
120                 unsatisfiedBy(17, 0, 0, 1, 1, 2014),
121                 unsatisfiedBy(20, 0, 0, 1, 1, 2014),
122                 unsatisfiedBy(21, 0, 0, 1, 1, 2014),
123                 satisfiedBy(37, 0, 0, 1, 1, 2014),
124                 satisfiedBy(54, 0, 0, 1, 1, 2014),
125                 unsatisfiedBy(59, 0, 0, 1, 1, 2014));
126     }
127 }