using XFEEDToolBox.Core.Navigation; using XFEExtension.NetCore.XUnit.Attributes; namespace XFEEDToolBox.Test; [TestFixture] public class OriginalFuelConsumptionBoundsTests { [Test]public void OriginalCurveLowerAndUpperAreBothConverted() { Check.That(OriginalFuelConsumptionBounds.TryConvertRange(new(450,900),2,.5,out var range)); Check.That(range.Minimum>.03999&&range.Minimum<.04&&range.Maximum>.08&&range.Maximum<.08001); } [Test]public void RoundingCannotTurnAZeroCurveMinimumIntoNegativeFuel() {Check.That(OriginalFuelConsumptionBounds.TryConvertRange(new(-1e-5,1),45000,1,out var range));Check.That(range.Minimum==0&&range.Maximum>1);} [Test]public void OriginalEnergyUnitsAreConvertedUsingTheShipsFuelParameter() { Check.That(OriginalFuelConsumptionBounds.TryConvert(new(450,900),2,.5,out var rate)); Check.That(rate>.08&&rate<.08001); } [Test]public void DifferentFuelConversionsChangeTheBudget() { Check.That(OriginalFuelConsumptionBounds.TryConvert(new(1,4500),1,1,out var first)); Check.That(OriginalFuelConsumptionBounds.TryConvert(new(1,4500),1,2,out var second)); Check.That(first>second*1.99&&first=1.5&&rate<1.501); } [Test]public void UnknownOrNonPositiveNativeParametersCannotProduceABudget() { foreach(var bad in new[]{0,-1,double.NaN,double.PositiveInfinity}) { Check.That(!OriginalFuelConsumptionBounds.TryConvert(new(0,1),bad,1,out _)); Check.That(!OriginalFuelConsumptionBounds.TryConvert(new(0,1),1,bad,out _)); } } [Test]public void MalformedCurveAndOverflowFailClosed() { Check.That(!OriginalFuelConsumptionBounds.TryConvert(new(2,1),1,1,out _)); Check.That(!OriginalFuelConsumptionBounds.TryConvert(new(0,0),1,1,out _)); Check.That(!OriginalFuelConsumptionBounds.TryConvert(new(0,double.NaN),1,1,out _)); Check.That(!OriginalFuelConsumptionBounds.TryConvert(new(0,double.MaxValue),double.MaxValue,1,out _)); } }