using Application.ATG_Classic_App; using Application.ATG_Classic_App.Model; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace Application.ATG_Classic_App_Test { [TestClass] public class HeightToVolumeCaculator_Test { [TestMethod] public async Task Exact_TestMethod1() { var caculator = new HeightToVolumeCaculator(new[] { new TankProfileData() { Height = 0, Volume = 0, }, new TankProfileData() { Height = 10, Volume = 30, }, new TankProfileData() { Height = 20, Volume = 100, }, new TankProfileData() { Height = 30, Volume = 200, }, }); Assert.AreEqual(0, caculator.GetVolume(0)); Assert.AreEqual(30, caculator.GetVolume(10)); Assert.AreEqual(100, caculator.GetVolume(20)); Assert.AreEqual(200, caculator.GetVolume(30)); } [TestMethod] public async Task Midpoint_PreferNearest_And_MidpointCeiling_TestMethod1() { var caculator = new HeightToVolumeCaculator(new[] { new TankProfileData(){ Height = 1, Volume = 1, }, new TankProfileData(){ Height = 10, Volume = 30, }, new TankProfileData(){ Height = 20, Volume = 100, }, new TankProfileData(){ Height = 30, Volume = 200, }, }); Assert.AreEqual(1, caculator.GetVolume(1)); Assert.AreEqual(1, caculator.GetVolume(2)); Assert.AreEqual(1, caculator.GetVolume(3)); Assert.AreEqual(1, caculator.GetVolume(4)); Assert.AreEqual(1, caculator.GetVolume(5)); Assert.AreEqual(30, caculator.GetVolume(6)); Assert.AreEqual(30, caculator.GetVolume(7)); Assert.AreEqual(30, caculator.GetVolume(8)); Assert.AreEqual(30, caculator.GetVolume(9)); Assert.AreEqual(30, caculator.GetVolume(10)); Assert.AreEqual(30, caculator.GetVolume(11)); Assert.AreEqual(30, caculator.GetVolume(12)); Assert.AreEqual(30, caculator.GetVolume(13)); Assert.AreEqual(30, caculator.GetVolume(14)); Assert.AreEqual(100, caculator.GetVolume(15)); Assert.AreEqual(100, caculator.GetVolume(16)); Assert.AreEqual(100, caculator.GetVolume(17)); Assert.AreEqual(100, caculator.GetVolume(18)); Assert.AreEqual(100, caculator.GetVolume(19)); Assert.AreEqual(100, caculator.GetVolume(20)); Assert.AreEqual(100, caculator.GetVolume(21)); Assert.AreEqual(100, caculator.GetVolume(22)); Assert.AreEqual(100, caculator.GetVolume(23)); Assert.AreEqual(100, caculator.GetVolume(24)); Assert.AreEqual(200, caculator.GetVolume(25)); Assert.AreEqual(200, caculator.GetVolume(30)); Assert.AreEqual(200, caculator.GetVolume(9999)); } [TestMethod] public async Task Midpoint_PreferCeiling_TestMethod1() { var caculator = new HeightToVolumeCaculator(new[] { new TankProfileData(){ Height = 0, Volume = 0, }, new TankProfileData(){ Height = 10, Volume = 30, }, new TankProfileData(){ Height = 20, Volume = 100, }, new TankProfileData(){ Height = 30, Volume = 200, }, }); caculator.EstimateMode = HeightToVolumeCaculator.Mode.PreferCeiling; Assert.AreEqual(0, caculator.GetVolume(0)); Assert.AreEqual(30, caculator.GetVolume(1)); Assert.AreEqual(30, caculator.GetVolume(2)); Assert.AreEqual(30, caculator.GetVolume(3)); Assert.AreEqual(30, caculator.GetVolume(4)); Assert.AreEqual(30, caculator.GetVolume(5)); Assert.AreEqual(30, caculator.GetVolume(6)); Assert.AreEqual(30, caculator.GetVolume(7)); Assert.AreEqual(30, caculator.GetVolume(8)); Assert.AreEqual(30, caculator.GetVolume(9)); Assert.AreEqual(30, caculator.GetVolume(10)); Assert.AreEqual(100, caculator.GetVolume(11)); Assert.AreEqual(100, caculator.GetVolume(12)); Assert.AreEqual(100, caculator.GetVolume(13)); Assert.AreEqual(100, caculator.GetVolume(14)); Assert.AreEqual(100, caculator.GetVolume(15)); Assert.AreEqual(100, caculator.GetVolume(16)); Assert.AreEqual(100, caculator.GetVolume(17)); Assert.AreEqual(100, caculator.GetVolume(18)); Assert.AreEqual(100, caculator.GetVolume(19)); Assert.AreEqual(100, caculator.GetVolume(20)); Assert.AreEqual(200, caculator.GetVolume(21)); Assert.AreEqual(200, caculator.GetVolume(22)); Assert.AreEqual(200, caculator.GetVolume(23)); Assert.AreEqual(200, caculator.GetVolume(24)); Assert.AreEqual(200, caculator.GetVolume(25)); Assert.AreEqual(200, caculator.GetVolume(30)); } [TestMethod] public async Task Midpoint_PreferFloor_TestMethod1() { var caculator = new HeightToVolumeCaculator(new[] { new TankProfileData(){ Height = 0, Volume = 0, }, new TankProfileData(){ Height = 10, Volume = 30, }, new TankProfileData(){ Height = 20, Volume = 100, }, new TankProfileData(){ Height = 30, Volume = 200, }, }); caculator.EstimateMode = HeightToVolumeCaculator.Mode.PreferFloor; Assert.AreEqual(0, caculator.GetVolume(0)); Assert.AreEqual(0, caculator.GetVolume(1)); Assert.AreEqual(0, caculator.GetVolume(2)); Assert.AreEqual(0, caculator.GetVolume(3)); Assert.AreEqual(0, caculator.GetVolume(4)); Assert.AreEqual(0, caculator.GetVolume(5)); Assert.AreEqual(0, caculator.GetVolume(6)); Assert.AreEqual(0, caculator.GetVolume(7)); Assert.AreEqual(0, caculator.GetVolume(8)); Assert.AreEqual(0, caculator.GetVolume(9)); Assert.AreEqual(30, caculator.GetVolume(10)); Assert.AreEqual(30, caculator.GetVolume(11)); Assert.AreEqual(30, caculator.GetVolume(12)); Assert.AreEqual(30, caculator.GetVolume(13)); Assert.AreEqual(30, caculator.GetVolume(14)); Assert.AreEqual(30, caculator.GetVolume(15)); Assert.AreEqual(30, caculator.GetVolume(16)); Assert.AreEqual(30, caculator.GetVolume(17)); Assert.AreEqual(30, caculator.GetVolume(18)); Assert.AreEqual(30, caculator.GetVolume(19)); Assert.AreEqual(100, caculator.GetVolume(20)); Assert.AreEqual(100, caculator.GetVolume(21)); Assert.AreEqual(100, caculator.GetVolume(22)); Assert.AreEqual(100, caculator.GetVolume(23)); Assert.AreEqual(100, caculator.GetVolume(24)); Assert.AreEqual(100, caculator.GetVolume(25)); Assert.AreEqual(200, caculator.GetVolume(30)); } } }