HeightToVolumeCaculator_Test.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. using Application.ATG_Classic_App;
  2. using Application.ATG_Classic_App.Model;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace Application.ATG_Classic_App_Test
  9. {
  10. [TestClass]
  11. public class HeightToVolumeCaculator_Test
  12. {
  13. [TestMethod]
  14. public async Task Exact_TestMethod1()
  15. {
  16. var caculator = new HeightToVolumeCaculator(new[] {
  17. new TankProfileData()
  18. {
  19. Height = 0,
  20. Volume = 0,
  21. },
  22. new TankProfileData()
  23. {
  24. Height = 10,
  25. Volume = 30,
  26. },
  27. new TankProfileData()
  28. {
  29. Height = 20,
  30. Volume = 100,
  31. },
  32. new TankProfileData()
  33. {
  34. Height = 30,
  35. Volume = 200,
  36. },
  37. });
  38. Assert.AreEqual(0, caculator.GetVolume(0));
  39. Assert.AreEqual(30, caculator.GetVolume(10));
  40. Assert.AreEqual(100, caculator.GetVolume(20));
  41. Assert.AreEqual(200, caculator.GetVolume(30));
  42. }
  43. [TestMethod]
  44. public async Task Midpoint_PreferNearest_And_MidpointCeiling_TestMethod1()
  45. {
  46. var caculator = new HeightToVolumeCaculator(new[] {
  47. new TankProfileData(){
  48. Height = 1,
  49. Volume = 1,
  50. },
  51. new TankProfileData(){
  52. Height = 10,
  53. Volume = 30,
  54. },
  55. new TankProfileData(){
  56. Height = 20,
  57. Volume = 100,
  58. },
  59. new TankProfileData(){
  60. Height = 30,
  61. Volume = 200,
  62. },
  63. });
  64. Assert.AreEqual(1, caculator.GetVolume(1));
  65. Assert.AreEqual(1, caculator.GetVolume(2));
  66. Assert.AreEqual(1, caculator.GetVolume(3));
  67. Assert.AreEqual(1, caculator.GetVolume(4));
  68. Assert.AreEqual(1, caculator.GetVolume(5));
  69. Assert.AreEqual(30, caculator.GetVolume(6));
  70. Assert.AreEqual(30, caculator.GetVolume(7));
  71. Assert.AreEqual(30, caculator.GetVolume(8));
  72. Assert.AreEqual(30, caculator.GetVolume(9));
  73. Assert.AreEqual(30, caculator.GetVolume(10));
  74. Assert.AreEqual(30, caculator.GetVolume(11));
  75. Assert.AreEqual(30, caculator.GetVolume(12));
  76. Assert.AreEqual(30, caculator.GetVolume(13));
  77. Assert.AreEqual(30, caculator.GetVolume(14));
  78. Assert.AreEqual(100, caculator.GetVolume(15));
  79. Assert.AreEqual(100, caculator.GetVolume(16));
  80. Assert.AreEqual(100, caculator.GetVolume(17));
  81. Assert.AreEqual(100, caculator.GetVolume(18));
  82. Assert.AreEqual(100, caculator.GetVolume(19));
  83. Assert.AreEqual(100, caculator.GetVolume(20));
  84. Assert.AreEqual(100, caculator.GetVolume(21));
  85. Assert.AreEqual(100, caculator.GetVolume(22));
  86. Assert.AreEqual(100, caculator.GetVolume(23));
  87. Assert.AreEqual(100, caculator.GetVolume(24));
  88. Assert.AreEqual(200, caculator.GetVolume(25));
  89. Assert.AreEqual(200, caculator.GetVolume(30));
  90. Assert.AreEqual(200, caculator.GetVolume(9999));
  91. }
  92. [TestMethod]
  93. public async Task Midpoint_PreferCeiling_TestMethod1()
  94. {
  95. var caculator = new HeightToVolumeCaculator(new[] {
  96. new TankProfileData(){
  97. Height = 0,
  98. Volume = 0,
  99. },
  100. new TankProfileData(){
  101. Height = 10,
  102. Volume = 30,
  103. },
  104. new TankProfileData(){
  105. Height = 20,
  106. Volume = 100,
  107. },
  108. new TankProfileData(){
  109. Height = 30,
  110. Volume = 200,
  111. },
  112. });
  113. caculator.EstimateMode = HeightToVolumeCaculator.Mode.PreferCeiling;
  114. Assert.AreEqual(0, caculator.GetVolume(0));
  115. Assert.AreEqual(30, caculator.GetVolume(1));
  116. Assert.AreEqual(30, caculator.GetVolume(2));
  117. Assert.AreEqual(30, caculator.GetVolume(3));
  118. Assert.AreEqual(30, caculator.GetVolume(4));
  119. Assert.AreEqual(30, caculator.GetVolume(5));
  120. Assert.AreEqual(30, caculator.GetVolume(6));
  121. Assert.AreEqual(30, caculator.GetVolume(7));
  122. Assert.AreEqual(30, caculator.GetVolume(8));
  123. Assert.AreEqual(30, caculator.GetVolume(9));
  124. Assert.AreEqual(30, caculator.GetVolume(10));
  125. Assert.AreEqual(100, caculator.GetVolume(11));
  126. Assert.AreEqual(100, caculator.GetVolume(12));
  127. Assert.AreEqual(100, caculator.GetVolume(13));
  128. Assert.AreEqual(100, caculator.GetVolume(14));
  129. Assert.AreEqual(100, caculator.GetVolume(15));
  130. Assert.AreEqual(100, caculator.GetVolume(16));
  131. Assert.AreEqual(100, caculator.GetVolume(17));
  132. Assert.AreEqual(100, caculator.GetVolume(18));
  133. Assert.AreEqual(100, caculator.GetVolume(19));
  134. Assert.AreEqual(100, caculator.GetVolume(20));
  135. Assert.AreEqual(200, caculator.GetVolume(21));
  136. Assert.AreEqual(200, caculator.GetVolume(22));
  137. Assert.AreEqual(200, caculator.GetVolume(23));
  138. Assert.AreEqual(200, caculator.GetVolume(24));
  139. Assert.AreEqual(200, caculator.GetVolume(25));
  140. Assert.AreEqual(200, caculator.GetVolume(30));
  141. }
  142. [TestMethod]
  143. public async Task Midpoint_PreferFloor_TestMethod1()
  144. {
  145. var caculator = new HeightToVolumeCaculator(new[] {
  146. new TankProfileData(){
  147. Height = 0,
  148. Volume = 0,
  149. },
  150. new TankProfileData(){
  151. Height = 10,
  152. Volume = 30,
  153. },
  154. new TankProfileData(){
  155. Height = 20,
  156. Volume = 100,
  157. },
  158. new TankProfileData(){
  159. Height = 30,
  160. Volume = 200,
  161. },
  162. });
  163. caculator.EstimateMode = HeightToVolumeCaculator.Mode.PreferFloor;
  164. Assert.AreEqual(0, caculator.GetVolume(0));
  165. Assert.AreEqual(0, caculator.GetVolume(1));
  166. Assert.AreEqual(0, caculator.GetVolume(2));
  167. Assert.AreEqual(0, caculator.GetVolume(3));
  168. Assert.AreEqual(0, caculator.GetVolume(4));
  169. Assert.AreEqual(0, caculator.GetVolume(5));
  170. Assert.AreEqual(0, caculator.GetVolume(6));
  171. Assert.AreEqual(0, caculator.GetVolume(7));
  172. Assert.AreEqual(0, caculator.GetVolume(8));
  173. Assert.AreEqual(0, caculator.GetVolume(9));
  174. Assert.AreEqual(30, caculator.GetVolume(10));
  175. Assert.AreEqual(30, caculator.GetVolume(11));
  176. Assert.AreEqual(30, caculator.GetVolume(12));
  177. Assert.AreEqual(30, caculator.GetVolume(13));
  178. Assert.AreEqual(30, caculator.GetVolume(14));
  179. Assert.AreEqual(30, caculator.GetVolume(15));
  180. Assert.AreEqual(30, caculator.GetVolume(16));
  181. Assert.AreEqual(30, caculator.GetVolume(17));
  182. Assert.AreEqual(30, caculator.GetVolume(18));
  183. Assert.AreEqual(30, caculator.GetVolume(19));
  184. Assert.AreEqual(100, caculator.GetVolume(20));
  185. Assert.AreEqual(100, caculator.GetVolume(21));
  186. Assert.AreEqual(100, caculator.GetVolume(22));
  187. Assert.AreEqual(100, caculator.GetVolume(23));
  188. Assert.AreEqual(100, caculator.GetVolume(24));
  189. Assert.AreEqual(100, caculator.GetVolume(25));
  190. Assert.AreEqual(200, caculator.GetVolume(30));
  191. }
  192. }
  193. }