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 OriginalCruiseCycleQualificationTests
{
    private static readonly OriginalCruiseCycleIdentity Id=new(new('a',32),new('b',32),4,12,24);
    private static readonly string StopId=new('c',32);
    private static OriginalCruiseCycleQualification Started(int count=5)
    {var proof=new OriginalCruiseCycleQualification();Check.That(proof.Begin(Id,1000,true,1));for(var i=1;i<=count;i++)proof.Observe(12,24,(ulong)(1000+i*20),2);return proof;}
    [Test]public void OneOriginalCycleRequiresFiveUpdatesAndLaterOff()
    {var proof=Started();Check.That(proof.Stop(Id,StopId,1120,true,2,3,true));Check.That(!proof.Qualified);proof.Observe(12,24,1140,3);Check.That(proof.Qualified);Check.Equal(5,proof.Completed!.ActiveSamples);}
    [Test]public void DuplicateAndReversedTimestampsCannotCountAsFiveUpdates()
    {var proof=Started(0);for(var i=0;i<8;i++){proof.Observe(12,24,1020,2);proof.Observe(12,24,1010,2);}Check.Equal(1,proof.ActiveSamples);Check.That(!proof.Stop(Id,StopId,1120,true,2,0,true));}
    [Test]public void AnotherShipOrReferenceCannotSupplyActiveFrames()
    {var proof=Started(0);for(var i=1;i<8;i++){proof.Observe(13,24,(ulong)(1000+i*20),2);proof.Observe(12,25,(ulong)(1000+i*20),2);}Check.Equal(0,proof.ActiveSamples);}
    [Test]public void ASecondEnableCannotBorrowTheEarlierCyclesFrames()
    {var proof=Started();var next=Id with{StartRequestId=new('d',32)};Check.That(proof.Begin(next,1200,true,1));Check.Equal(0,proof.ActiveSamples);Check.That(!proof.Stop(next,StopId,1250,true,2,0,true));}
    [Test]public void AcknowledgedEnableWithoutOriginalCallCannotQualify()
    {var proof=new OriginalCruiseCycleQualification();Check.That(!proof.Begin(Id,1000,false,1));for(var i=1;i<8;i++)proof.Observe(12,24,(ulong)(1000+i*20),2);Check.That(!proof.Stop(Id,StopId,1200,true,2,0,true));}
    [Test]public void StopMustMatchOwnerRequestSelectionAndShip()
    {foreach(var different in new[]{Id with{Owner=new('d',32)},Id with{StartRequestId=new('d',32)},Id with{SelectionGeneration=5},Id with{Entity=13},Id with{World=25}}){var proof=Started();Check.That(!proof.Stop(different,StopId,1120,true,2,0,true));proof.Observe(12,24,1140,0);Check.That(!proof.Qualified);}}
    [Test]public void IdleObservationAndGlobalDisableCountsCannotReplaceAnOriginalStop()
    {var proof=Started();Check.That(!proof.Stop(Id,StopId,1120,false,0,0,true));proof.Observe(12,24,1140,0);Check.That(!proof.Qualified);}
    [Test]public void AutomaticExpiryIsNotTheExplicitReleaseQualification()
    {var proof=Started();Check.That(!proof.Stop(Id,StopId,1120,true,2,3,false));proof.Observe(12,24,1140,3);Check.That(!proof.Qualified);}
    [Test]public void OffMustFollowTheCallAndBelongToTheSameMainShip()
    {var proof=Started();Check.That(proof.Stop(Id,StopId,1120,true,2,3,true));proof.Observe(12,24,1120,3);proof.Observe(13,24,1140,3);proof.Observe(12,25,1140,3);Check.That(!proof.Qualified);proof.Observe(12,24,1160,0);Check.That(proof.Qualified);}
}