1313
1414package com .cronutils .mapper ;
1515
16+ import com .cronutils .model .Cron ;
1617import com .cronutils .model .CronType ;
18+ import com .cronutils .model .definition .CronDefinition ;
1719import com .cronutils .model .definition .CronDefinitionBuilder ;
1820import com .cronutils .parser .CronParser ;
1921import org .junit .jupiter .api .Test ;
22+ import org .junit .jupiter .params .ParameterizedTest ;
23+ import org .junit .jupiter .params .provider .Arguments ;
24+ import org .junit .jupiter .params .provider .MethodSource ;
2025
2126import java .util .Arrays ;
27+ import java .util .stream .Stream ;
2228
29+ import static com .cronutils .model .CronType .CRON4J ;
30+ import static com .cronutils .model .CronType .QUARTZ ;
31+ import static com .cronutils .model .CronType .SPRING ;
32+ import static com .cronutils .model .CronType .UNIX ;
2333import static org .junit .jupiter .api .Assertions .assertEquals ;
2434import static org .junit .jupiter .api .Assertions .assertTrue ;
2535
26- public class CronMapperIntegrationTest {
27-
28- @ Test
29- public void testSpecificTimeCron4jToQuartz () {
30- assertEquals ("0 30 8 10 6 ? *" , CronMapper .fromCron4jToQuartz ().map (cron4jParser ().parse ("30 8 10 6 *" )).asString ());
31- }
32-
33- @ Test
34- public void testMoreThanOneInstanceCron4jToQuartz () {
35- assertEquals ("0 0 11,16 * * ? *" , CronMapper .fromCron4jToQuartz ().map (cron4jParser ().parse ("0 11,16 * * *" )).asString ());
36- }
37-
38- @ Test
39- public void testRangeOfTimeCron4jToQuartz () {
40- final String expression = "0 9-18 * * 1-3" ;
41- final String expected = "0 0 9-18 ? * 2-4 *" ;
42- assertEquals (expected , CronMapper .fromCron4jToQuartz ().map (cron4jParser ().parse (expression )).asString ());
43- }
44-
45- @ Test
46- public void testSpecificTimeQuartzToCron4j () {
47- final String expression = "5 30 8 10 6 ? 1984" ;
48- assertEquals ("30 8 10 6 *" , CronMapper .fromQuartzToCron4j ().map (quartzParser ().parse (expression )).asString ());
49- }
50-
51- @ Test
52- public void testMoreThanOneInstanceQuartzToCron4j () {
53- final String expression = "5 0 11,16 * * ? 1984" ;
54- assertEquals ("0 11,16 * * *" , CronMapper .fromQuartzToCron4j ().map (quartzParser ().parse (expression )).asString ());
55- }
56-
57- @ Test
58- public void testRangeOfTimeQuartzToCron4j () {
59- final String expected = "0 9-18 * * 0-2" ;
60- final String expression = "5 0 9-18 ? * 1-3 1984" ;
61- assertEquals (expected , CronMapper .fromQuartzToCron4j ().map (quartzParser ().parse (expression )).asString ());
62- }
63-
64- @ Test
65- public void testRangeOfTimeQuartzToSpring () {
66- final String expected = "5 0 9-18 ? * 0-2" ;
67- final String expression = "5 0 9-18 ? * 1-3 1984" ;
68- assertEquals (expected , CronMapper .fromQuartzToSpring ().map (quartzParser ().parse (expression )).asString ());
36+ class CronMapperIntegrationTest {
37+ static Stream <Arguments > cronExpressions () {
38+ return Stream .of (
39+ Arguments .of (CRON4J , CronMapper .fromCron4jToQuartz (), "0 11,16 * * *" , "0 0 11,16 * * ? *" ),
40+ Arguments .of (CRON4J , CronMapper .fromCron4jToQuartz (), "0 9-18 * * 1-3" , "0 0 9-18 ? * 2-4 *" ),
41+ Arguments .of (CRON4J , CronMapper .fromCron4jToQuartz (), "30 8 10 6 *" , "0 30 8 10 6 ? *" ),
42+ Arguments .of (QUARTZ , CronMapper .fromQuartzToCron4j (), "0 0 0 ? * 5#1" , "0 0 * * 4#1" ),
43+ Arguments .of (QUARTZ , CronMapper .fromQuartzToCron4j (), "5 0 11,16 * * ? 1984" , "0 11,16 * * *" ),
44+ Arguments .of (QUARTZ , CronMapper .fromQuartzToCron4j (), "5 0 9-18 ? * 1-3 1984" , "0 9-18 * * 0-2" ),
45+ Arguments .of (QUARTZ , CronMapper .fromQuartzToCron4j (), "5 30 8 10 6 ? 1984" , "30 8 10 6 *" ),
46+ Arguments .of (QUARTZ , CronMapper .fromQuartzToSpring (), "0 0 0 ? * 5#1" , "0 0 0 ? * 4#1" ),
47+ Arguments .of (QUARTZ , CronMapper .fromQuartzToSpring (), "5 0 9-18 ? * 1-3 1984" , "5 0 9-18 ? * 0-2" ),
48+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 1 ? 1/3 FRI#1 *" , "0 1 * 1/3 5#1" ),
49+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 2 ? 1/1 SUN#2" , "0 2 * 1/1 0#2" ),
50+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 8,12 ? * *" , "0 8,12 * * *" ),
51+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "* * 8 ? * SAT" , "* 8 * * 6" ),
52+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 22 ? * MON,TUE,WED,THU,FRI *" , "0 22 * * 1,2,3,4,5" ),
53+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 13 LW * ?" , "0 13 LW * *" ),
54+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 1 1-12 ? *" , "0 0 1 1-12 *" ),
55+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 1 JAN ? 2099" , "0 0 1 1 *" ),
56+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 1,15 * ? *" , "0 0 1,15 * *" ),
57+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 19 1-12 ? *" , "0 0 19 1-12 *" ),
58+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 21 * ? 2020-2025" , "0 0 21 * *" ),
59+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 ? * 3L *" , "0 0 * * 2L" ),
60+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 ? 1/1 MON#2 *" , "0 0 * 1/1 1#2" ),
61+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0,12 ? JAN,MAY,OCT * *" , "0 0,12 * 1,5,10 *" ),
62+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 13 ? 1,4,7,10 6#2" , "0 13 * 1,4,7,10 5#2" ),
63+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 13 ? MAR,JUN,SEP,DEC 1L" , "0 13 * 3,6,9,12 0L" ),
64+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 L-10 1-12 ? *" , "0 0 L-10 1-12 *" ),
65+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0/5 * ? 1-12 4#2 *" , "0/5 * * 1-12 3#2" ),
66+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 1 1W * ?" , "0 1 1W * *" ),
67+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 13 ? 1,4,7,10 6#2" , "0 13 * 1,4,7,10 5#2" ),
68+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 15 14,19 ? JAN,MAY,JUL,OCT * *" , "15 14,19 * 1,5,7,10 *" ),
69+
70+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 ? * 5#1" , "0 0 * * 4#1" ),
71+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 0 0 L-10 1-12 ? *" , "0 0 L-10 1-12 *" ),
72+ Arguments .of (QUARTZ , CronMapper .fromQuartzToUnix (), "0 30 17 ? * 7L *" , "30 17 * * 6L" ),
73+ Arguments .of (SPRING , CronMapper .fromSpringToQuartz (), "0 0 0 ? * 5#1" , "0 0 0 ? * 6#1 *" ),
74+ Arguments .of (UNIX , CronMapper .fromUnixToQuartz (), "* * * * 3,5-6,*/2,2/3,7/4" , "0 * * ? * 4,6-7,*/2,3/3,1/4 *" ),
75+ Arguments .of (UNIX , CronMapper .fromUnixToQuartz (), "0 0 * * 1" , "0 0 0 ? * 2 *" )
76+ );
6977 }
7078
71- @ Test
72- public void testDaysOfWeekUnixToQuartz () {
73- final String input = "* * * * 3,5-6,*/2,2/3,7/4" ;
74- final String expected = "0 * * ? * 4,6-7,*/2,3/3,1/4 *" ;
75- assertEquals (expected , CronMapper .fromUnixToQuartz ().map (unixParser ().parse (input )).asString ());
79+ @ ParameterizedTest
80+ @ MethodSource ("cronExpressions" )
81+ void testCronMapping (CronType cronType , CronMapper mapper , String quartzExpression , String expectedExpression ) {
82+ Cron sourceCron = getCron (cronType , quartzExpression );
83+ String actualCron = mapper .map (sourceCron ).asString ();
84+ assertEquals (expectedExpression , actualCron , String .format ("Expected [%s] but got [%s]" , expectedExpression , actualCron ));
7685 }
7786
7887 /**
7988 * Issue #36, #56: Unix to Quartz not accurately mapping every minute pattern
8089 * or patterns that involve every day of month and every day of week.
8190 */
8291 @ Test
83- public void testEveryMinuteUnixToQuartz () {
92+ void testEveryMinuteUnixToQuartz () {
8493 final String input = "* * * * *" ;
8594 final String expected1 = "0 * * * * ? *" ;
8695 final String expected2 = "0 * * ? * * *" ;
@@ -96,22 +105,20 @@ public void testEveryMinuteUnixToQuartz() {
96105 * or patterns that involve every day of month and every day of week.
97106 */
98107 @ Test
99- public void testUnixToQuartzQuestionMarkRequired () {
108+ void testUnixToQuartzQuestionMarkRequired () {
100109 final String input = "0 0 * * 1" ;
101110 final String expected = "0 0 0 ? * 2 *" ;
102111 final String mapping = CronMapper .fromUnixToQuartz ().map (unixParser ().parse (input )).asString ();
103112 assertEquals (expected , mapping , String .format ("Expected [%s] but got [%s]" , expected , mapping ));
104113 }
105114
106- private CronParser cron4jParser () {
107- return new CronParser (CronDefinitionBuilder .instanceDefinitionFor (CronType .CRON4J ));
108- }
109-
110- private CronParser quartzParser () {
111- return new CronParser (CronDefinitionBuilder .instanceDefinitionFor (CronType .QUARTZ ));
115+ private CronParser unixParser () {
116+ return new CronParser (CronDefinitionBuilder .instanceDefinitionFor (UNIX ));
112117 }
113118
114- private CronParser unixParser () {
115- return new CronParser (CronDefinitionBuilder .instanceDefinitionFor (CronType .UNIX ));
119+ private Cron getCron (CronType cronType , String quartzExpression ) {
120+ final CronDefinition cronDefinition = CronDefinitionBuilder .instanceDefinitionFor (cronType );
121+ final CronParser parser = new CronParser (cronDefinition );
122+ return parser .parse (quartzExpression );
116123 }
117124}
0 commit comments