/*
* Copyright 2009 NCHOVY
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.krakenapps.cron.test;
import java.util.Calendar;
import java.util.Date;
import org.junit.Test;
import org.krakenapps.cron.Schedule;
import org.krakenapps.cron.impl.NextOccurenceCalculator;
import org.osgi.framework.InvalidSyntaxException;
import static org.junit.Assert.*;
public class NextOccurTest {
@SuppressWarnings("deprecation")
@Test
public void testNext1() throws InvalidSyntaxException, Exception {
Date date = new Date(Date.parse("Feb 27, 2009 8:14 PM"));
System.out.println("============ test1 : " + date + "=============");
Schedule sche1 = new Schedule.Builder("awef").build();
Schedule sche2 = new Schedule.Builder("awef").buildHourly();
Schedule sche3 = new Schedule.Builder("awef").buildDaily();
Schedule sche4 = new Schedule.Builder("awef").buildWeekly();
Schedule sche5 = new Schedule.Builder("awef").buildYearly();
Schedule sche6 = new Schedule.Builder("awef").build("*/30 * * * *");
Schedule sche7 = new Schedule.Builder("awef").build("3,17,20 * * * *");
Schedule sche8 = new Schedule.Builder("awef")
.build("3,17,20 */3 * * *");
Schedule sche9 = new Schedule.Builder("awef").build("0 0 5,28 * *");
Schedule sche10 = new Schedule.Builder("awef").build("0 0 5,28 3 *");
Schedule sche11 = new Schedule.Builder("awef").build("0 0 5,28 3 1");
Schedule sche12 = new Schedule.Builder("awef").build("* * 31 * 0");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche1, date).toString(),"Fri Feb 27 20:14:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche2, date).toString(),"Fri Feb 27 21:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche3, date).toString(),"Sat Feb 28 00:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche4, date).toString(),"Sun Mar 01 00:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche5, date).toString(),"Fri Jan 01 00:00:00 KST 2010");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche6, date).toString(),"Fri Feb 27 20:30:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche7, date).toString(),"Fri Feb 27 20:17:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche8, date).toString(),"Fri Feb 27 21:03:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche9, date).toString(),"Sat Feb 28 00:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche10, date).toString(),"Thu Mar 05 00:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche11, date).toString(),"Mon Mar 02 00:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche12, date).toString(),"Sun Mar 01 00:00:00 KST 2009");
}
@SuppressWarnings("deprecation")
@Test
public void testNext2() throws InvalidSyntaxException, Exception {
Date date = new Date(Date.parse("Aug 6, 2009 1:11 AM"));
System.out.println("============ test2 : " + date + "=============");
Schedule sche1 = new Schedule.Builder("awef").build();
Schedule sche2 = new Schedule.Builder("awef").buildHourly();
Schedule sche3 = new Schedule.Builder("awef").buildDaily();
Schedule sche4 = new Schedule.Builder("awef").buildWeekly();
Schedule sche5 = new Schedule.Builder("awef").buildYearly();
Schedule sche6 = new Schedule.Builder("awef").build("*/30 * * * *");
Schedule sche7 = new Schedule.Builder("awef").build("3,17,20 * * * *");
Schedule sche8 = new Schedule.Builder("awef")
.build("3,17,20 */3 * * *");
Schedule sche9 = new Schedule.Builder("awef").build("0 0 5,28 * *");
Schedule sche10 = new Schedule.Builder("awef").build("0 0 5,28 3 *");
Schedule sche11 = new Schedule.Builder("awef").build("0 0 5,28 3 1");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche1, date).toString(),"Thu Aug 06 01:11:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche2, date).toString(),"Thu Aug 06 02:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche3, date).toString(),"Fri Aug 07 00:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche4, date).toString(),"Sun Aug 09 00:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche5, date).toString(),"Fri Jan 01 00:00:00 KST 2010");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche6, date).toString(),"Thu Aug 06 01:30:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche7, date).toString(),"Thu Aug 06 01:17:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche8, date).toString(),"Thu Aug 06 03:03:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche9, date).toString(),"Fri Aug 28 00:00:00 KST 2009");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche10, date).toString(),"Fri Mar 05 00:00:00 KST 2010");
assertEquals(NextOccurenceCalculator.getNextOccurence(sche11, date).toString(),"Mon Mar 01 00:00:00 KST 2010");
}
@Test
public void testDaily() throws InvalidSyntaxException, Exception{
Date date1 = new Date();
Schedule sche = new Schedule.Builder("aef").buildDaily();
System.out.println("============ daily : " + date1 + "=============");
for(int i = 0 ; i < 20; i++){
date1 = NextOccurenceCalculator.getNextOccurence(sche, date1);
System.out.println(date1);
date1 = new Date(date1.getTime() + 60 * 1000);
}
}
@Test
public void testWeekly() throws InvalidSyntaxException, Exception{
Date date1 = new Date();
Schedule sche = new Schedule.Builder("aef").buildWeekly();
System.out.println("============ weekly : " + date1 + "=============");
for(int i = 0 ; i < 20; i++){
date1 = NextOccurenceCalculator.getNextOccurence(sche, date1);
System.out.println(date1);
date1 = new Date(date1.getTime() + 60 * 1000);
}
}
@Test
public void testMondayAnd10th() throws InvalidSyntaxException, Exception{
Date date1 = new Date();
Schedule sche = new Schedule.Builder("aef").build("0 0 */10 * 1");
System.out.println("============ mondayAnd10th : " + date1 + "=============");
for(int i = 0 ; i < 20; i++){
date1 = NextOccurenceCalculator.getNextOccurence(sche, date1);
System.out.println(date1);
date1 = new Date(date1.getTime() + 60 * 1000);
}
}
@SuppressWarnings("deprecation")
@Test
public void test31th() throws InvalidSyntaxException, Exception{
Date date1 = new Date(Date.parse("Feb 27, 2009 8:14 PM"));
Schedule sche = new Schedule.Builder("aef").build("0 0 31 * *");
System.out.println("============ 31th : " + date1 + "=============");
for(int i = 0 ; i < 20; i++){
date1 = NextOccurenceCalculator.getNextOccurence(sche, date1);
System.out.println(date1);
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
assertTrue(cal.get(Calendar.DAY_OF_MONTH) == 31);
date1 = new Date(date1.getTime() + 60 * 1000);
}
}
}