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 sealed class ShipDamageRecoveryPolicyTests
{
    [Test]public void OldDamageClearsAfterThreeSecondsOfFreshStableSamples()
    {
        var state=ShipDamageRecoveryPolicy.Observe(false,true,0,0,1000);
        for(ulong now=1100;now<4000;now+=100)
        {state=ShipDamageRecoveryPolicy.Observe(state.Emergency,false,state.StableSince,now-100,now);Check.That(state.Emergency);}
        Check.That(!ShipDamageRecoveryPolicy.Observe(state.Emergency,false,state.StableSince,3900,4000).Emergency);
    }
    [Test]public void ContinuingDamageRestartsTheStableInterval()
    {
        var state=ShipDamageRecoveryPolicy.Observe(true,true,1000,3900,4000);
        Check.Equal(4000UL,state.StableSince);Check.That(state.Emergency);
        Check.That(ShipDamageRecoveryPolicy.Observe(true,false,state.StableSince,4500,4600).Emergency);
    }
    [Test]public void MissingTelemetryDoesNotCountAsStableFlight()
    {
        var state=ShipDamageRecoveryPolicy.Observe(true,false,1000,1200,5000);
        Check.That(state.Emergency);Check.Equal(5000UL,state.StableSince);
    }
    [Test]public void ANewShipIdentityDoesNotInheritThePreviousEmergency()
    {
        var state=ShipDamageRecoveryPolicy.Observe(false,false,1000,1200,1300);
        Check.That(!state.Emergency);Check.Equal(1300UL,state.StableSince);
    }
    [Test]public void ABackwardsClockRestartsObservationWithoutUnderflow()
    {
        var state=ShipDamageRecoveryPolicy.Observe(true,false,1500,1600,1000);
        Check.That(state.Emergency);Check.Equal(1000UL,state.StableSince);
    }
}