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