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<second*2.01);
}
[Test]public void CubicInteriorPeakIsIncludedBeforeConverting()
{
Check.That(OriginalCurveBounds.TryBound([new(0,0,1,-12),new(1,0,0,-12)],2,0,1,out var curve));
Check.That(OriginalFuelConsumptionBounds.TryConvert(curve,45000,1,out var rate));
Check.That(rate>=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 _));
}
}
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<second*2.01);
}
[Test]public void CubicInteriorPeakIsIncludedBeforeConverting()
{
Check.That(OriginalCurveBounds.TryBound([new(0,0,1,-12),new(1,0,0,-12)],2,0,1,out var curve));
Check.That(OriginalFuelConsumptionBounds.TryConvert(curve,45000,1,out var rate));
Check.That(rate>=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 _));
}
}