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 GalaxyOriginalGridTests
{
    [Test] public void ActualOrbitDistanceSelectsTheOriginalStrictThresholds()
    {
        foreach(var (distance,step) in new[]{(6d,1d),(60,1),(60.001,10),(600,10),(600.001,100),(6000,100),(6000.001,1000),(25000,1000)})
            Check.Equal(step,GalaxyOriginalGrid.Step(distance));
    }
    [Test] public void GridRetainsActualHeightNearestSnappingAndBothCompleteAxes()
    {
        Span<GalaxyOriginalGridLine> lines=stackalloc GalaxyOriginalGridLine[198];
        Check.Equal(198,GalaxyOriginalGrid.Write(lines,new(-5,7.25,5),100));
        var first=lines[0];var middle=lines[49];var secondAxis=lines[99];
        Check.Equal(-490d,first.FromX);Check.Equal(7.25,first.FromY);Check.Equal(-490d,first.FromZ);Check.Equal(510d,first.ToZ);
        Check.Equal(0d,middle.FromX);Check.Equal(10f,middle.WidthMultiplier);
        Check.Equal(-500d,secondAxis.FromX);Check.Equal(500d,secondAxis.ToX);Check.Equal(-480d,secondAxis.FromZ);
        Check.That(lines.ToArray().All(l=>l.FromY==7.25&&l.ToY==7.25));
        Check.Equal(0,GalaxyOriginalGrid.Write(lines[..197],new(0,0,0),100));
    }
    [Test] public void ProjectionUsesTheSameBoundedCameraAsStars()
    {
        Span<MapSegment> lines=stackalloc MapSegment[198];
        var camera=GalaxyCamera.Create(new(51,14,-95),1878,1142,.3,.6,4);
        var count=GalaxyMapGeometry.WriteOriginalGrid(lines,camera,out var step);
        Check.Equal(10d,step);Check.That(count>0&&count<=198);
        Check.That(lines[..count].ToArray().All(l=>l.X1>=-1e-6&&l.X1<=camera.Width+1e-6&&l.X2>=-1e-6&&l.X2<=camera.Width+1e-6&&l.Y1>=-1e-6&&l.Y1<=camera.Height+1e-6&&l.Y2>=-1e-6&&l.Y2<=camera.Height+1e-6));
    }
}