public void PreviousTradingDayForWeekEnd() { var tradingCalendar = new TradingCalendar(Guid.NewGuid()); var nonTradingDays = new NonTradingDay[] { new NonTradingDay(new Date(2019, 01, 01), "New Years Day"), new NonTradingDay(new Date(2019, 12, 25), "Christmas Day") }; var @event = new NonTradingDaysSetEvent(tradingCalendar.Id, 0, 2019, nonTradingDays); tradingCalendar.ApplyEvents(new Event[] { @event }); tradingCalendar.PreviousTradingDay(new Date(2019, 11, 10)).Should().Be(new Date(2019, 11, 08)); }
public void CheckIfDateIsAtradingDayReturnFalse() { var tradingCalendar = new TradingCalendar(Guid.NewGuid()); var nonTradingDays = new NonTradingDay[] { new NonTradingDay(new Date(2019, 01, 01), "New Years Day"), new NonTradingDay(new Date(2019, 12, 25), "Christmas Day") }; var @event = new NonTradingDaysSetEvent(tradingCalendar.Id, 0, 2019, nonTradingDays); tradingCalendar.ApplyEvents(new Event[] { @event }); tradingCalendar.IsTradingDay(new Date(2019, 01, 01)).Should().BeFalse(); }
public void SetNonTradingDays(int year, IEnumerable <NonTradingDay> nonTradingDays) { // Check that each day is in the correct year var invalidDate = nonTradingDays.FirstOrDefault(x => x.Date.Year != year); if (invalidDate != null) { throw new ArgumentException(String.Format("Date {0} is not in calendar year {1}", invalidDate, year)); } var @event = new NonTradingDaysSetEvent(Id, Version, year, nonTradingDays); Apply(@event); PublishEvent(@event); }
public void Apply(NonTradingDaysSetEvent @event) { Version++; // Remove any existing non trading days for the year _NonTradingDays.RemoveAll(x => x.Date.Year == @event.Year); foreach (var nonTradingDay in @event.NonTradingDays) { var newNonTradingDay = new NonTradingDay(nonTradingDay.Date, nonTradingDay.Description); var index = _NonTradingDays.BinarySearch(newNonTradingDay); if (index < 0) { _NonTradingDays.Insert(~index, newNonTradingDay); } } }
public void ApplyNonTradingDaysSetEvent() { var tradingCalendar = new TradingCalendar(Guid.NewGuid()); var nonTradingDays = new NonTradingDay[] { new NonTradingDay(new Date(2019, 01, 01), "New Years Day"), new NonTradingDay(new Date(2019, 12, 25), "Christmas Day") }; var @event = new NonTradingDaysSetEvent(tradingCalendar.Id, 0, 2019, nonTradingDays); tradingCalendar.ApplyEvents(new Event[] { @event }); using (new AssertionScope()) { tradingCalendar.IsTradingDay(new Date(2019, 01, 01)).Should().BeFalse(); tradingCalendar.IsTradingDay(new Date(2019, 12, 25)).Should().BeFalse(); tradingCalendar.IsTradingDay(new Date(2019, 01, 02)).Should().BeTrue(); } }