Example #1
0
        public void RemoveRanges_RangeNot_IntersectedWithMain_Exception()
        {
            var target         = new MonthRange(new Date(2020, 12, 1), new Date(2020, 12, 15));
            var rangesToRemove = new List <TimeRange>
            {
                new TimeRange(new Date(2020, 11, 16), new Date(2020, 11, 28))
            };

            Assert.Throws <InvalidOperationException>(() => target.RemoveRanges(rangesToRemove));
        }
Example #2
0
        public void RemoveRanges_RangeFullyCover_MainRange_Ok()
        {
            var target            = new MonthRange(new Date(2020, 12, 1), new Date(2020, 12, 2));
            var vacationTimeRange = new TimeRange(new Date(2020, 11, 25), new Date(2020, 12, 5));

            var rangesToRemove = new List <TimeRange>
            {
                vacationTimeRange
            };

            var ranges = target.RemoveRanges(rangesToRemove);

            Assert.Empty(ranges);
        }
Example #3
0
        public void RemoveRanges_AllRangesIncludedIntoMainOne_Case1_Ok()
        {
            var target = new MonthRange(new Date(2020, 6, 1), new Date(2020, 6, 30));

            var rangesToRemove = new List <TimeRange>
            {
                new TimeRange(new Date(2020, 6, 1), new Date(2020, 6, 10))
            };

            IReadOnlyCollection <TimeRange> result = target.RemoveRanges(rangesToRemove);

            Assert.Single(result);

            var first = result.First();

            Assert.True(new Date(2020, 6, 11).SameDay(first.From));
            Assert.True(new Date(2020, 6, 30).SameDay(first.To));
        }
Example #4
0
        public void RemoveRanges_NotAllRangesIncludedIntoMainOne_Case2_Ok()
        {
            var target = new MonthRange(new Date(2020, 6, 1), new Date(2020, 6, 30));

            var rangesToRemove = new List <TimeRange>
            {
                new TimeRange(new Date(2020, 5, 15), new Date(2020, 6, 14)),
            };

            var ranges = target.RemoveRanges(rangesToRemove);

            Assert.Single(ranges);

            var newTimeRange = new TimeRange(new Date(2020, 6, 15), new Date(2020, 6, 30));

            Assert.Equal(newTimeRange.From, ranges.First().From);
            Assert.Equal(newTimeRange.To, ranges.First().To);
        }
Example #5
0
        public void RemoveRanges_RangeIntersect_WithMainRange_Ok()
        {
            var target            = new MonthRange(new Date(2020, 11, 5), new Date(2020, 11, 30));
            var vacationTimeRange = new TimeRange(new Date(2020, 11, 25), new Date(2020, 12, 5));

            var rangesToRemove = new List <TimeRange>
            {
                vacationTimeRange
            };

            var ranges = target.RemoveRanges(rangesToRemove);

            Assert.Single(ranges);
            var range = ranges.First();

            Assert.Equal(target.From, range.From);
            Assert.Equal(new Date(vacationTimeRange.From.AddDays(-1)).EndOfTheDay(), range.To);
        }
Example #6
0
        public void RemoveRanges_AllRangesIncludedIntoMainOne_Case3_Ok()
        {
            var target = new MonthRange(new Date(2020, 6, 1), new Date(2020, 6, 30));

            var rangesToRemove = new List <TimeRange>
            {
                new TimeRange(new Date(2020, 6, 1), new Date(2020, 6, 1)),
                new TimeRange(new Date(2020, 6, 10), new Date(2020, 6, 20)),
                new TimeRange(new Date(2020, 6, 28), new Date(2020, 6, 30))
            };

            IReadOnlyCollection <TimeRange> result = target.RemoveRanges(rangesToRemove);

            Assert.Equal(2, result.Count);

            Assert.True(new Date(2020, 6, 2).SameDay(result.ElementAt(0).From));
            Assert.True(new Date(2020, 6, 9).SameDay(result.ElementAt(0).To));

            Assert.True(new Date(2020, 6, 21).SameDay(result.ElementAt(1).From));
            Assert.True(new Date(2020, 6, 27).SameDay(result.ElementAt(1).To));
        }
Example #7
0
        public void RemoveRanges_RangeInMainRange_Ok()
        {
            var target            = new MonthRange(new Date(2020, 11, 5), new Date(2020, 11, 30));
            var vacationTimeRange = new TimeRange(new Date(2020, 11, 16), new Date(2020, 11, 28));

            var rangesToRemove = new List <TimeRange>
            {
                vacationTimeRange
            };

            var ranges = target.RemoveRanges(rangesToRemove);

            Assert.Equal(2, ranges.Count());
            var firstRange = ranges.First();

            Assert.Equal(target.From, firstRange.From);
            Assert.Equal(new Date(vacationTimeRange.From.AddDays(-1)).EndOfTheDay(), firstRange.To);

            var secondRange = ranges.Last();

            Assert.Equal(new Date(vacationTimeRange.To.AddDays(1)).StartOfTheDay(), secondRange.From);
            Assert.Equal(new Date(target.To).EndOfTheDay(), secondRange.To);
        }
Example #8
0
        public void RemoveRanges_Null_Exception()
        {
            var target = new MonthRange(new Date(2020, 6, 1), new Date(2020, 6, 30));

            Assert.Throws <ArgumentNullException>(() => target.RemoveRanges(null));
        }
Example #9
0
        public void RemoveRanges_NoRangesToRemove_Exception()
        {
            var target = new MonthRange(new Date(2020, 6, 1), new Date(2020, 6, 30));

            Assert.Throws <InvalidOperationException>(() => target.RemoveRanges(Array.Empty <TimeRange>()));
        }