View Javadoc

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    * TODO: javadoc
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(); // locale specific test
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 ?"); // seconds field and January month
121     }
122 
123     public void testGetPrettyScheduleDaily10AMNonPreferredGeneratorFormat()
124     {
125         assertPrettySchedule("Daily at 10:00 am", "0 0 10 * * ?");
126     }
127 }