namespace XFEEDToolBox.Plugin;
internal static unsafe partial class Navigation
{
private static uint DockingFixtureSelfTest()
{
uint passed=0;var memory=Platform.Allocate(4096);if(memory==0)return 0;
try
{
var node=memory;var binding=memory+1024;var source=memory+2048;
void Reset(){Write(node+0xB0,binding);Write(node+0x78,source);Write(node+0xD0,0f);Write(binding,1);Write(binding+0x18,0f);Write(source+0x18,0f);}
Reset();if(BeginDockingFixturePulse(node,binding,source,out var pulse)&&Read<float>(binding+0x18)==.75f)passed|=1;
if(Read<float>(node+0xD0)==0&&Read<float>(source+0x18)==0){EndDockingFixturePulse(pulse);if(Read<float>(binding+0x18)==0)passed|=2;}
Reset();Write(binding+0x18,.5f);if(!BeginDockingFixturePulse(node,binding,source,out _)&&Read<float>(binding+0x18)==.5f)passed|=4;
Reset();Write(node+0x78,source+64);if(!BeginDockingFixturePulse(node,binding,source,out _))passed|=8;
Reset();BeginDockingFixturePulse(node,binding,source,out pulse);Write(binding+0x18,.25f);EndDockingFixturePulse(pulse);if(Read<float>(binding+0x18)==.25f)passed|=16;
Reset();Write(node+0xD0,float.NaN);if(!BeginDockingFixturePulse(node,binding,source,out _))passed|=32;
if(FixtureGeometryEligible(6000,0,1)&&!FixtureGeometryEligible(3000,0,1)&&!FixtureGeometryEligible(7500,0,1)&&!FixtureGeometryEligible(6000,20,1)&&!FixtureGeometryEligible(6000,0,.5))passed|=64;
if(!FixtureGeometryEligible(double.NaN,0,1)&&!FixtureGeometryEligible(6000,double.NaN,1)&&!FixtureGeometryEligible(6000,0,double.NaN)&&!BeginDockingFixturePulse(0,binding,source,out _))passed|=128;
}
finally{Platform.Free(memory);}return passed;
}
#if PLUGIN_NAVIGATION
[UnmanagedCallersOnly(EntryPoint="XFENavigationDockingFixtureSelfTest")]
internal static uint ExportDockingFixtureSelfTest()=>RunTest(DockingFixtureSelfTest);
#endif
}
namespace XFEEDToolBox.Plugin;
internal static unsafe partial class Navigation
{
private static uint DockingFixtureSelfTest()
{
uint passed=0;var memory=Platform.Allocate(4096);if(memory==0)return 0;
try
{
var node=memory;var binding=memory+1024;var source=memory+2048;
void Reset(){Write(node+0xB0,binding);Write(node+0x78,source);Write(node+0xD0,0f);Write(binding,1);Write(binding+0x18,0f);Write(source+0x18,0f);}
Reset();if(BeginDockingFixturePulse(node,binding,source,out var pulse)&&Read<float>(binding+0x18)==.75f)passed|=1;
if(Read<float>(node+0xD0)==0&&Read<float>(source+0x18)==0){EndDockingFixturePulse(pulse);if(Read<float>(binding+0x18)==0)passed|=2;}
Reset();Write(binding+0x18,.5f);if(!BeginDockingFixturePulse(node,binding,source,out _)&&Read<float>(binding+0x18)==.5f)passed|=4;
Reset();Write(node+0x78,source+64);if(!BeginDockingFixturePulse(node,binding,source,out _))passed|=8;
Reset();BeginDockingFixturePulse(node,binding,source,out pulse);Write(binding+0x18,.25f);EndDockingFixturePulse(pulse);if(Read<float>(binding+0x18)==.25f)passed|=16;
Reset();Write(node+0xD0,float.NaN);if(!BeginDockingFixturePulse(node,binding,source,out _))passed|=32;
if(FixtureGeometryEligible(6000,0,1)&&!FixtureGeometryEligible(3000,0,1)&&!FixtureGeometryEligible(7500,0,1)&&!FixtureGeometryEligible(6000,20,1)&&!FixtureGeometryEligible(6000,0,.5))passed|=64;
if(!FixtureGeometryEligible(double.NaN,0,1)&&!FixtureGeometryEligible(6000,double.NaN,1)&&!FixtureGeometryEligible(6000,0,double.NaN)&&!BeginDockingFixturePulse(0,binding,source,out _))passed|=128;
}
finally{Platform.Free(memory);}return passed;
}
#if PLUGIN_NAVIGATION
[UnmanagedCallersOnly(EntryPoint="XFENavigationDockingFixtureSelfTest")]
internal static uint ExportDockingFixtureSelfTest()=>RunTest(DockingFixtureSelfTest);
#endif
}