using System; using NUnit.Framework; namespace MonoGame.Extended.Tests { [TestFixture] public class RangeTests { [Test] public void ConstructorTest() { //can pass min < max Assert.DoesNotThrow(() => new Range(10, 100)); //can't pass min > max Assert.Throws(() => new Range(100, 10)); //can pass min == max Assert.DoesNotThrow(() => new Range(10, 10)); } [Test] public void DegenerateTest() { var proper = new Range(0, 1); Assert.IsTrue(proper.IsProper); Assert.IsFalse(proper.IsDegenerate); var degenerate = new Range(1, 1); Assert.IsFalse(degenerate.IsProper); Assert.IsTrue(degenerate.IsDegenerate); } [Test] public void IntegerTest() { var range = new Range(10, 100); Assert.AreEqual(range.Min, 10); Assert.AreEqual(range.Max, 100); for (int i = 10; i <= 100; i++) { Assert.IsTrue(range.IsInBetween(i)); } Assert.IsFalse(range.IsInBetween(9)); Assert.IsFalse(range.IsInBetween(101)); Assert.IsFalse(range.IsInBetween(10, true)); Assert.IsFalse(range.IsInBetween(100, maxValueExclusive: true)); } [Test] public void FloatTest() { var range = new Range(0f, 1f); Assert.AreEqual(range.Min, 0f); Assert.AreEqual(range.Max, 1f); for (float i = 0; i <= 1f; i += 0.001f) { Assert.IsTrue(range.IsInBetween(i)); } Assert.IsFalse(range.IsInBetween(-float.Epsilon)); Assert.IsFalse(range.IsInBetween(1.00001f)); Assert.IsFalse(range.IsInBetween(0f, true)); Assert.IsFalse(range.IsInBetween(1f, maxValueExclusive: true)); } [Test] public void OperatorTest() { var rangeA = new Range(0, 1); var rangeB = new Range(0, 1); var rangeC = new Range(1, 2); var rangeD = new Range(0, 1); Assert.IsTrue(rangeA == rangeB); Assert.IsFalse(rangeA == rangeC); Assert.IsFalse(rangeA != rangeB); Assert.IsTrue(rangeA != rangeC); Assert.IsTrue(rangeA.Equals(rangeB)); Assert.IsFalse(rangeA.Equals(rangeC)); Assert.IsFalse(rangeA.Equals(rangeD)); Range implict = 1; Assert.AreEqual(implict.Max, 1); Assert.AreEqual(implict.Min, 1); } [Test] public void ToStringTest() { var range = new Range(0, 1); Assert.AreEqual(range.ToString(), "Range [0 1]"); } } }