public void Duration_between_two_dates() { var d1 = SpecificDate.AnnoDomini(2020); var d2 = SpecificDate.AnnoDomini(2000); (d1 - d2).ShouldBe(Duration.Zero.AddYears(20)); }
public void Point_and_interval_events_should_be_in_separate_lines() { var e1 = new Event <string, string>( "1", SpecificDate.AnnoDomini(2020), SpecificDate.AnnoDomini(2020, 3) ); var e2 = new Event <string, string>( "2", SpecificDate.AnnoDomini(2020), SpecificDate.AnnoDomini(2022) ); var distribution = Distribute(e1, e2); distribution.ShouldNotBeNull(); distribution.Lines.Count.ShouldBe(2); distribution.Lines[0].Events.Count.ShouldBe(1); distribution.Lines[0].Events[0].ShouldBeSameAs(e1); distribution.Lines[1].Events.Count.ShouldBe(1); distribution.Lines[1].Events[0].ShouldBeSameAs(e2); }
public void Some_point_events_can_be_dropped_if_distance_between_them_is_less_than_threshold() { var e1 = new Event <string, string>( "1", SpecificDate.AnnoDomini(2020, 2), SpecificDate.AnnoDomini(2020, 3) ); var e2 = new Event <string, string>( "2", SpecificDate.AnnoDomini(2020) ); var e3 = new Event <string, string>( "3", SpecificDate.AnnoDomini(2022, 1), SpecificDate.AnnoDomini(2022, 2) ); var distribution = Distribute(e1, e2, e3); distribution.ShouldNotBeNull(); distribution.Lines.Count.ShouldBe(1); distribution.Lines[0].Events.Count.ShouldBe(2); distribution.Lines[0].Events[0].ShouldBeSameAs(e2); distribution.Lines[0].Events[1].ShouldBeSameAs(e3); }
public void Non_overlapping_interval_events_must_be_in_single_line() { var e1 = new Event <string, string>( "1", SpecificDate.AnnoDomini(2020), SpecificDate.AnnoDomini(2022) ); var e2 = new Event <string, string>( "2", SpecificDate.AnnoDomini(2021), SpecificDate.AnnoDomini(2023) ); var e3 = new Event <string, string>( "3", SpecificDate.AnnoDomini(2023), SpecificDate.AnnoDomini(2025) ); var distribution = Distribute(e1, e2, e3); distribution.ShouldNotBeNull(); distribution.Lines.Count.ShouldBe(2); distribution.Lines[0].Events.Count.ShouldBe(2); distribution.Lines[0].Events[0].ShouldBeSameAs(e1); distribution.Lines[0].Events[1].ShouldBeSameAs(e3); distribution.Lines[1].Events.Count.ShouldBe(1); distribution.Lines[1].Events[0].ShouldBeSameAs(e2); }
public void Cant_create_event_with_start_greater_then_end() { Should.Throw <ArgumentException>(() => { new Event <string, string>("Event", SpecificDate.AnnoDomini(2020), SpecificDate.AnnoDomini(2000)); }); }
public async Task Get_all_events() { // Arrange _db.Events.RemoveRange(_db.Events); await _db.SaveChangesAsync(); // Act var events = new[] { new Event <string, string>("A", SpecificDate.BeforeChrist(10), SpecificDate.AnnoDomini(12)), new Event <string, string>("B", SpecificDate.BeforeChrist(20, 5)), new Event <string, string>("C", SpecificDate.AnnoDomini(2020, 1, 1), NowDate.Instance), new Event <string, string>("D", NowDate.Instance), new Event <string, string>("E", SpecificDate.BeforeChrist(100, 2, 3, 10), SpecificDate.BeforeChrist(100, 2, 3, 20)), }; await _repo.SaveEventsAsync(events); // Assert var restoredEvents = await _repo.GetEventsAsync(); restoredEvents.ShouldNotBeNull(); restoredEvents.Count.ShouldBe(5); var @event = restoredEvents.FirstOrDefault(e => e.Description == "A"); @event.ShouldNotBeNull(); @event.Start.ShouldBe(SpecificDate.BeforeChrist(10)); @event.End.ShouldBe(SpecificDate.AnnoDomini(12)); @event = restoredEvents.FirstOrDefault(e => e.Description == "B"); @event.ShouldNotBeNull(); @event.Start.ShouldBe(SpecificDate.BeforeChrist(20, 5)); @event.End.ShouldBeNull(); @event = restoredEvents.FirstOrDefault(e => e.Description == "C"); @event.ShouldNotBeNull(); @event.Start.ShouldBe(SpecificDate.AnnoDomini(2020, 1, 1)); @event.End.ShouldBe(NowDate.Instance); @event = restoredEvents.FirstOrDefault(e => e.Description == "D"); @event.ShouldNotBeNull(); @event.Start.ShouldBe(NowDate.Instance); @event.End.ShouldBeNull(); @event = restoredEvents.FirstOrDefault(e => e.Description == "E"); @event.ShouldNotBeNull(); @event.Start.ShouldBe(SpecificDate.BeforeChrist(100, 2, 3, 10)); @event.End.ShouldBe(SpecificDate.BeforeChrist(100, 2, 3, 20)); restoredEvents.ShouldAllBe(e => e.Id.HasValue); }
public void Event_with_only_start_has_correct_date_related_properties() { var @event = new Event <string, string>( "Event", SpecificDate.AnnoDomini(2000) ); @event.Start.ShouldBe(SpecificDate.AnnoDomini(2000)); @event.End.ShouldBeNull(); @event.Duration.ShouldBe(Duration.Zero); }
public void Event_with_start_and_end_has_correct_date_related_properties() { var @event = new Event <string, string>( "Event", SpecificDate.AnnoDomini(2000), SpecificDate.AnnoDomini(2020) ); @event.Start.ShouldBe(SpecificDate.AnnoDomini(2000)); @event.End.ShouldBe(SpecificDate.AnnoDomini(2020)); @event.Duration.ShouldBe(Duration.Zero.AddYears(20)); }
public void Cant_set_null_start() { var @event = new Event <string, string>( "Event", SpecificDate.AnnoDomini(2000), SpecificDate.AnnoDomini(2020) ); Should.Throw <ArgumentException>(() => { @event.SetInterval(null); }); }
public void Add_events() { var set = new EventsSet <string, string>("S"); var e1 = new Event <string, string>("A", SpecificDate.AnnoDomini(100)); var e2 = new Event <string, string>("B", SpecificDate.AnnoDomini(100)); set.Add(e1, e2); set.Events.Count.ShouldBe(2); set.Events.ShouldContain(e => e == e1); set.Events.ShouldContain(e => e == e2); }
public IdsEventsSpecificationTestsFixture() { Db = TimelineContextProvider.GetDbContext(); EventsRepo = new EventsRepository(Db); Events = new[] { new Event <string, string>("A", SpecificDate.BeforeChrist(10), SpecificDate.AnnoDomini(12)), new Event <string, string>("B", SpecificDate.BeforeChrist(20, 5)), new Event <string, string>("C", SpecificDate.AnnoDomini(2020, 1, 1), NowDate.Instance), new Event <string, string>("D", NowDate.Instance), new Event <string, string>("E", SpecificDate.BeforeChrist(100, 2, 3, 10), SpecificDate.BeforeChrist(100, 2, 3, 20)), }; }
public async Task InitializeAsync() { Db.Events.RemoveRange(Db.Events); await Db.SaveChangesAsync(); var events = new[] { new Event <string, string>("A", SpecificDate.BeforeChrist(10), SpecificDate.AnnoDomini(12)), new Event <string, string>("B", SpecificDate.BeforeChrist(20, 5)), new Event <string, string>("C", SpecificDate.AnnoDomini(2020, 1, 1), NowDate.Instance), new Event <string, string>("D", NowDate.Instance), new Event <string, string>("E", SpecificDate.BeforeChrist(100, 2, 3, 10), SpecificDate.BeforeChrist(100, 2, 3, 20)), }; await EventsRepo.SaveEventsAsync(events); }
public void Distribute_single_interval_event() { var e = new Event <string, string>( "1", SpecificDate.AnnoDomini(2020), SpecificDate.AnnoDomini(2022) ); var distribution = Distribute(e); distribution.ShouldNotBeNull(); distribution.Lines.Count.ShouldBe(1); distribution.Lines[0].Events.Count.ShouldBe(1); distribution.Lines[0].Events[0].ShouldBeSameAs(e); }
/// <summary> Get a prettier title for the global date/time filter. </summary> /// <returns>A cleaner title.</returns> public string GetTitleOfDataScoringDateFilter() { var dayNames = CultureInfo.CurrentCulture.DateTimeFormat.DayNames; string title = ""; switch (Type) { case FilterType.AllDays: title = "All Days"; break; case FilterType.Weekdays: title = "Weekdays"; break; case FilterType.Weekends: title = "Weekends"; break; case FilterType.DayOfTheWeek: title = dayNames[DayOfTheWeek]; break; case FilterType.SpecificDate: title = SpecificDate.ToShortDateString(); break; case FilterType.DayRange: title = string.Format("{0} - {1}", dayNames[DayRangeStart], dayNames[DayRangeEnd]); break; case FilterType.DateRange: title = string.Format("{0} - {1}", DateRangeStart.ToShortDateString(), DateRangeEnd.ToShortDateString()); break; } return(title); }
public void Create_specific_date() { var date = new SpecificDate(Era.AnnoDomini, 200); date.ShouldNotBeNull(); }
public void Compare_specific_and_now_dates() { SpecificDate.BeforeChrist(1).ShouldBeLessThan <Date>(NowDate.Instance); SpecificDate.AnnoDomini(2000).ShouldBeLessThan <Date>(NowDate.Instance); NowDate.Instance.ShouldBeLessThan <Date>(SpecificDate.AnnoDomini(14000000000L)); }
public async Task Save_new_events() { // Arrange _db.Events.RemoveRange(_db.Events); await _db.SaveChangesAsync(); // Act var events = new[] { new Event <string, string>("A", SpecificDate.BeforeChrist(10), SpecificDate.AnnoDomini(12)), new Event <string, string>("B", SpecificDate.BeforeChrist(20, 5)), new Event <string, string>("C", SpecificDate.AnnoDomini(2020, 1, 1), NowDate.Instance), new Event <string, string>("D", NowDate.Instance), new Event <string, string>("E", SpecificDate.BeforeChrist(100, 2, 3, 10), SpecificDate.BeforeChrist(100, 2, 3, 20)), }; await _repo.SaveEventsAsync(events); // Assert var storedEvents = await _db.Events.ToArrayAsync(); storedEvents.ShouldNotBeNull(); storedEvents.Length.ShouldBe(5); var @event = storedEvents.FirstOrDefault(e => e.Content == "A"); @event.ShouldNotBeNull(); @event.StartIsCurrent.ShouldBeFalse(); @event.StartDuration.ShouldNotBeNull(); @event.StartDuration.Value.ShouldBe(Duration.GetDurationFromChristBirth(SpecificDate.BeforeChrist(10))); @event.StartNullPart.ShouldNotBeNull(); @event.StartNullPart.ShouldBe(NullableDateParts.Month); @event.EndIsCurrent.ShouldNotBeNull(); @event.EndIsCurrent.Value.ShouldBeFalse(); @event.EndDuration.ShouldNotBeNull(); @event.EndDuration.Value.ShouldBe(Duration.GetDurationFromChristBirth(SpecificDate.AnnoDomini(12))); @event.EndNullPart.ShouldNotBeNull(); @event.EndNullPart.Value.ShouldBe(NullableDateParts.Month); @event = storedEvents.FirstOrDefault(e => e.Content == "B"); @event.ShouldNotBeNull(); @event.StartIsCurrent.ShouldBeFalse(); @event.StartDuration.ShouldNotBeNull(); @event.StartDuration.Value.ShouldBe(Duration.GetDurationFromChristBirth(SpecificDate.BeforeChrist(20, 5))); @event.StartNullPart.ShouldNotBeNull(); @event.StartNullPart.ShouldBe(NullableDateParts.Day); @event.EndIsCurrent.ShouldBeNull(); @event.EndDuration.ShouldBeNull(); @event.EndNullPart.ShouldBeNull(); @event = storedEvents.FirstOrDefault(e => e.Content == "C"); @event.ShouldNotBeNull(); @event.StartIsCurrent.ShouldBeFalse(); @event.StartDuration.ShouldNotBeNull(); @event.StartDuration.Value.ShouldBe(Duration.GetDurationFromChristBirth(SpecificDate.AnnoDomini(2020, 1, 1))); @event.StartNullPart.ShouldNotBeNull(); @event.StartNullPart.ShouldBe(NullableDateParts.Hour); @event.EndIsCurrent.ShouldNotBeNull(); @event.EndIsCurrent.Value.ShouldBeTrue(); @event.EndDuration.ShouldBeNull(); @event.EndNullPart.ShouldBeNull(); @event = storedEvents.FirstOrDefault(e => e.Content == "D"); @event.ShouldNotBeNull(); @event.StartIsCurrent.ShouldBeTrue(); @event.StartDuration.ShouldBeNull(); @event.StartNullPart.ShouldBeNull(); @event.EndIsCurrent.ShouldBeNull(); @event.EndDuration.ShouldBeNull(); @event.EndNullPart.ShouldBeNull(); @event = storedEvents.FirstOrDefault(e => e.Content == "E"); @event.ShouldNotBeNull(); @event.StartIsCurrent.ShouldBeFalse(); @event.StartDuration.ShouldNotBeNull(); @event.StartDuration.Value.ShouldBe(Duration.GetDurationFromChristBirth(SpecificDate.BeforeChrist(100, 2, 3, 10))); @event.StartNullPart.ShouldNotBeNull(); @event.StartNullPart.ShouldBe(NullableDateParts.Nothing); @event.EndIsCurrent.ShouldNotBeNull(); @event.EndIsCurrent.Value.ShouldBeFalse(); @event.EndDuration.ShouldNotBeNull(); @event.EndDuration.Value.ShouldBe(Duration.GetDurationFromChristBirth(SpecificDate.BeforeChrist(100, 2, 3, 20))); @event.EndNullPart.ShouldNotBeNull(); @event.EndNullPart.Value.ShouldBe(NullableDateParts.Nothing); events.ShouldAllBe(e => e.Id.HasValue); }
public static IEnumerable <object[]> EventsOverlappingData() { yield return(new object[] { SpecificDate.AnnoDomini(100), null, SpecificDate.AnnoDomini(200), null, false }); yield return(new object[] { SpecificDate.AnnoDomini(200), null, SpecificDate.AnnoDomini(100), null, false }); yield return(new object[] { SpecificDate.AnnoDomini(100), null, SpecificDate.AnnoDomini(100), null, true }); yield return(new object[] { SpecificDate.AnnoDomini(100), null, SpecificDate.AnnoDomini(100, 1), null, true }); yield return(new object[] { SpecificDate.AnnoDomini(100), null, SpecificDate.AnnoDomini(200), SpecificDate.AnnoDomini(201), false }); yield return(new object[] { SpecificDate.AnnoDomini(100), null, SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), true }); yield return(new object[] { SpecificDate.AnnoDomini(100, 2), null, SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), true }); yield return(new object[] { SpecificDate.AnnoDomini(101), null, SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), false }); yield return(new object[] { SpecificDate.AnnoDomini(102), null, SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), false }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(80), null, false }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(100), null, true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(100, 4), null, true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(101), null, false }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(105), null, false }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(80), SpecificDate.AnnoDomini(81), false }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(80), SpecificDate.AnnoDomini(100), false }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(80), SpecificDate.AnnoDomini(100, 4), true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(80), SpecificDate.AnnoDomini(105), true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(100, 5), true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(105), true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(100, 4), SpecificDate.AnnoDomini(100, 6), true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(100, 4), SpecificDate.AnnoDomini(101), true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(100, 4), SpecificDate.AnnoDomini(105), true }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(105), false }); yield return(new object[] { SpecificDate.AnnoDomini(100), SpecificDate.AnnoDomini(101), SpecificDate.AnnoDomini(102), SpecificDate.AnnoDomini(105), false }); }
public void SpecificDate_Ctor_DefaultPrecisionIsZero() { SpecificDate date = new SpecificDate(DateTime.Parse("01-Mar-2020")); Assert.AreEqual(TimeSpan.Zero, date.Precision); }
public void SpecificDate_CtorWithDateAsString_DateSet() { SpecificDate date = new SpecificDate("01-Mar-2020"); Assert.AreEqual(DateTime.Parse("01-Mar-2020"), date.ExpectedDate); }