public void Unite() { var intervalA = new DateTimeInterval(new DateTime(2000, 12, 1, 5, 0, 0), new DateTime(2001, 1, 2, 12, 0, 0)); var intervalB = new DateTimeInterval(new DateTime(2001, 1, 2, 12, 0, 0), new DateTime(2001, 2, 2, 12, 6, 0)); var unitedInterval = intervalB.Unite(intervalA); Assert.AreEqual(unitedInterval, new DateTimeInterval(new DateTime(2000, 12, 1, 5, 0, 0), new DateTime(2001, 2, 2, 12, 6, 0))); intervalB = new DateTimeInterval(new DateTime(2001, 1, 2, 13, 0, 0), new DateTime(2001, 2, 2, 12, 6, 0)); unitedInterval = intervalA.Unite(intervalB); Assert.AreEqual(unitedInterval, null); intervalB = new DateTimeInterval(new DateTime(2001, 1, 1, 0, 0, 0), new DateTime(2001, 2, 2, 12, 6, 0)); unitedInterval = intervalA.Unite(intervalB); Assert.AreEqual(unitedInterval, new DateTimeInterval(new DateTime(2000, 12, 1, 5, 0, 0), new DateTime(2001, 2, 2, 12, 6, 0))); intervalB = new DateTimeInterval(intervalA.StartDate, intervalA.FinishDate); unitedInterval = intervalA.Unite(intervalB); Assert.AreEqual(unitedInterval, intervalA); intervalB = new DateTimeInterval(new DateTime(1900, 1, 1, 0, 0, 0), new DateTime(2010, 2, 2, 12, 6, 0)); unitedInterval = intervalA.Unite(intervalB); Assert.AreEqual(unitedInterval, intervalB); var date = new DateTime(2000, 1, 1, 0, 0, 0); intervalA = intervalB = new DateTimeInterval(date, date); unitedInterval = intervalA.Unite(intervalB); Assert.AreEqual(unitedInterval, intervalA); }