XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
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.");
    }
}