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 minutes cron field.
10   *
11   * @since v1.5
12   */
13  public abstract class CronExpressionMinutesTest extends AbstractCronExpressionTest {
14      protected CronExpressionMinutesTest(final CronFactory cronFactory) {
15          super(cronFactory);
16      }
17  
18      private void minutesBy17s(final String minutesExpr) {
19          assertCron(minutesExpr, "0 " + minutesExpr + " 0 1 1 ?",
20                  satisfiedBy(0, 0, 0, 1, 1, 2014),
21                  unsatisfiedBy(0, 1, 0, 1, 1, 2014),
22                  unsatisfiedBy(0, 16, 0, 1, 1, 2014),
23                  satisfiedBy(0, 17, 0, 1, 1, 2014),
24                  unsatisfiedBy(0, 20, 0, 1, 1, 2014),
25                  satisfiedBy(0, 34, 0, 1, 1, 2014),
26                  satisfiedBy(0, 51, 0, 1, 1, 2014),
27                  unsatisfiedBy(0, 52, 0, 1, 1, 2014),
28                  unsatisfiedBy(0, 59, 0, 1, 1, 2014));
29      }
30  
31      @Test
32      public void testMinutesIncrement_simple() {
33          minutesBy17s("/17");
34          minutesBy17s("*/17");
35          minutesBy17s("0/17");
36          minutesBy17s("0-52/17");
37  
38          assertCron("3/17", "0 3/17 0 1 1 ?",
39                  satisfiedBy(0, 3, 0, 1, 1, 2014),
40                  unsatisfiedBy(0, 17, 0, 1, 1, 2014),
41                  satisfiedBy(0, 20, 0, 1, 1, 2014),
42                  satisfiedBy(0, 37, 0, 1, 1, 2014),
43                  unsatisfiedBy(0, 51, 0, 1, 1, 2014),
44                  satisfiedBy(0, 54, 0, 1, 1, 2014));
45      }
46  
47      @Test
48      public void testMinutesIncrement_normalRange() {
49          assertCron("0-50/17", "0 0-50/17 0 1 1 ?",
50                  satisfiedBy(0, 0, 0, 1, 1, 2014),
51                  unsatisfiedBy(0, 7, 0, 1, 1, 2014),
52                  satisfiedBy(0, 17, 0, 1, 1, 2014),
53                  unsatisfiedBy(0, 24, 0, 1, 1, 2014),
54                  satisfiedBy(0, 34, 0, 1, 1, 2014),
55                  unsatisfiedBy(0, 50, 0, 1, 1, 2014),
56                  unsatisfiedBy(0, 51, 0, 1, 1, 2014));
57  
58          assertCron("20-50/10", "0 20-50/10 0 1 1 ?",
59                  unsatisfiedBy(0, 0, 0, 1, 1, 2014),
60                  unsatisfiedBy(0, 10, 0, 1, 1, 2014),
61                  satisfiedBy(0, 20, 0, 1, 1, 2014),
62                  satisfiedBy(0, 30, 0, 1, 1, 2014),
63                  satisfiedBy(0, 40, 0, 1, 1, 2014),
64                  satisfiedBy(0, 50, 0, 1, 1, 2014));
65  
66          assertCron("3-37/17", "0 3-37/17 0 1 1 ?",
67                  satisfiedBy(0, 3, 0, 1, 1, 2014),
68                  unsatisfiedBy(0, 17, 0, 1, 1, 2014),
69                  satisfiedBy(0, 20, 0, 1, 1, 2014),
70                  unsatisfiedBy(0, 21, 0, 1, 1, 2014),
71                  satisfiedBy(0, 37, 0, 1, 1, 2014),
72                  unsatisfiedBy(0, 54, 0, 1, 1, 2014),
73                  unsatisfiedBy(0, 59, 0, 1, 1, 2014));
74      }
75  
76      @Test
77      public void testMinutesIncrement_wrappedRange() {
78          assertCron("50-0/17", "0 50-0/17 0 1 1 ?",
79                  unsatisfiedBy(0, 0, 0, 1, 1, 2014),
80                  unsatisfiedBy(0, 7, 0, 1, 1, 2014),
81                  unsatisfiedBy(0, 17, 0, 1, 1, 2014),
82                  unsatisfiedBy(0, 24, 0, 1, 1, 2014),
83                  unsatisfiedBy(0, 34, 0, 1, 1, 2014),
84                  satisfiedBy(0, 50, 0, 1, 1, 2014),
85                  unsatisfiedBy(0, 51, 0, 1, 1, 2014));
86  
87          assertCron("50-20/10", "0 50-20/10 0 1 1 ?",
88                  satisfiedBy(0, 0, 0, 1, 1, 2014),
89                  satisfiedBy(0, 10, 0, 1, 1, 2014),
90                  satisfiedBy(0, 20, 0, 1, 1, 2014),
91                  unsatisfiedBy(0, 30, 0, 1, 1, 2014),
92                  unsatisfiedBy(0, 40, 0, 1, 1, 2014),
93                  satisfiedBy(0, 50, 0, 1, 1, 2014));
94  
95          assertCron("37-3/17", "0 37-3/17 0 1 1 ?",
96                  unsatisfiedBy(0, 3, 0, 1, 1, 2014),
97                  unsatisfiedBy(0, 11, 0, 1, 1, 2014),
98                  unsatisfiedBy(0, 17, 0, 1, 1, 2014),
99                  unsatisfiedBy(0, 20, 0, 1, 1, 2014),
100                 unsatisfiedBy(0, 21, 0, 1, 1, 2014),
101                 satisfiedBy(0, 37, 0, 1, 1, 2014),
102                 satisfiedBy(0, 54, 0, 1, 1, 2014),
103                 unsatisfiedBy(0, 59, 0, 1, 1, 2014));
104     }
105 }