1 package com.atlassian.core.cron.parser;
2
3 import com.atlassian.core.util.DateUtils;
4 import junit.framework.TestCase;
5
6
7
8
9 public class TestCronHourEntry extends TestCase
10 {
11 public void testCronHoursEntryNoIncrementOrRange()
12 {
13 CronHoursEntry cronHoursEntry = new CronHoursEntry("2");
14 assertTrue(cronHoursEntry.isValid());
15 assertEquals(2, cronHoursEntry.getRunOnce());
16 assertEquals(DateUtils.AM, cronHoursEntry.getRunOnceMeridian());
17 assertEquals(-1, cronHoursEntry.getFrom());
18 assertNull(cronHoursEntry.getFromMeridian());
19 assertEquals(-1, cronHoursEntry.getTo());
20 assertNull(cronHoursEntry.getToMeridian());
21 assertEquals(-1, cronHoursEntry.getIncrement());
22 assertFalse(cronHoursEntry.hasIncrement());
23 assertTrue(cronHoursEntry.isRunOnce());
24 }
25
26 public void testCronHoursEntryWithIncrementNoRange()
27 {
28 CronHoursEntry cronHoursEntry = new CronHoursEntry("2/3");
29 assertTrue(cronHoursEntry.isValid());
30 assertEquals(-1, cronHoursEntry.getRunOnce());
31 assertNull(cronHoursEntry.getRunOnceMeridian());
32 assertEquals(2, cronHoursEntry.getFrom());
33 assertEquals(DateUtils.AM, cronHoursEntry.getFromMeridian());
34 assertEquals(2, cronHoursEntry.getTo());
35 assertEquals(DateUtils.AM, cronHoursEntry.getToMeridian());
36 assertEquals(3, cronHoursEntry.getIncrement());
37 assertTrue(cronHoursEntry.hasIncrement());
38 assertFalse(cronHoursEntry.isRunOnce());
39 }
40
41 public void testCronHoursEntryWithIncrementAndRange()
42 {
43 CronHoursEntry cronHoursEntry = new CronHoursEntry("2-16/3");
44 assertTrue(cronHoursEntry.isValid());
45 assertEquals(2, cronHoursEntry.getFrom());
46 assertEquals(DateUtils.AM, cronHoursEntry.getFromMeridian());
47 assertEquals(5, cronHoursEntry.getTo());
48 assertEquals(DateUtils.PM, cronHoursEntry.getToMeridian());
49 assertEquals(-1, cronHoursEntry.getRunOnce());
50 assertNull(cronHoursEntry.getRunOnceMeridian());
51 assertEquals(3, cronHoursEntry.getIncrement());
52 assertTrue(cronHoursEntry.hasIncrement());
53 assertFalse(cronHoursEntry.isRunOnce());
54 }
55
56 public void testInvalidCronHours()
57 {
58 CronHoursEntry cronHoursEntry = new CronHoursEntry("2,16/3");
59 assertFalse(cronHoursEntry.isValid());
60 }
61
62 public void testOutOfRange()
63 {
64 assertFalse(new CronHoursEntry("42").isValid());
65 assertFalse(new CronHoursEntry("1-25").isValid());
66 assertFalse(new CronHoursEntry("0-24").isValid());
67 assertFalse(new CronHoursEntry("44/2").isValid());
68 }
69
70 public void test12HourEdgeCases()
71 {
72 CronHoursEntry cronHoursEntry = new CronHoursEntry("0-11/3");
73 assertTrue(cronHoursEntry.isValid());
74 assertEquals(12, cronHoursEntry.getFrom());
75 assertEquals(DateUtils.AM, cronHoursEntry.getFromMeridian());
76 assertEquals(12, cronHoursEntry.getTo());
77 assertEquals(DateUtils.PM, cronHoursEntry.getToMeridian());
78 assertEquals(-1, cronHoursEntry.getRunOnce());
79 assertFalse(cronHoursEntry.isRunOnce());
80
81 cronHoursEntry = new CronHoursEntry("12-23/3");
82 assertTrue(cronHoursEntry.isValid());
83 assertEquals(12, cronHoursEntry.getFrom());
84 assertEquals(DateUtils.PM, cronHoursEntry.getFromMeridian());
85 assertEquals(12, cronHoursEntry.getTo());
86 assertEquals(DateUtils.AM, cronHoursEntry.getToMeridian());
87 assertEquals(-1, cronHoursEntry.getRunOnce());
88 assertFalse(cronHoursEntry.isRunOnce());
89 }
90
91 public void testStar() throws Exception
92 {
93 CronHoursEntry cronHoursEntry = new CronHoursEntry("*");
94 assertTrue(cronHoursEntry.isValid());
95 assertEquals(12, cronHoursEntry.getFrom());
96 assertEquals(DateUtils.AM, cronHoursEntry.getFromMeridian());
97 assertEquals(12, cronHoursEntry.getTo());
98 assertEquals(DateUtils.AM, cronHoursEntry.getToMeridian());
99 assertEquals(1, cronHoursEntry.getIncrement());
100 assertTrue(cronHoursEntry.hasIncrement());
101 assertEquals(-1, cronHoursEntry.getRunOnce());
102 assertFalse(cronHoursEntry.isRunOnce());
103 }
104
105 public void testStarWithIncrement() throws Exception
106 {
107 CronHoursEntry cronHoursEntry = new CronHoursEntry("*/2");
108 assertTrue(cronHoursEntry.isValid());
109 assertEquals(12, cronHoursEntry.getFrom());
110 assertEquals(DateUtils.AM, cronHoursEntry.getFromMeridian());
111 assertEquals(12, cronHoursEntry.getTo());
112 assertEquals(DateUtils.AM, cronHoursEntry.getToMeridian());
113 assertEquals(2, cronHoursEntry.getIncrement());
114 assertTrue(cronHoursEntry.hasIncrement());
115 assertEquals(-1, cronHoursEntry.getRunOnce());
116 assertFalse(cronHoursEntry.isRunOnce());
117 }
118
119 }