/** * Copyright 2011 Sven Diedrichsen * * 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 de.jollyday.tests.parsers; import java.util.HashSet; import java.util.Set; import junit.framework.Assert; import org.junit.Test; import de.jollyday.Holiday; import de.jollyday.config.Fixed; import de.jollyday.config.FixedWeekdayRelativeToFixed; import de.jollyday.config.Holidays; import de.jollyday.config.Month; import de.jollyday.config.Weekday; import de.jollyday.config.When; import de.jollyday.config.Which; import de.jollyday.parser.impl.FixedWeekdayRelativeToFixedParser; import de.jollyday.util.CalendarUtil; /** * @author Sven * */ public class FixedWeekdayRelativeToFixedParserTest { private FixedWeekdayRelativeToFixedParser fwrtf = new FixedWeekdayRelativeToFixedParser(); private CalendarUtil calendarUtil = new CalendarUtil(); @Test public void testEmpty() { Set<Holiday> result = new HashSet<>(); Holidays config = new Holidays(); fwrtf.parse(2011, result, config); Assert.assertTrue("Result is not empty.", result.isEmpty()); } @Test public void testInvalid() { Set<Holiday> result = new HashSet<>(); Holidays config = new Holidays(); FixedWeekdayRelativeToFixed rule = new FixedWeekdayRelativeToFixed(); rule.setWhich(Which.FIRST); rule.setWeekday(Weekday.MONDAY); rule.setWhen(When.BEFORE); Fixed fixed = new Fixed(); fixed.setDay(29); fixed.setMonth(Month.JANUARY); rule.setDay(fixed); config.getFixedWeekdayRelativeToFixed().add(rule); rule.setValidTo(2010); fwrtf.parse(2011, result, config); Assert.assertTrue("Result is not empty.", result.isEmpty()); } @Test public void testParserFirstBefore() { Set<Holiday> result = new HashSet<>(); Holidays config = new Holidays(); FixedWeekdayRelativeToFixed rule = new FixedWeekdayRelativeToFixed(); rule.setWhich(Which.FIRST); rule.setWeekday(Weekday.MONDAY); rule.setWhen(When.BEFORE); Fixed fixed = new Fixed(); fixed.setDay(29); fixed.setMonth(Month.JANUARY); rule.setDay(fixed); config.getFixedWeekdayRelativeToFixed().add(rule); fwrtf.parse(2011, result, config); Assert.assertEquals("Wrong number of dates.", 1, result.size()); Assert.assertEquals("Wrong date.", calendarUtil.create(2011, 1, 24), result.iterator().next().getDate()); } @Test public void testParserSecondBefore() { Set<Holiday> result = new HashSet<>(); Holidays config = new Holidays(); FixedWeekdayRelativeToFixed rule = new FixedWeekdayRelativeToFixed(); rule.setWhich(Which.SECOND); rule.setWeekday(Weekday.MONDAY); rule.setWhen(When.BEFORE); Fixed fixed = new Fixed(); fixed.setDay(29); fixed.setMonth(Month.JANUARY); rule.setDay(fixed); config.getFixedWeekdayRelativeToFixed().add(rule); fwrtf.parse(2011, result, config); Assert.assertEquals("Wrong number of dates.", 1, result.size()); Assert.assertEquals("Wrong date.", calendarUtil.create(2011, 1, 17), result.iterator().next().getDate()); } @Test public void testParserThirdAfter() { Set<Holiday> result = new HashSet<>(); Holidays config = new Holidays(); FixedWeekdayRelativeToFixed rule = new FixedWeekdayRelativeToFixed(); rule.setWhich(Which.THIRD); rule.setWeekday(Weekday.MONDAY); rule.setWhen(When.AFTER); Fixed fixed = new Fixed(); fixed.setDay(29); fixed.setMonth(Month.JANUARY); rule.setDay(fixed); config.getFixedWeekdayRelativeToFixed().add(rule); fwrtf.parse(2011, result, config); Assert.assertEquals("Wrong number of dates.", 1, result.size()); Assert.assertEquals("Wrong date.", calendarUtil.create(2011, 2, 14), result.iterator().next().getDate()); } @Test public void testParserFourthAfter() { Set<Holiday> result = new HashSet<>(); Holidays config = new Holidays(); FixedWeekdayRelativeToFixed rule = new FixedWeekdayRelativeToFixed(); rule.setWhich(Which.FOURTH); rule.setWeekday(Weekday.TUESDAY); rule.setWhen(When.AFTER); Fixed fixed = new Fixed(); fixed.setDay(15); fixed.setMonth(Month.MARCH); rule.setDay(fixed); config.getFixedWeekdayRelativeToFixed().add(rule); fwrtf.parse(2011, result, config); Assert.assertEquals("Wrong number of dates.", 1, result.size()); Assert.assertEquals("Wrong date.", calendarUtil.create(2011, 4, 12), result.iterator().next().getDate()); } }