1 package com.atlassian.core.cron.generator;
2
3 import com.atlassian.core.cron.MockI18nBean;
4 import com.atlassian.core.cron.parser.CronExpressionParser;
5 import junit.framework.TestCase;
6
7
8
9
10 public class TestCronExpressionDescriptor extends TestCase
11 {
12 private void assertPrettySchedule(String expectedPretty, String cronString)
13 {
14 CronExpressionParser parser = new CronExpressionParser(cronString);
15 MockI18nBean i18n = new MockI18nBean();
16 CronExpressionDescriptor descriptor = new CronExpressionDescriptor(i18n);
17 assertEquals(expectedPretty, descriptor.getPrettySchedule(parser.getCronEditorBean()));
18 }
19
20 public void testGetPrettyScheduleInvalid()
21 {
22 String invalidString = "Invalid 2 3 4 5 6";
23 assertPrettySchedule(invalidString, invalidString);
24 }
25
26 public void testGetPrettyScheduleDailyAt10()
27 {
28 assertPrettySchedule("Daily at 10:00 am", "0 0 10 * * *");
29 }
30
31 public void testGetPrettyScheduleDailyAt1035()
32 {
33 assertPrettySchedule("Daily at 10:35 am", "0 35 10 * * *");
34 }
35
36 public void testGetPrettyScheduleDailyBetween10And3Every2Hours()
37 {
38 assertPrettySchedule("Daily every 2 hours from 10:00 am to 3:00 pm", "0 0 10-14/2 * * *");
39 }
40
41 public void testGetPrettyScheduleDailyBetween9And2Every15Minutes()
42 {
43 assertPrettySchedule("Daily every 15 minutes from 9:00 am to 2:00 pm", "0 0/15 9-13 * * *");
44 }
45
46 public void testGetPrettyScheduleDailyAllDayEvery15Minutes()
47 {
48 assertPrettySchedule("Daily every 15 minutes", "0 0/15 * * * *");
49 }
50
51 public void testGetPrettyScheduleDailyAllDayEvery2Hours()
52 {
53 assertPrettySchedule("Daily every 2 hours", "0 0 */2 * * *");
54 }
55
56 public void testGetPrettyScheduleWithHoursAndMinutesIncrementsRoundTrips()
57 {
58 final String expression = "0 0/15 */2 ? * *";
59 assertPrettySchedule(expression, expression);
60 }
61
62 public void testGetPrettyScheduleWithSingleHourAndMinutesIncrementsRoundTrips()
63 {
64 final String expression = "0 0/15 6 ? * *";
65 assertPrettySchedule(expression, expression);
66 }
67
68 public void testGetPrettyScheduleWithSingleHourRangeAndMinutesIncrementsRoundTrips()
69 {
70 assertPrettySchedule("Daily every 15 minutes from 6:00 am to 7:00 am", "0 0/15 6-6 ? * *");
71 }
72
73 public void testGetPrettyScheduleDaysPerWeekMonday()
74 {
75 assertPrettySchedule("Each Monday at 10:00 am", "0 0 10 * * 2");
76 }
77
78 public void testGetPrettyScheduleDaysPerWeekSunTueThu()
79 {
80 assertPrettySchedule("Each Sunday, Tuesday and Thursday at 10:00 am", "0 0 10 * * 3,1,5");
81 }
82
83 public void testGetPrettyScheduleDaysPerWeekTueAndThurs()
84 {
85 assertPrettySchedule("Each Tuesday and Thursday at 10:00 am", "0 0 10 * * 3,5");
86 }
87
88 public void testGetPrettyScheduleDaysPerWeekMondayTueAndThurs()
89 {
90 assertPrettySchedule("Each Monday, Tuesday and Thursday at 10:00 am", "0 0 10 * * 2,3,5");
91 }
92
93 public void testGetPrettyScheduleDaysPerWeekMondayTueWithRange()
94 {
95 assertPrettySchedule("Each Monday and Tuesday every 30 minutes from 8:00 am to 11:00 am", "0 0/30 8-10 * * 2,3");
96 }
97
98 public void testGetPrettyScheduleDaysPerMonthFirstOfMonth()
99 {
100 assertPrettySchedule("The 1st day of every month at 10:00 am", "0 0 10 1 * ?");
101 }
102
103 public void testGetPrettyScheduleDaysPerMonthLastOfMonth()
104 {
105 assertPrettySchedule("The last day of every month at 1:25 pm", "0 25 13 L * ?");
106 }
107
108 public void testGetPrettyScheduleDaysPerMonthSecondWednesday()
109 {
110 assertPrettySchedule("The second Wednesday of every month at 4:25 pm", "0 25 16 ? * 4#2");
111 }
112
113 public void testGetPrettyScheduleDaysPerMonthLastFriday()
114 {
115 assertPrettySchedule("The last Friday of every month at 8:15 am", "0 15 8 ? * 6L");
116 }
117
118 public void testGetPrettyScheduleAdvanced()
119 {
120 assertPrettySchedule("30 0 10 * 1 ?", "30 0 10 * 1 ?");
121 }
122
123 public void testGetPrettyScheduleDaily10AMNonPreferredGeneratorFormat()
124 {
125 assertPrettySchedule("Daily at 10:00 am", "0 0 10 * * ?");
126 }
127 }