001package org.xbib.cron;
002
003import org.testng.annotations.Test;
004import org.xbib.elasticsearch.plugin.jdbc.cron.CronExpression;
005
006import static org.testng.Assert.assertEquals;
007
008public class CronTest {
009
010    @Test
011    public void cron() {
012        CronExpression expression = new CronExpression("0 0 14-6 ? * FRI-MON");
013        assertEquals(expression.getExpressionSummary(),
014                "seconds: 0\n" +
015                        "minutes: 0\n" +
016                        "hours: 0,1,2,3,4,5,6,14,15,16,17,18,19,20,21,22,23\n" +
017                        "daysOfMonth: ?\n" +
018                        "months: *\n" +
019                        "daysOfWeek: 1,2,6,7\n" +
020                        "lastdayOfWeek: false\n" +
021                        "nearestWeekday: false\n" +
022                        "NthDayOfWeek: 0\n" +
023                        "lastdayOfMonth: false\n" +
024                        "years: *\n"
025        );
026
027        expression = new CronExpression("0 0 0-23 ? * *");
028        assertEquals(expression.getExpressionSummary(),
029                "seconds: 0\n" +
030                        "minutes: 0\n" +
031                        "hours: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23\n" +
032                        "daysOfMonth: ?\n" +
033                        "months: *\n" +
034                        "daysOfWeek: *\n" +
035                        "lastdayOfWeek: false\n" +
036                        "nearestWeekday: false\n" +
037                        "NthDayOfWeek: 0\n" +
038                        "lastdayOfMonth: false\n" +
039                        "years: *\n"
040        );
041
042
043        expression = new CronExpression("0-59 0-59 0-23 ? * *");
044        assertEquals(expression.getExpressionSummary(),
045                "seconds: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59\n" +
046                        "minutes: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59\n" +
047                        "hours: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23\n" +
048                        "daysOfMonth: ?\n" +
049                        "months: *\n" +
050                        "daysOfWeek: *\n" +
051                        "lastdayOfWeek: false\n" +
052                        "nearestWeekday: false\n" +
053                        "NthDayOfWeek: 0\n" +
054                        "lastdayOfMonth: false\n" +
055                        "years: *\n"
056        );
057
058        expression = new CronExpression("0/5 0-59 0-23 ? * *");
059        assertEquals(expression.getExpressionSummary(),
060                "seconds: 0,5,10,15,20,25,30,35,40,45,50,55\n" +
061                        "minutes: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59\n" +
062                        "hours: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23\n" +
063                        "daysOfMonth: ?\n" +
064                        "months: *\n" +
065                        "daysOfWeek: *\n" +
066                        "lastdayOfWeek: false\n" +
067                        "nearestWeekday: false\n" +
068                        "NthDayOfWeek: 0\n" +
069                        "lastdayOfMonth: false\n" +
070                        "years: *\n"
071        );
072
073        // comma test
074        expression = new CronExpression("0 5,35 * * * ?");
075        assertEquals(expression.getExpressionSummary(),
076                "seconds: 0\n" +
077                        "minutes: 5,35\n" +
078                        "hours: *\n" +
079                        "daysOfMonth: *\n" +
080                        "months: *\n" +
081                        "daysOfWeek: ?\n" +
082                        "lastdayOfWeek: false\n" +
083                        "nearestWeekday: false\n" +
084                        "NthDayOfWeek: 0\n" +
085                        "lastdayOfMonth: false\n" +
086                        "years: *\n"
087        );
088    }
089}