using System.Runtime.InteropServices;
namespace XFEEDToolBox.Plugin;
internal static unsafe partial class Navigation
{
static uint GalaxyRouteStarClassFilterSelfTest()
{
var memory=Platform.Allocate(0x20000);if(memory==0)return 0;
try
{
var expectedImage=memory-0x551FFC0;var main=memory+0x3000;var controller=memory+0x11000;
var provider=memory+0x12000;var block=memory+0x13000;var storage=memory+0x15000;var rows=storage+8;
Write(memory+0x78,expectedImage+0x3A68F60);Write(expectedImage+0x552D5C0+0x40,expectedImage+0x3B45E30);
Write(expectedImage+0x552E100+0x28,expectedImage+0x3B8BA80);Write(expectedImage+0x552E100+0x30,expectedImage+0x3B178D0);
Write(main,expectedImage+0x551FFC0);Write(main+0x280,-1);Write(main+0x288,controller+0x28);
Write(controller,expectedImage+0x552D5C0);Write(controller+0x28,expectedImage+0x552D788);
Write(controller+0x330,block);Write(controller+0x338,provider);Write(block+8,1);Write(block+0xC,1);
Write(provider,expectedImage+0x552E100);Write(provider+0x60,5);Write(provider+0x80,(byte)1);Write(provider+0x81,(byte)1);
Write(provider+0x90,15UL);Write(provider+0x98,32UL);Write(provider+0xA0,storage);Write(storage,0x7FFFUL);
for(uint i=0;i<15;i++){Write(rows+i*0x38+8,i);Write(rows+i*0x38+0x30,(byte)(i<7?1:0));}
bool Copy(out GalaxyRouteStarClassState state)=>CopyGalaxyRouteStarClassState(main,expectedImage,out state);
uint passed=0;if(Copy(out var state)&&state.mask==0x807F&&state.provider==provider&&state.mapController==controller)passed|=1;
Write(provider+0x81,(byte)0);var independent=Copy(out state)&&state.mask==0x7F;
for(uint i=0;i<15;i++)Write(rows+i*0x38+0x30,(byte)0);Write(provider+0x81,(byte)1);
if(independent&&Copy(out state)&&state.mask==0x8000)passed|=2;
Write(rows+8,15u);var invalid=!Copy(out _);Write(rows+8,0u);Write(rows+0x38+8,0u);invalid&=!Copy(out _);Write(rows+0x38+8,1u);if(invalid)passed|=4;
Write(provider+0x90,14UL);invalid=!Copy(out _);Write(provider+0x90,15UL);Write(provider+0x98,31UL);invalid&=!Copy(out _);Write(provider+0x98,32UL);
Write(provider+0xA0,(nuint)0);invalid&=!Copy(out _);Write(provider+0xA0,storage);if(invalid)passed|=8;
Write(provider+0x81,(byte)2);invalid=!Copy(out _);Write(provider+0x81,(byte)1);Write(provider+0x80,(byte)0);invalid&=!Copy(out _);Write(provider+0x80,(byte)1);
Write(provider+0x60,6);invalid&=!Copy(out _);Write(provider+0x60,5);if(invalid)passed|=16;
Write(provider,expectedImage+0x552E108);invalid=!Copy(out _);Write(provider,expectedImage+0x552E100);
Write(expectedImage+0x552E100+0x28,expectedImage+0x3B8BA88);invalid&=!Copy(out _);Write(expectedImage+0x552E100+0x28,expectedImage+0x3B8BA80);
Write(controller+0x330,(nuint)0);invalid&=!Copy(out _);Write(controller+0x330,block);if(invalid)passed|=32;
Write(main+0x280,0);invalid=!Copy(out _);Write(main+0x280,-1);Write(main+0x288,(nuint)0);invalid&=!Copy(out _);Write(main+0x288,controller+0x28);
if(invalid&&ValidGalaxyRouteStarMask(0)&&ValidGalaxyRouteStarMask(0xFFFF)&&!ValidGalaxyRouteStarMask(0x10000)&&!ValidGalaxyRouteStarMask(uint.MaxValue))passed|=64;
var before=Platform.ReadBytes(memory,0x20000);if(Copy(out _)&&Platform.ReadBytes(memory,0x20000).AsSpan().SequenceEqual(before))passed|=128;
return passed;
}
finally{Platform.Free(memory);}
}
#if PLUGIN_NAVIGATION
[UnmanagedCallersOnly(EntryPoint="XFENavigationGalaxyRouteStarClassFilterSelfTest")]
internal static uint ExportGalaxyRouteStarClassFilterSelfTest()=>RunTest(GalaxyRouteStarClassFilterSelfTest);
#endif
}
using System.Runtime.InteropServices;
namespace XFEEDToolBox.Plugin;
internal static unsafe partial class Navigation
{
static uint GalaxyRouteStarClassFilterSelfTest()
{
var memory=Platform.Allocate(0x20000);if(memory==0)return 0;
try
{
var expectedImage=memory-0x551FFC0;var main=memory+0x3000;var controller=memory+0x11000;
var provider=memory+0x12000;var block=memory+0x13000;var storage=memory+0x15000;var rows=storage+8;
Write(memory+0x78,expectedImage+0x3A68F60);Write(expectedImage+0x552D5C0+0x40,expectedImage+0x3B45E30);
Write(expectedImage+0x552E100+0x28,expectedImage+0x3B8BA80);Write(expectedImage+0x552E100+0x30,expectedImage+0x3B178D0);
Write(main,expectedImage+0x551FFC0);Write(main+0x280,-1);Write(main+0x288,controller+0x28);
Write(controller,expectedImage+0x552D5C0);Write(controller+0x28,expectedImage+0x552D788);
Write(controller+0x330,block);Write(controller+0x338,provider);Write(block+8,1);Write(block+0xC,1);
Write(provider,expectedImage+0x552E100);Write(provider+0x60,5);Write(provider+0x80,(byte)1);Write(provider+0x81,(byte)1);
Write(provider+0x90,15UL);Write(provider+0x98,32UL);Write(provider+0xA0,storage);Write(storage,0x7FFFUL);
for(uint i=0;i<15;i++){Write(rows+i*0x38+8,i);Write(rows+i*0x38+0x30,(byte)(i<7?1:0));}
bool Copy(out GalaxyRouteStarClassState state)=>CopyGalaxyRouteStarClassState(main,expectedImage,out state);
uint passed=0;if(Copy(out var state)&&state.mask==0x807F&&state.provider==provider&&state.mapController==controller)passed|=1;
Write(provider+0x81,(byte)0);var independent=Copy(out state)&&state.mask==0x7F;
for(uint i=0;i<15;i++)Write(rows+i*0x38+0x30,(byte)0);Write(provider+0x81,(byte)1);
if(independent&&Copy(out state)&&state.mask==0x8000)passed|=2;
Write(rows+8,15u);var invalid=!Copy(out _);Write(rows+8,0u);Write(rows+0x38+8,0u);invalid&=!Copy(out _);Write(rows+0x38+8,1u);if(invalid)passed|=4;
Write(provider+0x90,14UL);invalid=!Copy(out _);Write(provider+0x90,15UL);Write(provider+0x98,31UL);invalid&=!Copy(out _);Write(provider+0x98,32UL);
Write(provider+0xA0,(nuint)0);invalid&=!Copy(out _);Write(provider+0xA0,storage);if(invalid)passed|=8;
Write(provider+0x81,(byte)2);invalid=!Copy(out _);Write(provider+0x81,(byte)1);Write(provider+0x80,(byte)0);invalid&=!Copy(out _);Write(provider+0x80,(byte)1);
Write(provider+0x60,6);invalid&=!Copy(out _);Write(provider+0x60,5);if(invalid)passed|=16;
Write(provider,expectedImage+0x552E108);invalid=!Copy(out _);Write(provider,expectedImage+0x552E100);
Write(expectedImage+0x552E100+0x28,expectedImage+0x3B8BA88);invalid&=!Copy(out _);Write(expectedImage+0x552E100+0x28,expectedImage+0x3B8BA80);
Write(controller+0x330,(nuint)0);invalid&=!Copy(out _);Write(controller+0x330,block);if(invalid)passed|=32;
Write(main+0x280,0);invalid=!Copy(out _);Write(main+0x280,-1);Write(main+0x288,(nuint)0);invalid&=!Copy(out _);Write(main+0x288,controller+0x28);
if(invalid&&ValidGalaxyRouteStarMask(0)&&ValidGalaxyRouteStarMask(0xFFFF)&&!ValidGalaxyRouteStarMask(0x10000)&&!ValidGalaxyRouteStarMask(uint.MaxValue))passed|=64;
var before=Platform.ReadBytes(memory,0x20000);if(Copy(out _)&&Platform.ReadBytes(memory,0x20000).AsSpan().SequenceEqual(before))passed|=128;
return passed;
}
finally{Platform.Free(memory);}
}
#if PLUGIN_NAVIGATION
[UnmanagedCallersOnly(EntryPoint="XFENavigationGalaxyRouteStarClassFilterSelfTest")]
internal static uint ExportGalaxyRouteStarClassFilterSelfTest()=>RunTest(GalaxyRouteStarClassFilterSelfTest);
#endif
}