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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using System.Text.Json;
using XFEEDToolBox.Core.Navigation;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public class DockingValidationProofTests
{
    [Test]public void RejectedResetCanOnlyObserveTakeoverBeforeOriginalDispatch()
    {
        var receipt=JsonSerializer.SerializeToElement(new{failed=true,applied=false,pending=false,originalResetCalled=false,originalDockingStartAttempted=false,
            originalDockingStartCalled=false,phase="failed-no-replay",failureStage="initial-telemetry-schema | local.read.reply",nativeGeneration=0});
        Check.That(DockingValidationProof.RejectedBeforeResetDispatch(receipt));
        var data=System.Text.Json.Nodes.JsonNode.Parse(receipt.GetRawText())!.AsObject();
        data["failureStage"]="post-zero-telemetry-schema | health.read.reply";data["nativeGeneration"]=2;
        Check.That(DockingValidationProof.RejectedBeforeResetDispatch(JsonSerializer.SerializeToElement(data)));
        foreach(var change in new Action<System.Text.Json.Nodes.JsonObject>[]
            {row=>row["originalResetCalled"]=true,row=>row.Remove("originalDockingStartAttempted"),row=>row["failureStage"]="mapper-rejected-no-replay",row=>row["pending"]=true})
        {
            var changed=data.DeepClone().AsObject();change(changed);
            Check.That(!DockingValidationProof.RejectedBeforeResetDispatch(JsonSerializer.SerializeToElement(changed)));
        }
    }
    private static JsonElement Proof(int stage=3,int frames=3,double accumulator=.75,double source=.75,int sequence=14,string id="trial",bool restored=true,bool zero=false)
        =>JsonSerializer.SerializeToElement(new{stage,unseededFrames=frames,seedSequence=10,lastSequence=sequence,trialId=id,commandRestored=restored,commandAfter=0,accumulatorAfter=accumulator,sourceAfter=source,zeroVerified=zero});
    [Test]public void SourceAlreadyZeroCannotPassReproduction()=>Check.That(!DockingValidationProof.Persistent075(Proof(source:0)));
    [Test]public void OnePulseOrUnrestoredCommandCannotPassPersistence()
    {Check.That(!DockingValidationProof.Persistent075(Proof(frames:1)));Check.That(!DockingValidationProof.Persistent075(Proof(restored:false)));}
    [Test]public void ZeroReceiptRequiresOriginalAccumulatorAndSourceZero()
    {
        var before=Proof();Check.That(DockingValidationProof.CompletedZero(before,Proof(4,accumulator:0,source:0,sequence:15,zero:true)));
        Check.That(!DockingValidationProof.CompletedZero(before,Proof(4,accumulator:.75,source:0,sequence:15,zero:true)));
        Check.That(!DockingValidationProof.CompletedZero(before,Proof(4,accumulator:0,source:.75,sequence:15,zero:true)));
    }
    [Test]public void DifferentTrialAndOldFrameCannotPass()
    {
        var before=Proof();Check.That(!DockingValidationProof.CompletedZero(before,Proof(4,accumulator:0,source:0,sequence:15,id:"other",zero:true)));
        Check.That(!DockingValidationProof.CompletedZero(before,Proof(4,accumulator:0,source:0,sequence:14,zero:true)));
    }
}