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);
}
}
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);
}
}