XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
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 _));
    }
}