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