public void Constructor_04() { var now = DateTime.Now; var c = new DateRangeCollection(new DateRange(now.AddHours(3), now.AddHours(5))); Assert.Single(c); }
public void IsSingleChain_Not_Allowed_When_There_Are_No_Ranges() { var collection = new DateRangeCollection(); Action action = () => collection.IsSingleChain(); action.Should().Throw <InvalidOperationException>(); }
public void Must_Implement_IEnumerable() { var one = DateRange.Today(); var second = DateRange.Today(); var sut = new DateRangeCollection(one, second); sut.ToList().Should().BeEquivalentTo(new[] { one, second }); }
public void Sum_01() { var now = DateTime.Now; var c1 = new DateRangeCollection( new DateRange(now.AddHours(1), now.AddHours(3)), new DateRange(now.AddHours(5), now.AddHours(7))); Assert.Equal(new TimeSpan(4, 0, 0), c1.Size); }
[DataRow(2017, 2017, 2018, false)] // multiple ranges that are invalid public void Contains_Returns_The_Right_Result_For_A_Date(int year1, int year2, int yearDate, bool result) { var sut = new DateRangeCollection { DateRange.Year(year1), DateRange.Year(year2) }; sut.IsInRange(new DateTime(yearDate, 6, 6)).Should().Be(result); }
public void Collection_Initialization_Is_Possible() { var sut = new DateRangeCollection { DateRange.Today(), DateRange.Today() }; sut.Count.Should().Be(2); }
public void Constructor_02() { var now = DateTime.Now; var c = new DateRangeCollection( new DateRange(now.AddHours(3), now.AddHours(5)), new DateRange(now.AddHours(4), now.AddHours(7))); Assert.Single(c); Assert.Equal(now.AddHours(3), c.First().Start); Assert.Equal(now.AddHours(7), c.First().End); }
public void Chain_With_Unbounded_Ranges_Creates_Always_Single_Chain() { var collection = new DateRangeCollection { new DateRange(null, new DateTime(2017, 12, 31)), new DateRange(new DateTime(2018, 1, 1), null), }; collection.IsSingleChain().Should().BeTrue(); collection.GetSingleChain().Should().Be(DateRange.Always); }
public void IsChain_With_Non_Adjacent_Ranges_Should_Be_False() { var collection = new DateRangeCollection { DateRange.Year(2016), DateRange.Year(2018), DateRange.Year(2019), }; collection.IsSingleChain().Should().BeFalse(); collection.GetSingleChain().IsEmpty.Should().BeTrue(); }
public void IsChain_With_Adjacent_Ranges_Should_Be_True() { var collection = new DateRangeCollection { DateRange.Year(2016), DateRange.Year(2018), DateRange.Year(2017), }; collection.IsSingleChain().Should().BeTrue(); collection.GetSingleChain().Should().Be(DateRange.Years(2016, 3)); }
public void Intersection_06() { var now = DateTime.Now; var c1 = new DateRangeCollection( new DateRange(now.AddMinutes(5), now.AddMinutes(10))); var c2 = new DateRangeCollection( new DateRange(now.AddMinutes(12), now.AddMinutes(20)), new DateRange(now.AddMinutes(22), now.AddMinutes(30))); var result = c1.Intersection(c2); Assert.Empty(result); }
public void Constructor_01() { var now = DateTime.Now; var c = new DateRangeCollection( new DateRange(now.AddHours(1), now.AddHours(2)), new DateRange(now.AddHours(3), now.AddHours(4))); Assert.Equal(2, c.Count); Assert.Equal(now.AddHours(1), c.First().Start); Assert.Equal(now.AddHours(2), c.First().End); Assert.Equal(now.AddHours(3), c.Last().Start); Assert.Equal(now.AddHours(4), c.Last().End); }
public void Union_04() { var now = DateTime.Now; var c1 = new DateRangeCollection( new DateRange(now.AddHours(1), now.AddHours(40))); var c2 = new DateRangeCollection( new DateRange(now.AddHours(2), now.AddHours(4)), new DateRange(now.AddHours(5), now.AddHours(6)), new DateRange(now.AddHours(8), now.AddHours(10))); var result = c1.Union(c2); Assert.Single(result); Assert.Equal(now.AddHours(1), result.First().Start); Assert.Equal(now.AddHours(40), result.First().End); }
[DataRow("2018-01-01", "2018-12-31", "2019-06-01", "2019-06-30", false)] // bounded not overlapping dates public void IsOverlapping_Returns_The_Right_Result(string start1, string end1, string start2, string end2, bool result) { var s1 = start1 == null ? (DateTime?)null : DateTime.Parse(start1); var e1 = end1 == null ? (DateTime?)null : DateTime.Parse(end1); var s2 = start2 == null ? (DateTime?)null : DateTime.Parse(start2); var e2 = end2 == null ? (DateTime?)null : DateTime.Parse(end2); var sut = new DateRangeCollection { new DateRange(s1, e1), new DateRange(s2, e2) }; sut.IsOverlapping().Should().Be(result); }
public void Intersection_01() { var now = DateTime.Now; var c1 = new DateRangeCollection( new DateRange(now.AddHours(1), now.AddHours(3)), new DateRange(now.AddHours(5), now.AddHours(7))); var c2 = new DateRangeCollection( new DateRange(now.AddHours(6), now.AddHours(11)), new DateRange(now.AddHours(13), now.AddHours(15))); var result = c1.Intersection(c2); Assert.Single(result); Assert.Equal(now.AddHours(6), result.First().Start); Assert.Equal(now.AddHours(7), result.First().End); }
public void Intersection_05() { var now = DateTime.Now; var c1 = new DateRangeCollection( new DateRange(now.AddMinutes(5), now.AddMinutes(50))); var c2 = new DateRangeCollection( new DateRange(now.AddMinutes(2), now.AddMinutes(10)), new DateRange(now.AddMinutes(12), now.AddMinutes(20))); var result = c1.Intersection(c2); Assert.Equal(2, result.Count); Assert.Equal(now.AddMinutes(5), result[0].Start); Assert.Equal(now.AddMinutes(10), result[0].End); Assert.Equal(now.AddMinutes(12), result[1].Start); Assert.Equal(now.AddMinutes(20), result[1].End); }
public void IsInRangeIndexed_Returns_The_First_Index_Of_The_Range_That_Contains_The_Date() { var collection = new DateRangeCollection { DateRange.Year(2016), DateRange.Year(2017), DateRange.Year(2018), DateRange.Years(2018, 2), DateRange.Day(new DateTime(2019, 1, 1)), }; collection.InRangeIndexed(new DateTime(2016, 6, 6)).Should().Be(0); collection.InRangeIndexed(new DateTime(2018, 6, 6)).Should().Be(2); collection.InRangeIndexed(new DateTime(2019, 1, 1)).Should().Be(3); collection.InRangeIndexed(new DateTime(2020, 1, 2)).Should().Be(-1); }
public void Intersection_02() { var now = DateTime.Now; var c1 = new DateRangeCollection( new DateRange(now.AddHours(1), now.AddHours(4)), new DateRange(now.AddHours(5), now.AddHours(8))); var c2 = new DateRangeCollection( new DateRange(now.AddHours(2), now.AddHours(3)), new DateRange(now.AddHours(6), now.AddHours(7))); var result = c1.Intersection(c2); Assert.Equal(2, result.Count); Assert.Equal(now.AddHours(2), result[0].Start); Assert.Equal(now.AddHours(3), result[0].End); Assert.Equal(now.AddHours(6), result[1].Start); Assert.Equal(now.AddHours(7), result[1].End); }
public void Intersection_07() { var now = DateTime.Now; var c1 = new DateRangeCollection( new DateRange(now.AddMinutes(1), now.AddMinutes(10))); var c2 = new DateRangeCollection( new DateRange(now.AddMinutes(2), now.AddMinutes(3)), new DateRange(now.AddMinutes(4), now.AddMinutes(5)), new DateRange(now.AddMinutes(6), now.AddMinutes(7))); var result = c2.Intersection(c1); Assert.Equal(3, result.Count); Assert.Equal(now.AddMinutes(2), result[0].Start); Assert.Equal(now.AddMinutes(3), result[0].End); Assert.Equal(now.AddMinutes(4), result[1].Start); Assert.Equal(now.AddMinutes(5), result[1].End); Assert.Equal(now.AddMinutes(6), result[2].Start); Assert.Equal(now.AddMinutes(7), result[2].End); }
public void Inverse_02() { var now = DateTime.Now; var c = new DateRangeCollection( new DateRange(now.AddMinutes(12), now.AddMinutes(20)), new DateRange(now.AddMinutes(22), now.AddMinutes(30))); var result = c.Inverse(); Assert.Equal(3, result.Count); Assert.Equal(now.AddMinutes(20), result[1].Start); Assert.Equal(now.AddMinutes(22), result[1].End); var result2 = result.Inverse(); Assert.Equal(2, result2.Count); Assert.Equal(now.AddMinutes(12), result2[0].Start); Assert.Equal(now.AddMinutes(20), result2[0].End); Assert.Equal(now.AddMinutes(22), result2[1].Start); Assert.Equal(now.AddMinutes(30), result2[1].End); }
public void Union_02() { var now = DateTime.Now; var c1 = new DateRangeCollection( new DateRange(now.AddHours(1), now.AddHours(6)), new DateRange(now.AddHours(5), now.AddHours(7))); var c2 = new DateRangeCollection( new DateRange(now.AddHours(9), now.AddHours(11)), new DateRange(now.AddHours(13), now.AddHours(15))); var result = c1.Union(c2); Assert.Equal(3, result.Count); Assert.Equal(now.AddHours(1), result.First().Start); Assert.Equal(now.AddHours(7), result.First().End); Assert.Equal(now.AddHours(9), result[1].Start); Assert.Equal(now.AddHours(11), result[1].End); Assert.Equal(now.AddHours(13), result[2].Start); Assert.Equal(now.AddHours(15), result[2].End); }
public void Ordered_Collection() { var collection = new DateRangeCollection { DateRange.Always, DateRange.Year(2018), DateRange.Year(2017), DateRange.Years(2018, 2), DateRange.Day(new DateTime(2018, 1, 1)), DateRange.Days(new DateTime(2018, 1, 1), 2), DateRange.Never }; var ordered = collection.Ordered(); ordered[0].Should().Be(DateRange.Never); ordered[1].Should().Be(DateRange.Always); ordered[2].Should().Be(DateRange.Year(2017)); ordered[3].Should().Be(DateRange.Day(new DateTime(2018, 1, 1))); ordered[4].Should().Be(DateRange.Days(new DateTime(2018, 1, 1), 2)); ordered[5].Should().Be(DateRange.Year(2018)); ordered[6].Should().Be(DateRange.Years(2018, 2)); }
public void Create_With_Multiple_DateRanges() { var sut = new DateRangeCollection(DateRange.Today(), DateRange.Today()); sut.Count.Should().Be(2); }
public void GetSingleChain_Returns_Never_When_There_Are_No_Ranges_Specified() { var collection = new DateRangeCollection(); collection.GetSingleChain().IsEmpty.Should().BeTrue(); }
public void Create_With_A_Single_DateRange() { var sut = new DateRangeCollection(DateRange.Today()); sut.Count.Should().Be(1); }