using XFEEDToolBox.Core.Galaxy;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyMapLodTests
{
[Test] public void OverflowKeepsEverySparseEdgeAndStillFillsTheEntireStellarBudget()
{
var lod=new GalaxyMapLod();lod.Begin(3200,1800,65_536);
for(var i=0;i<100_000;i++)lod.Count(1600,900);
for(var i=0;i<1000;i++){lod.Count(5,5);lod.Count(3195,1795);}
lod.Count(0,0,true);lod.Seal();var kept=0;var left=0;var right=0;
for(var i=0;i<100_000;i++)if(lod.Accept(1600,900))kept++;
for(var i=0;i<1000;i++){if(lod.Accept(5,5)){left++;kept++;}if(lod.Accept(3195,1795)){right++;kept++;}}
Check.That(lod.Accept(0,0,true));kept++;
Check.Equal(65_536,kept);Check.Equal(1000,left);Check.Equal(1000,right);
}
[Test] public void BelowCapacityEveryMeasuredStarIsRetainedAndOverflowSamplesTheFullDepthOrder()
{
var lod=new GalaxyMapLod();lod.Begin(1000,800,100);for(var i=0;i<80;i++)lod.Count(i*10,400);lod.Seal();
Check.That(!lod.Active);for(var i=0;i<80;i++)Check.That(lod.Accept(i*10,400));
lod.Begin(1000,800,10);for(var i=0;i<100;i++)lod.Count(500,400);lod.Seal();
var indices=new List<int>();for(var i=0;i<100;i++)if(lod.Accept(500,400))indices.Add(i);
Check.Equal(10,indices.Count);Check.That(indices[0]>=5&&indices[^1]>=95,"Overflow must include distant layers rather than only the nearest entries.");
}
}
using XFEEDToolBox.Core.Galaxy;
using XFEExtension.NetCore.XUnit.Attributes;
namespace XFEEDToolBox.Test;
[TestFixture]
public sealed class GalaxyMapLodTests
{
[Test] public void OverflowKeepsEverySparseEdgeAndStillFillsTheEntireStellarBudget()
{
var lod=new GalaxyMapLod();lod.Begin(3200,1800,65_536);
for(var i=0;i<100_000;i++)lod.Count(1600,900);
for(var i=0;i<1000;i++){lod.Count(5,5);lod.Count(3195,1795);}
lod.Count(0,0,true);lod.Seal();var kept=0;var left=0;var right=0;
for(var i=0;i<100_000;i++)if(lod.Accept(1600,900))kept++;
for(var i=0;i<1000;i++){if(lod.Accept(5,5)){left++;kept++;}if(lod.Accept(3195,1795)){right++;kept++;}}
Check.That(lod.Accept(0,0,true));kept++;
Check.Equal(65_536,kept);Check.Equal(1000,left);Check.Equal(1000,right);
}
[Test] public void BelowCapacityEveryMeasuredStarIsRetainedAndOverflowSamplesTheFullDepthOrder()
{
var lod=new GalaxyMapLod();lod.Begin(1000,800,100);for(var i=0;i<80;i++)lod.Count(i*10,400);lod.Seal();
Check.That(!lod.Active);for(var i=0;i<80;i++)Check.That(lod.Accept(i*10,400));
lod.Begin(1000,800,10);for(var i=0;i<100;i++)lod.Count(500,400);lod.Seal();
var indices=new List<int>();for(var i=0;i<100;i++)if(lod.Accept(500,400))indices.Add(i);
Check.Equal(10,indices.Count);Check.That(indices[0]>=5&&indices[^1]>=95,"Overflow must include distant layers rather than only the nearest entries.");
}
}