public void CreateHolidaysTest() { var originalFactoryMock = new Mock <IHolidaysFactory>(); var startDate = new DateTime(2012, 12, 28); var endDate = new DateTime(2018, 1, 27); originalFactoryMock.Setup(f => f.CreateHolidays(It.Is <DateTime>(d => d.Equals(startDate)), It.Is <DateTime>(d => d.Equals(endDate)))) .Returns(new List <DateTime>() { new DateTime(2017, 1, 1), new DateTime(2018, 1, 1), new DateTime(2018, 1, 6), new DateTime(2018, 1, 27), }); IHolidaysFactory sut = new FirstWeekdayHolidayShiftingDecorator(originalFactoryMock.Object); var expected = new List <DateTime>() { new DateTime(2017, 1, 2), new DateTime(2018, 1, 1), new DateTime(2018, 1, 8), }; Assert.That(sut.CreateHolidays(startDate, endDate), Is.EquivalentTo(expected)); originalFactoryMock.VerifyAll(); }
public void BusinessDayCounterIntegrationWithAnnualHolidaysTests() { var newYear = new FirstWeekdayHolidayShiftingDecorator(new FixedDateHolidaysFactory(1, 1)); var christmas = new FixedDateHolidaysFactory(12, 25); var boxing = new FixedDateHolidaysFactory(12, 26); var queenDay = new DayOfMonthHolidaysFactory(6, DayOfWeek.Monday, 2); var aggregator = new HolidaysAggregator(new List <IHolidaysFactory>() { newYear, christmas, boxing, queenDay }); var counter = new BusinessDayCounter(); Assert.That(counter.BusinessDaysBetweenTwoDates(new DateTime(2016, 12, 20), new DateTime(2018, 2, 1), aggregator), Is.EqualTo(291 - 6)); }