/// <summary> /// Merges two overlapping intervals into one. /// </summary> /// <param name="x">The first interval to merge.</param> /// <param name="y">The second interval to merge.</param> /// <returns>The merged interval.</returns> public static IntervalInt32 Merge(IntervalInt32 x, IntervalInt32 y) { #region Contract Contract.Requires<ArgumentNullException>(x.Intersects(y) || x.End == y.Start); #endregion int start = Math.Min(x.Start, y.Start); int end = x.End != Int32.MinValue && y.End != Int32.MinValue ? Math.Max(x.End, y.End) : Int32.MinValue; return new IntervalInt32(start, end); }
public void Intersects(int xStart, int xEnd, int yStart, int yEnd, bool expectedResult) { // Arrange var x = new IntervalInt32(xStart, xEnd); var y = new IntervalInt32(yStart, yEnd); // Act bool intersects = x.Intersects(y); bool intersects2 = y.Intersects(x); // Assert Assert.That(intersects, Is.EqualTo(expectedResult)); Assert.That(intersects, Is.EqualTo(intersects2)); }