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 ScoOriginalEffectQualificationTests
{
    [Test]public void CompleteOriginalPredicateRequiresAllFourConditionsNotJustARegisteredPointer()
    {
        Check.Equal(44,ScoOriginalEffectQualification.ExternalPredicateCode.Length);
        Check.Equal((byte)0xC3,ScoOriginalEffectQualification.ExternalPredicateCode[^1]);
        for(var bits=0;bits<16;bits++)Check.Equal(bits==15,ScoOriginalEffectQualification.ExternalEnabled((bits&1)!=0,(bits&2)!=0,(bits&4)!=0,(bits&8)!=0));
    }
    [Test]public void ZeroWeightOrZeroVectorProvesNoTargetAdditionWhileNonzeroAndUnknownDoNot()
    {
        Check.That(ScoOriginalEffectQualification.TargetCacheHasZeroEffect(0,100,200,300));
        Check.That(ScoOriginalEffectQualification.TargetCacheHasZeroEffect(1,0,0,0));
        foreach(var value in new[]{(.5,0d,0d,1d),(double.NaN,0d,0d,0d),(0d,double.NaN,0d,0d),(2d,0d,0d,0d),(-1d,0d,0d,0d)})
            Check.That(!ScoOriginalEffectQualification.TargetCacheHasZeroEffect(value.Item1,value.Item2,value.Item3,value.Item4));
    }
    [Test]public void CompletedOutputRequiresExactIdentityThreadStepAndAtMostTwentyFiveMillisecondsLag()
    {
        bool Fresh(ulong entity=1,ulong world=2,uint thread=3,ulong at=1000,ulong now=1025,ulong step=1,double dt=.025)
            =>ScoOriginalEffectQualification.FreshCompletedOutput(entity,world,1,2,thread,3,at,now,step,dt);
        Check.That(Fresh());
        Check.That(!Fresh(now:1026));Check.That(!Fresh(entity:2));Check.That(!Fresh(world:3));Check.That(!Fresh(thread:4));
        Check.That(!Fresh(step:0));Check.That(!Fresh(at:1026));Check.That(!Fresh(dt:double.NaN));Check.That(!Fresh(dt:.026));
        Check.That(Fresh(now:1011,dt:.005));Check.That(!Fresh(now:1012,dt:.005));
    }
}