public void IntervalTranslation() { var interval = new IntInterval(7, true, 42, false); Assert.IsTrue(interval.LeftEndpoint.Bounded); Assert.IsTrue(interval.LeftEndpoint.Inclusive); Assert.AreEqual(7, interval.Left); Assert.IsTrue(interval.RightEndpoint.Bounded); Assert.IsFalse(interval.RightEndpoint.Inclusive); Assert.AreEqual(42, interval.Right); Assert.AreEqual(42 - 7, interval.Span); var transRight = interval.Translate(100); Assert.IsTrue(transRight.LeftEndpoint.Bounded); Assert.IsTrue(transRight.LeftEndpoint.Inclusive); Assert.AreEqual(107, transRight.Left); Assert.IsTrue(transRight.RightEndpoint.Bounded); Assert.IsFalse(transRight.RightEndpoint.Inclusive); Assert.AreEqual(142, transRight.Right); Assert.AreEqual(42 - 7, transRight.Span); var plus = interval + 100; // same as interval.Translate(100) Assert.IsTrue(plus.LeftEndpoint.Bounded); Assert.IsTrue(plus.LeftEndpoint.Inclusive); Assert.AreEqual(107, plus.Left); Assert.IsTrue(plus.RightEndpoint.Bounded); Assert.IsFalse(plus.RightEndpoint.Inclusive); Assert.AreEqual(142, plus.Right); Assert.AreEqual(42 - 7, plus.Span); var transLeft = interval.Translate(100); Assert.IsTrue(transLeft.LeftEndpoint.Bounded); Assert.IsTrue(transLeft.LeftEndpoint.Inclusive); Assert.AreEqual(107, transLeft.Left); Assert.IsTrue(transLeft.RightEndpoint.Bounded); Assert.IsFalse(transLeft.RightEndpoint.Inclusive); Assert.AreEqual(142, transLeft.Right); Assert.AreEqual(42 - 7, transLeft.Span); var minus = interval - 5; // same as interval.Translate(5) Assert.IsTrue(minus.LeftEndpoint.Bounded); Assert.IsTrue(minus.LeftEndpoint.Inclusive); Assert.AreEqual(2, minus.Left); Assert.IsTrue(minus.RightEndpoint.Bounded); Assert.IsFalse(minus.RightEndpoint.Inclusive); Assert.AreEqual(37, minus.Right); Assert.AreEqual(42 - 7, minus.Span); }