RangeTests.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using System;
  2. using Xunit;
  3. namespace MonoGame.Extended.Tests
  4. {
  5. public class RangeTests
  6. {
  7. [Fact]
  8. public void ConstructorTest()
  9. {
  10. //can pass min < max
  11. var unused = new Range<int>(10, 100);
  12. //can't pass min > max
  13. Assert.Throws<ArgumentException>(() => new Range<int>(100, 10));
  14. //can pass min == max
  15. var unused1 = new Range<int>(10, 10);
  16. }
  17. [Fact]
  18. public void DegenerateTest()
  19. {
  20. var proper = new Range<double>(0, 1);
  21. Assert.True(proper.IsProper);
  22. Assert.False(proper.IsDegenerate);
  23. var degenerate = new Range<double>(1, 1);
  24. Assert.False(degenerate.IsProper);
  25. Assert.True(degenerate.IsDegenerate);
  26. }
  27. [Fact]
  28. public void IntegerTest()
  29. {
  30. var range = new Range<int>(10, 100);
  31. Assert.Equal(10, range.Min);
  32. Assert.Equal(100, range.Max);
  33. for (var i = 10; i <= 100; i++)
  34. {
  35. Assert.True(range.IsInBetween(i));
  36. }
  37. Assert.False(range.IsInBetween(9));
  38. Assert.False(range.IsInBetween(101));
  39. Assert.False(range.IsInBetween(10, true));
  40. Assert.False(range.IsInBetween(100, maxValueExclusive: true));
  41. }
  42. [Fact]
  43. public void FloatTest()
  44. {
  45. var range = new Range<float>(0f, 1f);
  46. Assert.Equal(0f, range.Min);
  47. Assert.Equal(1f, range.Max);
  48. for (float i = 0; i <= 1f; i += 0.001f)
  49. {
  50. Assert.True(range.IsInBetween(i));
  51. }
  52. Assert.False(range.IsInBetween(-float.Epsilon));
  53. Assert.False(range.IsInBetween(1.00001f));
  54. Assert.False(range.IsInBetween(0f, true));
  55. Assert.False(range.IsInBetween(1f, maxValueExclusive: true));
  56. }
  57. [Fact]
  58. public void OperatorTest()
  59. {
  60. var rangeA = new Range<int>(0, 1);
  61. var rangeB = new Range<int>(0, 1);
  62. var rangeC = new Range<int>(1, 2);
  63. var rangeD = new Range<double>(0, 1);
  64. Assert.True(rangeA == rangeB);
  65. Assert.False(rangeA == rangeC);
  66. Assert.False(rangeA != rangeB);
  67. Assert.True(rangeA != rangeC);
  68. Assert.True(rangeA.Equals(rangeB));
  69. Assert.False(rangeA.Equals(rangeC));
  70. Assert.False(rangeA.Equals(rangeD));
  71. Range<int> implict = 1;
  72. Assert.Equal(1, implict.Max);
  73. Assert.Equal(1, implict.Min);
  74. }
  75. [Fact]
  76. public void ToStringTest()
  77. {
  78. var range = new Range<float>(0, 1);
  79. Assert.Equal("Range<Single> [0 1]", range.ToString());
  80. }
  81. }
  82. }