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 sealed class LocalFlightTelemetryStatusTests
{
    private static SystemNavigationTarget Expected=>new(1,10,"Exact station",SystemTargetKind.Station,20){NativeKey=3,NativeKind=5,NativeIdentity=new('a',64)};
    private static JsonElement Frame(bool selected=true,bool ready=false,string stage="bodyGeometry",long generation=7,int key=3,ulong body=10,string name="Exact station")
        =>JsonSerializer.SerializeToElement(new{generation,selected,telemetryReady=ready,sampleStage=stage,target=new{key,bodyAddress=body.ToString(),kind=5,marketId=20,name}});
    [Test]public void MissingGeometryKeepsTheMatchingIdentityAndExplainsTheReadOnlyWait()
    {
        var value=LocalFlightTelemetryStatus.Parse(Frame(),7,Expected);
        Check.That(value.Selected&&!value.TelemetryReady&&!value.TargetChanged);Check.Equal("bodyGeometry",value.SampleStage);
    }
    [Test]public void AnotherCompleteSelectedIdentityIsDistinguishedFromAnUnavailableCatalogueEntry()
    {
        var changed=LocalFlightTelemetryStatus.Parse(Frame(selected:false,key:4,body:11,name:"Another target"),7,Expected);
        Check.That(changed.TargetChanged&&!changed.Selected);Check.Equal("Another target",changed.ActualTarget);
        var unknown=LocalFlightTelemetryStatus.Parse(Frame(selected:false,key:-1,body:0,name:"",stage:"selectedIdentity"),7,Expected);
        Check.That(!unknown.TargetChanged&&!unknown.Selected);
    }
    [Test]public void ForeignGenerationAndContradictoryIdentityCannotBeTreatedAsOrdinarySamplingWait()
    {
        foreach(var value in new[]{Frame(generation:8),Frame(key:4,body:11,name:"Another target"),Frame(selected:false,ready:true)})
            Check.Throws<InvalidDataException>(()=>LocalFlightTelemetryStatus.Parse(value,7,Expected));
    }
}