1 package com.atlassian.core.cron.parser;
2
3 import junit.framework.TestCase;
4
5
6
7
8 public class TestCronDayOfWeekEntry extends TestCase
9 {
10 public void testOrdinal()
11 {
12 CronDayOfWeekEntry cronDayOfWeekEntry = new CronDayOfWeekEntry("2#2");
13 assertTrue(cronDayOfWeekEntry.isValid());
14 assertEquals("2", cronDayOfWeekEntry.getDayInMonthOrdinal());
15 }
16
17 public void testDayOfWeekWithOrdinal()
18 {
19 CronDayOfWeekEntry cronDayOfWeekEntry = new CronDayOfWeekEntry("MON#2");
20 assertTrue(cronDayOfWeekEntry.isValid());
21 assertEquals("2", cronDayOfWeekEntry.getDayInMonthOrdinal());
22 }
23
24 public void testDayOfWeekWithOrdinalLast()
25 {
26 CronDayOfWeekEntry cronDayOfWeekEntry = new CronDayOfWeekEntry("MONL");
27 assertTrue(cronDayOfWeekEntry.isValid());
28 assertEquals("L", cronDayOfWeekEntry.getDayInMonthOrdinal());
29
30 cronDayOfWeekEntry = new CronDayOfWeekEntry("MONl");
31 assertTrue(cronDayOfWeekEntry.isValid());
32 assertEquals("L", cronDayOfWeekEntry.getDayInMonthOrdinal());
33
34 cronDayOfWeekEntry = new CronDayOfWeekEntry("2L");
35 assertTrue(cronDayOfWeekEntry.isValid());
36 assertEquals("L", cronDayOfWeekEntry.getDayInMonthOrdinal());
37
38 cronDayOfWeekEntry = new CronDayOfWeekEntry("2l");
39 assertTrue(cronDayOfWeekEntry.isValid());
40 assertEquals("L", cronDayOfWeekEntry.getDayInMonthOrdinal());
41 }
42
43 public void testDayOfWeekWithInvalidOrdinals()
44 {
45 assertFalse(new CronDayOfWeekEntry("MON#5").isValid());
46 assertFalse(new CronDayOfWeekEntry("MON#6").isValid());
47 assertFalse(new CronDayOfWeekEntry("MON#7").isValid());
48 }
49
50 public void testDayOfWeekSpecifed()
51 {
52 CronDayOfWeekEntry cronDayOfWeekEntry = new CronDayOfWeekEntry("MON,WED,FRI");
53 assertTrue(cronDayOfWeekEntry.isValid());
54 assertTrue(cronDayOfWeekEntry.isDaySpecified("MON"));
55 assertTrue(cronDayOfWeekEntry.isDaySpecified("2"));
56 assertFalse(cronDayOfWeekEntry.isDaySpecified("TUE"));
57 assertFalse(cronDayOfWeekEntry.isDaySpecified("3"));
58 assertTrue(cronDayOfWeekEntry.isDaySpecified("WED"));
59 assertTrue(cronDayOfWeekEntry.isDaySpecified("4"));
60 assertFalse(cronDayOfWeekEntry.isDaySpecified("THU"));
61 assertFalse(cronDayOfWeekEntry.isDaySpecified("5"));
62 assertTrue(cronDayOfWeekEntry.isDaySpecified("FRI"));
63 assertTrue(cronDayOfWeekEntry.isDaySpecified("6"));
64 assertFalse(cronDayOfWeekEntry.isDaySpecified("SAT"));
65 assertFalse(cronDayOfWeekEntry.isDaySpecified("7"));
66 assertFalse(cronDayOfWeekEntry.isDaySpecified("SUN"));
67 assertFalse(cronDayOfWeekEntry.isDaySpecified("1"));
68 assertNull(cronDayOfWeekEntry.getDayInMonthOrdinal());
69 }
70
71 public void testValids()
72 {
73 assertTrue(new CronDayOfWeekEntry("?").isValid());
74 assertTrue(new CronDayOfWeekEntry("*").isValid());
75 }
76
77 public void testInvalids()
78 {
79 assertFalse(new CronDayOfWeekEntry("MON#MON").isValid());
80 assertFalse(new CronDayOfWeekEntry("4#MON").isValid());
81 assertFalse(new CronDayOfWeekEntry("9#1").isValid());
82 assertFalse(new CronDayOfWeekEntry("#").isValid());
83 assertFalse(new CronDayOfWeekEntry("##").isValid());
84 assertFalse(new CronDayOfWeekEntry("0#1").isValid());
85 assertFalse(new CronDayOfWeekEntry("#,MON").isValid());
86 assertFalse(new CronDayOfWeekEntry(" ").isValid());
87 assertFalse(new CronDayOfWeekEntry(null).isValid());
88 assertFalse(new CronDayOfWeekEntry("").isValid());
89 assertFalse(new CronDayOfWeekEntry("#?").isValid());
90 assertFalse(new CronDayOfWeekEntry("MON-WED").isValid());
91 assertFalse(new CronDayOfWeekEntry("1-6").isValid());
92 assertFalse(new CronDayOfWeekEntry("%").isValid());
93 assertFalse(new CronDayOfWeekEntry("MON#L").isValid());
94 assertFalse(new CronDayOfWeekEntry("MON#l").isValid());
95 assertFalse(new CronDayOfWeekEntry("2#l").isValid());
96 }
97
98 public void testGetDaysAsNumbers()
99 {
100 String monTueWed = "2,3,4";
101 CronDayOfWeekEntry cronDayOfWeekEntry = new CronDayOfWeekEntry(monTueWed);
102 assertEquals(monTueWed, cronDayOfWeekEntry.getDaysAsNumbers());
103 String monTueWedWords = "MON,TUE,WED";
104 cronDayOfWeekEntry = new CronDayOfWeekEntry(monTueWedWords);
105 assertEquals(monTueWed, cronDayOfWeekEntry.getDaysAsNumbers());
106 }
107
108 }