public void UnboundedIntervalTranslation() { var interval = IntInterval.LeftBounded(7); Assert.IsTrue(interval.LeftEndpoint.Bounded); Assert.IsTrue(interval.LeftEndpoint.Inclusive); Assert.AreEqual(7, interval.Left); Assert.IsFalse(interval.RightEndpoint.Bounded); Assert.IsFalse(interval.RightEndpoint.Inclusive); Assert.AreEqual(int.MaxValue, interval.Right); Assert.AreEqual(int.MaxValue, interval.Span); var translated = interval.Translate(100); Assert.IsTrue(translated.LeftEndpoint.Bounded); Assert.IsTrue(translated.LeftEndpoint.Inclusive); Assert.AreEqual(107, translated.Left); Assert.IsFalse(translated.RightEndpoint.Bounded); Assert.IsFalse(translated.RightEndpoint.Inclusive); Assert.AreEqual(int.MaxValue, translated.Right); // unbounded end does not move Assert.AreEqual(int.MaxValue, translated.Span); }