/** * 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 org.junit.Assert; import org.junit.Test; import de.jollyday.Holiday; import de.jollyday.config.Fixed; import de.jollyday.config.Holidays; import de.jollyday.config.Month; import de.jollyday.config.RelativeToFixed; import de.jollyday.config.Weekday; import de.jollyday.config.When; import de.jollyday.parser.impl.RelativeToFixedParser; import de.jollyday.util.CalendarUtil; /** * @author Sven * */ public class RelativeToFixedParserTest { private RelativeToFixedParser rtfp = new RelativeToFixedParser(); private CalendarUtil calendarUtil = new CalendarUtil(); @Test public void testEmpty() { Set<Holiday> holidays = new HashSet<>(); Holidays config = new Holidays(); rtfp.parse(2010, holidays, config); Assert.assertTrue("Expected to be empty.", holidays.isEmpty()); } @Test public void testInvalid() { Set<Holiday> holidays = new HashSet<>(); Holidays config = new Holidays(); RelativeToFixed rule = new RelativeToFixed(); rule.setValidFrom(2011); config.getRelativeToFixed().add(rule); rtfp.parse(2010, holidays, config); Assert.assertTrue("Expected to be empty.", holidays.isEmpty()); } @Test public void testWeekday() { Set<Holiday> holidays = new HashSet<>(); Holidays config = new Holidays(); RelativeToFixed rule = new RelativeToFixed(); rule.setWeekday(Weekday.THURSDAY); rule.setWhen(When.AFTER); Fixed date = new Fixed(); date.setDay(5); date.setMonth(Month.AUGUST); rule.setDate(date); config.getRelativeToFixed().add(rule); rtfp.parse(2011, holidays, config); Assert.assertEquals("Number of holidays wrong.", 1, holidays.size()); Assert.assertEquals("Wrong date.", calendarUtil.create(2011, 8, 11), holidays.iterator().next().getDate()); } @Test public void testSameWeekday() { Set<Holiday> holidays = new HashSet<>(); Holidays config = new Holidays(); RelativeToFixed rule = new RelativeToFixed(); rule.setWeekday(Weekday.WEDNESDAY); rule.setWhen(When.BEFORE); Fixed date = new Fixed(); date.setDay(23); date.setMonth(Month.NOVEMBER); rule.setDate(date); config.getRelativeToFixed().add(rule); rtfp.parse(2016, holidays, config); Assert.assertEquals("Number of holidays wrong.", 1, holidays.size()); Assert.assertEquals("Wrong date.", calendarUtil.create(2016, 11, 16), holidays.iterator().next().getDate()); } @Test public void testNumberOfDays() { Set<Holiday> holidays = new HashSet<>(); Holidays config = new Holidays(); RelativeToFixed rule = new RelativeToFixed(); rule.setDays(3); rule.setWhen(When.BEFORE); Fixed date = new Fixed(); date.setDay(5); date.setMonth(Month.AUGUST); rule.setDate(date); config.getRelativeToFixed().add(rule); rtfp.parse(2011, holidays, config); Assert.assertEquals("Number of holidays wrong.", 1, holidays.size()); Assert.assertEquals("Wrong date.", calendarUtil.create(2011, 8, 2), holidays.iterator().next().getDate()); } }