public async Task Get_events_from_time_range_with_only_end_in_range() { // Act var now = DateTime.Now; var rangeEnd = new ExactDateInfo( Era.AnnoDomini, now.Year + 1, 1, 1, 1 ); var eventsInTimeRange = await _fixture.EventsRepo.GetEventsAsync( InRange( ExactDateInfo.AnnoDomini(2020, 2, 1, 0), rangeEnd ) ); // Assert eventsInTimeRange.ShouldNotBeNull(); eventsInTimeRange.Count.ShouldBe(2); eventsInTimeRange.ShouldContain(e => e.Description == "C"); eventsInTimeRange.ShouldContain(e => e.Description == "D"); }
public void One_year_tick_interval() { var tickInterval = GetFirstTickIntervalWithGreaterDuration(Duration.Zero.AddMonths(8)); tickInterval.ShouldNotBeNull(); var d1 = ExactDateInfo.AnnoDomini(100, 1, 1, 0); var d2 = ExactDateInfo.AnnoDomini(102, 1, 1, 0); var ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(d1); ticks[1].Date.ShouldBe(ExactDateInfo.AnnoDomini(101, 1, 1, 0)); ticks[2].Date.ShouldBe(d2); d1 = ExactDateInfo.AnnoDomini(100, 3, 3, 5); d2 = ExactDateInfo.AnnoDomini(104, 8, 5, 17); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(4); ticks[0].Date.ShouldBe(ExactDateInfo.AnnoDomini(101, 1, 1, 0)); ticks[1].Date.ShouldBe(ExactDateInfo.AnnoDomini(102, 1, 1, 0)); ticks[2].Date.ShouldBe(ExactDateInfo.AnnoDomini(103, 1, 1, 0)); ticks[3].Date.ShouldBe(ExactDateInfo.AnnoDomini(104, 1, 1, 0)); d1 = ExactDateInfo.BeforeChrist(100, 3, 3, 5); d2 = ExactDateInfo.BeforeChrist(97, 8, 5, 17); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(ExactDateInfo.BeforeChrist(99, 1, 1, 0)); ticks[1].Date.ShouldBe(ExactDateInfo.BeforeChrist(98, 1, 1, 0)); ticks[2].Date.ShouldBe(ExactDateInfo.BeforeChrist(97, 1, 1, 0)); d1 = ExactDateInfo.BeforeChrist(2, 3, 3, 5); d2 = ExactDateInfo.AnnoDomini(2, 8, 5, 17); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(ExactDateInfo.BeforeChrist(1, 1, 1, 0)); ticks[1].Date.ShouldBe(ExactDateInfo.AnnoDomini(1, 1, 1, 0)); ticks[2].Date.ShouldBe(ExactDateInfo.AnnoDomini(2, 1, 1, 0)); d1 = ExactDateInfo.AnnoDomini(1, 3, 3, 5); d2 = ExactDateInfo.AnnoDomini(2, 8, 5, 17); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(1); ticks[0].Date.ShouldBe(ExactDateInfo.AnnoDomini(2, 1, 1, 0)); }
public void One_hour_tick_interval() { var tickInterval = GetFirstTickIntervalWithGreaterDuration(Duration.Zero); tickInterval.ShouldNotBeNull(); var d1 = ExactDateInfo.AnnoDomini(100, 2, 3, 12); var d2 = ExactDateInfo.AnnoDomini(100, 2, 3, 14); var ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(d1); ticks[1].Date.ShouldBe(ExactDateInfo.AnnoDomini(100, 2, 3, 13)); ticks[2].Date.ShouldBe(d2); d1 = ExactDateInfo.BeforeChrist(100, 2, 3, 12); d2 = ExactDateInfo.BeforeChrist(100, 2, 3, 14); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(d1); ticks[1].Date.ShouldBe(ExactDateInfo.BeforeChrist(100, 2, 3, 13)); ticks[2].Date.ShouldBe(d2); }
public void Create_universe_start_date() { var dateInfo = new ExactDateInfo(Era.BeforeChrist, 13750000000L, 1, 1, 0); dateInfo.Era.ShouldBe(Era.BeforeChrist); dateInfo.Year.ShouldBe(13750000000L); dateInfo.Month.ShouldBe(1); dateInfo.Day.ShouldBe(1); dateInfo.Hour.ShouldBe(0); }
public void Several_years_tick_interval(long years) { var tickInterval = GetFirstTickIntervalWithGreaterDuration(Duration.Zero.AddYears(years).AddMonths(-1)); tickInterval.ShouldNotBeNull(); var d1 = ExactDateInfo.AnnoDomini(years, 1, 1, 0); var d2 = ExactDateInfo.AnnoDomini(3 * years, 1, 1, 0); var ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(d1); ticks[1].Date.ShouldBe(ExactDateInfo.AnnoDomini(years * 2, 1, 1, 0)); ticks[2].Date.ShouldBe(d2); d1 = ExactDateInfo.AnnoDomini(years, 3, 3, 5); d2 = ExactDateInfo.AnnoDomini(years * 4, 8, 5, 17); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(ExactDateInfo.AnnoDomini(years * 2, 1, 1, 0)); ticks[1].Date.ShouldBe(ExactDateInfo.AnnoDomini(years * 3, 1, 1, 0)); ticks[2].Date.ShouldBe(ExactDateInfo.AnnoDomini(years * 4, 1, 1, 0)); d1 = ExactDateInfo.BeforeChrist(years * 4, 3, 3, 5); d2 = ExactDateInfo.BeforeChrist(years * 1, 8, 5, 17); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(ExactDateInfo.BeforeChrist(years * 3, 1, 1, 0)); ticks[1].Date.ShouldBe(ExactDateInfo.BeforeChrist(years * 2, 1, 1, 0)); ticks[2].Date.ShouldBe(ExactDateInfo.BeforeChrist(years * 1, 1, 1, 0)); d1 = ExactDateInfo.BeforeChrist(years * 2, 3, 3, 5); d2 = ExactDateInfo.AnnoDomini(years * 1, 8, 5, 17); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(ExactDateInfo.BeforeChrist(years * 1, 1, 1, 0)); ticks[1].Date.ShouldBe(ExactDateInfo.AnnoDomini(1, 1, 1, 0)); ticks[2].Date.ShouldBe(ExactDateInfo.AnnoDomini(years * 1, 1, 1, 0)); }
public void Scaling_down_one_month() { var timeRange = new TimeRange( ExactDateInfo.AnnoDomini(100, 1, 1, 0), ExactDateInfo.AnnoDomini(100, 7, 1, 0) ); var scaledTimeRange = timeRange.ScaleDown(Duration.Zero.AddDays(20)); scaledTimeRange.ShouldNotBeNull(); scaledTimeRange.Start.ShouldBe(timeRange.Middle - Duration.Zero.AddDays(3)); scaledTimeRange.End.ShouldBe(timeRange.Middle + Duration.Zero.AddDays(3)); scaledTimeRange.Middle.ShouldBe(timeRange.Middle); }
public void Scaling_down_twelve_hours() { var timeRange = new TimeRange( ExactDateInfo.AnnoDomini(100, 1, 1, 0), ExactDateInfo.AnnoDomini(100, 1, 2, 0) ); var scaledTimeRange = timeRange.ScaleDown(Duration.Zero.AddHours(4)); scaledTimeRange.ShouldNotBeNull(); scaledTimeRange.Start.ShouldBe(timeRange.Middle - Duration.Zero.AddHours(1)); scaledTimeRange.End.ShouldBe(timeRange.Middle + Duration.Zero.AddHours(1)); scaledTimeRange.Middle.ShouldBe(timeRange.Middle); }
public void Scaling_down_one_hour_should_do_nothing() { var timeRange = new TimeRange( ExactDateInfo.AnnoDomini(100, 1, 1, 0), ExactDateInfo.AnnoDomini(100, 1, 1, 10) ); var scaledTimeRange = timeRange.ScaleDown(Duration.Zero.AddHours(1)); scaledTimeRange.ShouldNotBeNull(); scaledTimeRange.Start.ShouldBe(timeRange.Start); scaledTimeRange.End.ShouldBe(timeRange.End); scaledTimeRange.Middle.ShouldBe(timeRange.Middle); }
public void Scaling_up_hours() { var timeRange = new TimeRange( ExactDateInfo.AnnoDomini(100, 1, 1, 0), ExactDateInfo.AnnoDomini(100, 1, 1, 10) ); var scaledTimeRange = timeRange.ScaleUp(Duration.Zero.AddHours(1)); scaledTimeRange.ShouldNotBeNull(); scaledTimeRange.Start.ShouldBe(timeRange.Start - Duration.Zero.AddHours(55)); scaledTimeRange.End.ShouldBe(timeRange.End + Duration.Zero.AddHours(55)); scaledTimeRange.Middle.ShouldBe(timeRange.Middle); }
public void Scaling_up_one_year() { var timeRange = new TimeRange( ExactDateInfo.AnnoDomini(100, 1, 1, 0), ExactDateInfo.AnnoDomini(106, 1, 1, 0) ); var scaledTimeRange = timeRange.ScaleUp(Duration.Zero.AddMonths(10)); scaledTimeRange.ShouldNotBeNull(); scaledTimeRange.Start.ShouldBe(timeRange.Start - Duration.Zero.AddYears(27)); scaledTimeRange.End.ShouldBe(timeRange.End + Duration.Zero.AddYears(27)); scaledTimeRange.Middle.ShouldBe(timeRange.Middle); }
public async Task Get_events_from_time_range_with_no_events() { // Act var eventsInTimeRange = await _fixture.EventsRepo.GetEventsAsync( InRange( ExactDateInfo.AnnoDomini(3000, 1, 1, 0), ExactDateInfo.AnnoDomini(4000, 1, 1, 0) ) ); // Assert eventsInTimeRange.ShouldNotBeNull(); eventsInTimeRange.ShouldBeEmpty(); }
public async Task Get_events_from_time_range_with_only_start_in_range() { // Act var eventsInTimeRange = await _fixture.EventsRepo.GetEventsAsync( InRange( ExactDateInfo.BeforeChrist(20, 1, 1, 0), ExactDateInfo.AnnoDomini(1, 1, 1, 0) ) ); // Assert eventsInTimeRange.ShouldNotBeNull(); eventsInTimeRange.Count.ShouldBe(2); eventsInTimeRange.ShouldContain(e => e.Description == "A"); eventsInTimeRange.ShouldContain(e => e.Description == "B"); }
public async Task Get_events_when_there_are_no_events_that_meet_both_conditions() { // Act var eventsInTimeRange = await _fixture.EventsRepo.GetEventsAsync( InRange( ExactDateInfo.BeforeChrist(20, 1, 1, 0), ExactDateInfo.BeforeChrist(20, 10, 1, 0) ).And( InRange( ExactDateInfo.BeforeChrist(100, 2, 3, 1), ExactDateInfo.BeforeChrist(100, 2, 3, 21) ) ) ); // Assert eventsInTimeRange.ShouldNotBeNull(); eventsInTimeRange.ShouldBeEmpty(); }
public async Task Get_events_when_there_are_events_that_meet_both_conditions() { // Act var eventsInTimeRange = await _fixture.EventsRepo.GetEventsAsync( InRange( ExactDateInfo.BeforeChrist(20, 1, 1, 0), ExactDateInfo.BeforeChrist(20, 10, 1, 0) ).Or( InRange( ExactDateInfo.BeforeChrist(30, 1, 1, 0), ExactDateInfo.BeforeChrist(10, 1, 1, 0) ) ) ); // Assert eventsInTimeRange.ShouldNotBeNull(); eventsInTimeRange.Count.ShouldBe(1); eventsInTimeRange[0].Description.ShouldBe("B"); }
public async Task Get_events_from_time_range_with_full_events() { // Act var eventsInTimeRange = await _fixture.EventsRepo.GetEventsAsync( InRange( ExactDateInfo.BeforeChrist(20, 1, 1, 0), ExactDateInfo.BeforeChrist(20, 12, 1, 0) ) ); // Assert eventsInTimeRange.ShouldNotBeNull(); eventsInTimeRange.Count.ShouldBe(1); var @event = eventsInTimeRange[0]; @event.ShouldNotBeNull(); @event.Description.ShouldBe("B"); }
public async Task Get_events_when_there_are_no_events_that_meet_both_conditions() { // Act var eventsInTimeRange = await _fixture.EventsRepo.GetEventsAsync( InRange( ExactDateInfo.BeforeChrist(20, 1, 1, 0), ExactDateInfo.BeforeChrist(20, 10, 1, 0) ).Or( InRange( ExactDateInfo.BeforeChrist(100, 2, 3, 1), ExactDateInfo.BeforeChrist(100, 2, 3, 21) ) ) ); // Assert eventsInTimeRange.ShouldNotBeNull(); eventsInTimeRange.Count.ShouldBe(2); eventsInTimeRange.ShouldContain(e => e.Description == "B"); eventsInTimeRange.ShouldContain(e => e.Description == "E"); }
public void One_month_tick_interval() { var tickInterval = GetFirstTickIntervalWithGreaterDuration(Duration.Zero.AddDays(20)); tickInterval.ShouldNotBeNull(); var d1 = ExactDateInfo.AnnoDomini(100, 2, 1, 0); var d2 = ExactDateInfo.AnnoDomini(100, 5, 1, 0); var ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(4); ticks[0].Date.ShouldBe(d1); ticks[1].Date.ShouldBe(ExactDateInfo.AnnoDomini(100, 3, 1, 0)); ticks[2].Date.ShouldBe(ExactDateInfo.AnnoDomini(100, 4, 1, 0)); ticks[3].Date.ShouldBe(d2); d1 = ExactDateInfo.AnnoDomini(100, 3, 3, 5); d2 = ExactDateInfo.AnnoDomini(100, 5, 5, 17); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(2); ticks[0].Date.ShouldBe(ExactDateInfo.AnnoDomini(100, 4, 1, 0)); ticks[1].Date.ShouldBe(ExactDateInfo.AnnoDomini(100, 5, 1, 0)); d1 = ExactDateInfo.BeforeChrist(100, 11, 3, 5); d2 = ExactDateInfo.BeforeChrist(99, 2, 5, 17); ticks = tickInterval.GetTicksBetween(d1, d2).ToArray(); ticks.Length.ShouldBe(3); ticks[0].Date.ShouldBe(ExactDateInfo.BeforeChrist(100, 12, 1, 0)); ticks[1].Date.ShouldBe(ExactDateInfo.BeforeChrist(99, 1, 1, 0)); ticks[2].Date.ShouldBe(ExactDateInfo.BeforeChrist(99, 2, 1, 0)); }
public async Task Revert_specification() { // Act var eventsInTimeRange = await _fixture.EventsRepo.GetEventsAsync( Not( InRange( ExactDateInfo.BeforeChrist(20, 1, 1, 0), ExactDateInfo.AnnoDomini(1, 1, 1, 0) ) ) ); // Assert eventsInTimeRange.ShouldNotBeNull(); eventsInTimeRange.Count.ShouldBe(3); eventsInTimeRange.ShouldContain(e => e.Description == "C"); eventsInTimeRange.ShouldContain(e => e.Description == "D"); eventsInTimeRange.ShouldContain(e => e.Description == "E"); }
public static IEnumerable <object[]> AddDurationToDateData() { yield return(new object[] { ExactDateInfo.AnnoDomini(100, 1, 1, 0), Duration.Zero.AddYears(50), ExactDateInfo.AnnoDomini(150, 1, 1, 0) }); yield return(new object[] { ExactDateInfo.BeforeChrist(26, 1, 1, 0), Duration.Zero.AddYears(50), ExactDateInfo.AnnoDomini(25, 1, 1, 0) }); yield return(new object[] { ExactDateInfo.AnnoDomini(10, 1, 1, 0), Duration.Zero.AddYears(-50), ExactDateInfo.BeforeChrist(41, 1, 1, 0) }); }
public static IEnumerable <object[]> DurationToDateData() { yield return(new object[] { Duration.Zero, ExactDateInfo.AnnoDomini(1, 1, 1, 0) }); yield return(new object[] { Duration.Zero.AddYears(5), ExactDateInfo.AnnoDomini(6, 1, 1, 0) }); yield return(new object[] { Duration.Zero.AddMonths(3), ExactDateInfo.AnnoDomini(1, 4, 1, 0) }); yield return(new object[] { Duration.Zero.AddDays(13), ExactDateInfo.AnnoDomini(1, 1, 14, 0) }); yield return(new object[] { Duration.Zero.AddHours(20), ExactDateInfo.AnnoDomini(1, 1, 1, 20) }); yield return(new object[] { Duration.Zero .AddYears(1000000 - 1) .AddMonths(12 - 1) .AddDays(31 - 1) .AddHours(23), ExactDateInfo.AnnoDomini(1000000, 12, 31, 23) }); yield return(new object[] { Duration.Zero.AddYears(-1), ExactDateInfo.BeforeChrist(1, 1, 1, 0) }); yield return(new object[] { Duration.Zero.AddYears(-5).AddMonths(4), ExactDateInfo.BeforeChrist(5, 5, 1, 0) }); yield return(new object[] { Duration.Zero.AddYears(-5).AddDays(12), ExactDateInfo.BeforeChrist(5, 1, 13, 0) }); yield return(new object[] { Duration.Zero.AddYears(-5).AddHours(21), ExactDateInfo.BeforeChrist(5, 1, 1, 21) }); yield return(new object[] { Duration.Zero .AddYears(-5000000) .AddMonths(12 - 1) .AddDays(31 - 1) .AddHours(23), ExactDateInfo.BeforeChrist(5000000, 12, 31, 23) }); yield return(new object[] { Duration.Zero .AddYears(1979) .AddMonths(1) .AddDays(29) .AddHours(1), ExactDateInfo.AnnoDomini(1980, 3, 1, 1) }); }
public void Convert_duration_to_date_after_Christ_birth( Duration duration, ExactDateInfo date ) { duration.GetDateAfterChristBirth().ShouldBe(date); }
public void Subtract_duration_from_date(ExactDateInfo date, Duration duration, ExactDateInfo expectedResult) { (date - duration).ShouldBe(expectedResult); }
public void Add_duration_to_date(ExactDateInfo date, Duration duration, ExactDateInfo expectedResult) { (date + duration).ShouldBe(expectedResult); }
public void Compare_dates_in_different_eras() { ExactDateInfo.BeforeChrist(100, 1, 1, 0).ShouldBeLessThan(ExactDateInfo.AnnoDomini(100, 1, 1, 0)); ExactDateInfo.BeforeChrist(200, 1, 1, 0).ShouldBeLessThan(ExactDateInfo.AnnoDomini(100, 1, 1, 0)); }
public void Compare_dates_with_different_years_and_months() { ExactDateInfo.AnnoDomini(100, 2, 1, 0).ShouldBeLessThan(ExactDateInfo.AnnoDomini(100, 3, 1, 0)); ExactDateInfo.BeforeChrist(200, 2, 1, 0).ShouldBeLessThan(ExactDateInfo.BeforeChrist(200, 3, 1, 0)); }
/// <summary> /// Return time range specification. /// </summary> /// <param name="rangeStart">Start of time range.</param> /// <param name="rangeEnd">End of time range.</param> public static EventsSpecification InRange(ExactDateInfo rangeStart, ExactDateInfo rangeEnd) => new TimeRangeEventsSpecification(new TimeRange(rangeStart, rangeEnd));