Ejemplo n.º 1
0
        public void Duration_between_two_dates()
        {
            var d1 = SpecificDate.AnnoDomini(2020);
            var d2 = SpecificDate.AnnoDomini(2000);

            (d1 - d2).ShouldBe(Duration.Zero.AddYears(20));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public void Cant_create_event_with_start_greater_then_end()
 {
     Should.Throw <ArgumentException>(() =>
     {
         new Event <string, string>("Event", SpecificDate.AnnoDomini(2020), SpecificDate.AnnoDomini(2000));
     });
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        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);
            });
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        /// <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);
        }
Ejemplo n.º 15
0
        public void Create_specific_date()
        {
            var date = new SpecificDate(Era.AnnoDomini, 200);

            date.ShouldNotBeNull();
        }
Ejemplo n.º 16
0
 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));
 }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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
            });
        }
Ejemplo n.º 19
0
        public void SpecificDate_Ctor_DefaultPrecisionIsZero()
        {
            SpecificDate date = new SpecificDate(DateTime.Parse("01-Mar-2020"));

            Assert.AreEqual(TimeSpan.Zero, date.Precision);
        }
Ejemplo n.º 20
0
        public void SpecificDate_CtorWithDateAsString_DateSet()
        {
            SpecificDate date = new SpecificDate("01-Mar-2020");

            Assert.AreEqual(DateTime.Parse("01-Mar-2020"), date.ExpectedDate);
        }