/* * 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.text.ParseException; import org.junit.Test; import org.krakenapps.cron.Schedule; import org.krakenapps.cron.impl.CronField; import org.osgi.framework.InvalidSyntaxException; import static org.junit.Assert.*; public class ScheduleBuildTest { @Test public void testBuildManual() throws Exception { try { Schedule test = new Schedule.Builder("daily").set(CronField.Type.DAY_OF_WEEK, "0").set( CronField.Type.DAY_OF_MONTH, "*/10").set(CronField.Type.HOUR, "4-10").set(CronField.Type.MINUTE, "0,3,59").set(CronField.Type.MONTH, "12").build(); Schedule test2 = new Schedule.Builder("daily").set(CronField.Type.DAY_OF_WEEK, "3").set( CronField.Type.DAY_OF_MONTH, "1").set(CronField.Type.HOUR, "0-23").set(CronField.Type.MINUTE, "2,3,3").build(); System.out.println("test1" + test); System.out.println("test2" + test2); assertEquals(test.fieldMembers(CronField.Type.MINUTE), "{0, 3, 59}"); assertEquals(test.fieldMembers(CronField.Type.DAY_OF_MONTH), "{0, 10, 20, 30}"); // interval assertEquals(test.fieldMembers(CronField.Type.HOUR), "{4, 5, 6, 7, 8, 9, 10}"); // range assertEquals(test.fieldMembers(CronField.Type.MONTH), "{11}"); assertEquals(test2.fieldMembers(CronField.Type.MINUTE), "{2, 3}"); // specify assertEquals(test2.fieldMembers(CronField.Type.MONTH), "{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}"); // default assertEquals(test, new Schedule.Builder("daily").build("0,3,59 4-10 */10 12 0")); } catch (Exception e) { fail(); // TODO: handle exception } } @Test public void testBuildString() throws InvalidSyntaxException, Exception { try { Schedule test3 = new Schedule.Builder("daily").build("0 0 1 1 3-6"); System.out.println("test3" + test3); assertEquals(test3.fieldMembers(CronField.Type.DAY_OF_WEEK), "{3, 4, 5, 6}"); assertEquals(test3.fieldMembers(CronField.Type.DAY_OF_MONTH), "{0}"); assertEquals(test3.fieldMembers(CronField.Type.MONTH), "{0}"); } catch (Exception e) { fail(); } } @Test public void testBuildShort() throws InvalidSyntaxException, Exception { try { Schedule test8 = new Schedule.Builder("daily").build(); Schedule test4 = new Schedule.Builder("daily").buildYearly(); Schedule test5 = new Schedule.Builder("daily").buildMonthly(); Schedule test6 = new Schedule.Builder("daily").buildDaily(); Schedule test7 = new Schedule.Builder("daily").buildWeekly(); System.out.println("test8" + test8); System.out.println("test4" + test4); System.out.println("test5" + test5); System.out.println("test6" + test6); System.out.println("test7" + test7); assertEquals(test8, new Schedule.Builder("daily").build("* * * * * ")); assertEquals(test4, new Schedule.Builder("daily").build("0 0 1 1 *")); assertEquals(test5, new Schedule.Builder("daily").build("0 0 1 * *")); assertEquals(test6, new Schedule.Builder("daily").build("0 0 * * *")); assertEquals(test7, new Schedule.Builder("daily").build("0 0 * * 0")); } catch (Exception e) { fail(); // TODO: handle exception } } @Test public void testSafety() throws Exception { try { Schedule.Builder safe_builder = new Schedule.Builder("daily"); Schedule safe_test = safe_builder.build(); System.out.println("safe_test1" + safe_test); safe_builder.set(CronField.Type.HOUR, "3"); System.out.println("safe_test2" + safe_test); assertEquals(safe_test, new Schedule.Builder("daily").build()); } catch (Exception e) { fail(); } } @Test public void testCollision() { try { Schedule test8 = new Schedule.Builder("daily").build(); Schedule test9 = new Schedule.Builder("daily").set(CronField.Type.DAY_OF_WEEK, "*").build(); Schedule test10 = new Schedule.Builder("daily").set(CronField.Type.DAY_OF_WEEK, "3").build(); System.out.println("test8" + test8); System.out.println("test9" + test9); System.out.println("test10" + test10); assertEquals(test8.fieldMembers(CronField.Type.DAY_OF_WEEK), "{}"); assertEquals(test9.fieldMembers(CronField.Type.DAY_OF_WEEK), "{}"); assertEquals(test10.fieldMembers(CronField.Type.DAY_OF_MONTH), "{}"); assertEquals(test10.fieldMembers(CronField.Type.DAY_OF_WEEK), "{3}"); } catch (Exception e) { fail(); } } @Test public void testException() { try { new Schedule.Builder("daily").set(CronField.Type.MONTH, "0"); fail(); } catch (ParseException e) { } try { new Schedule.Builder("daily").set(CronField.Type.DAY_OF_MONTH, "0"); fail(); } catch (ParseException e) { } try { new Schedule.Builder("daily").set(CronField.Type.HOUR, "24"); fail(); } catch (ParseException e) { } try { new Schedule.Builder("daily").set(CronField.Type.HOUR, "-4"); fail(); } catch (ParseException e) { } try { new Schedule.Builder("daily").build("0 0 0 0"); fail(); } catch (ParseException e) { } catch (Exception e) { } } }