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
10
11
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 }