ContentHelpers_Test.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using System.Collections.Generic;
  2. using Content.Shared.Rounding;
  3. using NUnit.Framework;
  4. namespace Content.Tests.Shared.Utility
  5. {
  6. [Parallelizable]
  7. [TestFixture]
  8. [TestOf(typeof(ContentHelpers))]
  9. public sealed class ContentHelpers_Test
  10. {
  11. public static readonly IEnumerable<(double val, double max, int levels, int expected)> TestData =
  12. new (double, double, int, int)[]
  13. {
  14. // Testing odd level counts. These are easy.
  15. (-1, 10, 5, 0),
  16. (0, 10, 5, 0),
  17. (0.01f, 10, 5, 1),
  18. (1, 10, 5, 1),
  19. (2, 10, 5, 1),
  20. (3, 10, 5, 1),
  21. (3.33f, 10, 5, 1),
  22. (3.34f, 10, 5, 2),
  23. (4, 10, 5, 2),
  24. (5, 10, 5, 2),
  25. (6, 10, 5, 2),
  26. (6.66f, 10, 5, 2),
  27. (6.67f, 10, 5, 3),
  28. (7, 10, 5, 3),
  29. (8, 10, 5, 3),
  30. (9, 10, 5, 3),
  31. (10, 10, 5, 4),
  32. (11, 10, 5, 4),
  33. // Even level counts though..
  34. (1, 10, 6, 1),
  35. (2, 10, 6, 1),
  36. (3, 10, 6, 2),
  37. (4, 10, 6, 2),
  38. (5, 10, 6, 2),
  39. (6, 10, 6, 3),
  40. (7, 10, 6, 3),
  41. (8, 10, 6, 4),
  42. (9, 10, 6, 4),
  43. (10, 10, 6, 5),
  44. };
  45. public static readonly IEnumerable<(double val, double max, int levels, int expected)> TestNear =
  46. new (double, double, int, int)[]
  47. {
  48. // Testing odd counts
  49. (0, 5, 2, 0),
  50. (1, 5, 2, 0),
  51. (2, 5, 2, 1),
  52. (3, 5, 2, 1),
  53. (4, 5, 2, 2),
  54. (5, 5, 2, 2),
  55. // Testing even counts
  56. (0, 6, 5, 0),
  57. (1, 6, 5, 1),
  58. (2, 6, 5, 2),
  59. (3, 6, 5, 3),
  60. (4, 6, 5, 3),
  61. (5, 6, 5, 4),
  62. (6, 6, 5, 5),
  63. // Testing transparency disable use case
  64. (0, 6, 6, 0),
  65. (1, 6, 6, 1),
  66. (2, 6, 6, 2),
  67. (3, 6, 6, 3),
  68. (4, 6, 6, 4),
  69. (5, 6, 6, 5),
  70. (6, 6, 6, 6),
  71. // Testing edge cases
  72. (0.1, 6, 5, 0),
  73. (-32, 6, 5, 0),
  74. (2.4, 6, 5, 2),
  75. (2.5, 6, 5, 2),
  76. (320, 6, 5, 5),
  77. };
  78. [Parallelizable]
  79. [Test]
  80. public void Test([ValueSource(nameof(TestData))] (double val, double max, int levels, int expected) data)
  81. {
  82. (double val, double max, int levels, int expected) = data;
  83. Assert.That(ContentHelpers.RoundToLevels(val, max, levels), Is.EqualTo(expected));
  84. }
  85. [Parallelizable]
  86. [Test]
  87. public void TestNearest([ValueSource(nameof(TestNear))] (double val, double max, int size, int expected) data)
  88. {
  89. (double val, double max, int size, int expected) = data;
  90. Assert.That(ContentHelpers.RoundToNearestLevels(val, max, size), Is.EqualTo(expected));
  91. }
  92. [Parallelizable]
  93. [Test]
  94. // Testing odd max on even levels
  95. [TestCase(0, 5, 2, ExpectedResult = 0)]
  96. [TestCase(1, 5, 2, ExpectedResult = 0)]
  97. [TestCase(2, 5, 2, ExpectedResult = 0)]
  98. [TestCase(3, 5, 2, ExpectedResult = 1)]
  99. [TestCase(4, 5, 2, ExpectedResult = 1)]
  100. [TestCase(5, 5, 2, ExpectedResult = 1)]
  101. // Testing even max on odd levels
  102. [TestCase(0, 6, 3, ExpectedResult = 0)]
  103. [TestCase(1, 6, 3, ExpectedResult = 0)]
  104. [TestCase(2, 6, 3, ExpectedResult = 1)]
  105. [TestCase(3, 6, 3, ExpectedResult = 1)]
  106. [TestCase(4, 6, 3, ExpectedResult = 2)]
  107. [TestCase(5, 6, 3, ExpectedResult = 2)]
  108. [TestCase(6, 6, 3, ExpectedResult = 2)]
  109. // Testing even max on even levels
  110. [TestCase(0, 4, 2, ExpectedResult = 0)]
  111. [TestCase(1, 4, 2, ExpectedResult = 0)]
  112. [TestCase(2, 4, 2, ExpectedResult = 1)]
  113. [TestCase(3, 4, 2, ExpectedResult = 1)]
  114. [TestCase(4, 4, 2, ExpectedResult = 1)]
  115. // Testing odd max on odd levels
  116. [TestCase(0, 5, 3, ExpectedResult = 0)]
  117. [TestCase(1, 5, 3, ExpectedResult = 0)]
  118. [TestCase(2, 5, 3, ExpectedResult = 1)]
  119. [TestCase(3, 5, 3, ExpectedResult = 1)]
  120. [TestCase(4, 5, 3, ExpectedResult = 2)]
  121. // Larger odd max on odd levels
  122. [TestCase(0, 7, 3, ExpectedResult = 0)]
  123. [TestCase(1, 7, 3, ExpectedResult = 0)]
  124. [TestCase(2, 7, 3, ExpectedResult = 0)]
  125. [TestCase(3, 7, 3, ExpectedResult = 1)]
  126. [TestCase(4, 7, 3, ExpectedResult = 1)]
  127. [TestCase(5, 7, 3, ExpectedResult = 2)]
  128. [TestCase(6, 7, 3, ExpectedResult = 2)]
  129. [TestCase(7, 7, 3, ExpectedResult = 2)]
  130. // Testing edge cases
  131. [TestCase(0.1, 6, 5, ExpectedResult = 0)]
  132. [TestCase(-32, 6, 5, ExpectedResult = 0)]
  133. [TestCase(2.4, 6, 5, ExpectedResult = 1)]
  134. [TestCase(2.5, 6, 5, ExpectedResult = 2)]
  135. [TestCase(320, 6, 5, ExpectedResult = 4)]
  136. public int TestEqual(double val, double max, int size)
  137. {
  138. return ContentHelpers.RoundToEqualLevels(val, max, size);
  139. }
  140. }
  141. }