public void NextSunday() { var monday = new DateTime(2020, 8, 24); var nextSunday = monday.AddDays(6); Assert.AreEqual(nextSunday, EasterCalculator.NextSunday(monday)); }
public IPublicHolidayCalculator GetCalculator(PublicHoliday holiday) { IPublicHolidayCalculator calculator = null; switch (holiday.HolidayType) { case PublicHolidayType.FixedDate: calculator = new FixedDayCalculator(); break; case PublicHolidayType.BasedOnAnotherHoliday: calculator = new BasedOnOtherHolidayCalculator(); break; case PublicHolidayType.RepeatEveryXYear: calculator = new YearRepetitionCalculator(); break; case PublicHolidayType.Easter: calculator = new EasterCalculator(); break; case PublicHolidayType.SpecificDayInWeek: calculator = new SpecificWeekDayCalculator(); break; default: throw new ArgumentException(); } return(calculator); }
private List <DateTime> GetEasterSundayAndMonday(int year) { List <DateTime> dates = new List <DateTime>(); DateTime easter = EasterCalculator.GetEasterSunday(year); dates.Add(easter); dates.Add(easter.AddDays(1)); return(dates); }
static void Main(string[] args) { var holidays = EasterCalculator.EasterHolidays("2020"); foreach (var holiday in holidays) { Console.WriteLine(holiday.ToLongDateString()); } Console.ReadLine(); }
public void GetPublicHolidayByYears_WhenPassedYearsAndHolidays_ThenReturnsExpectedDateList(List <int> years, PublicHoliday holiday, List <DateTime> expectedResult) { // Arrange var target = new EasterCalculator(); // Act var actual = target.GetPublicHolidayByYears(years, holiday); // Assert actual.Should().BeEquivalentTo(expectedResult); }
public override DateTime?GetInstance(int year) { if (dayCache.ContainsKey(year)) { return(dayCache[year]); } var easter = EasterCalculator.CalculateEasterDate(year); var date = easter.AddDays(daysOffset); dayCache.Add(year, date); return(date); }
public void GetPublicHolidayByYears_WhenNullName_ThenThrows() { // Arrange var target = new EasterCalculator(); var holiday = new PublicHoliday { Name = null }; // Act Action actual = () => target.GetPublicHolidayByYears(null, holiday); // Assert actual.Should().Throw <ArgumentException>().WithMessage("Cannot process a custom holidays without a name."); }
public void EasterHolidaysException() { Assert.Throws <FormatException>(() => EasterCalculator.EasterHolidays("not a year")); }
public void EasterHolidays2020() { DateTime[] holidays2020 = { new DateTime(2020, 4, 9), new DateTime(2020, 4, 10), new DateTime(2020, 4, 12), new DateTime(2020, 4, 13) }; Assert.AreEqual(holidays2020, EasterCalculator.EasterHolidays("2020")); }
public override DateTime?GetInstance(int year) { return(dayCache.GetOrAdd(year, () => EasterCalculator.CalculateEasterDate(year).AddDays(daysOffset))); }