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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using System.Numerics;
using System.Runtime.InteropServices;
using XFEEDToolBox.Core.Rendering;
using XFEExtension.NetCore.XUnit.Attributes;

namespace XFEEDToolBox.Test;

[TestFixture]
public sealed class GalaxyOriginalTradeGeometryTests
{
    [Test] public void CurrentTradeMeshHasTheAuthoredCentresAndSharedSeams()
    {
        var mesh = GalaxyOriginalTradeGeometry.RouteMesh;
        Check.Equal(50, mesh.HalfVertices.Count); Check.Equal(192, mesh.Indices.Count);
        Check.That(mesh.Indices.All(i => i < mesh.HalfVertices.Count));
        Check.Equal(GalaxyOriginalTradeGeometry.PackHalf4(0,-1,0,0),mesh.HalfVertices[0]);
        Check.Equal(GalaxyOriginalTradeGeometry.PackHalf4(.03125f,0,.03125f,.5f),mesh.HalfVertices[2]);
        Check.Equal(GalaxyOriginalTradeGeometry.PackHalf4(1,1,1,1),mesh.HalfVertices[^1]);
        Check.Equal(4, GalaxyOriginalTradeGeometry.HotspotMesh.HalfVertices.Count);
        Check.Equal(6, GalaxyOriginalTradeGeometry.HotspotMesh.Indices.Count);
    }
    [Test] public void CurrentTradeKeepsHighAddressBitsDirectionAndCategoryInItsCurveSeed()
    {
        var a = GalaxyOriginalTradeGeometry.Random(9007199254740993, 11, 2);
        Check.That(a != GalaxyOriginalTradeGeometry.Random(1,11,2));
        Check.That(a != GalaxyOriginalTradeGeometry.Random(11,9007199254740993,2));
        Check.That(a != GalaxyOriginalTradeGeometry.Random(9007199254740993,11,3));
        Check.That(a.Phase >= 0 && a.Phase < 1 && Vector3.Abs(a.MidOffset).X <= 1 && Vector3.Abs(a.MidOffset).Y <= 1 && Vector3.Abs(a.MidOffset).Z <= 1);
        var route = GalaxyOriginalTradeGeometry.Route(Vector3.Zero, Vector3.UnitX, 9007199254740993,11,2,.5f,.5f);
        Check.Equal(44, Marshal.SizeOf<GalaxyOriginalTradeInstance>());
        Check.Equal(0x80FFFFFFu, route.Colour);
        Check.Equal((ushort)0x3B33, (ushort)route.WidthTime); // .5*1.2+.3, rounded to original half precision.
    }
    [Test] public void CurrentTradeFlushesHalfSubnormalsAndHasTheActualFocusBoundary()
    {
        Check.Equal((ushort)0, GalaxyOriginalTradeGeometry.PackHalf(1e-5f));
        Check.Equal((ushort)0x8000, GalaxyOriginalTradeGeometry.PackHalf(-1e-5f));
        Check.Equal((ushort)0x0400, GalaxyOriginalTradeGeometry.PackHalf(0.00006103515625f));
        Check.Equal(1f, GalaxyOriginalTradeGeometry.FocusFade(25));
        Check.Equal(.5f, GalaxyOriginalTradeGeometry.FocusFade(26.5f));
        Check.Equal(0f, GalaxyOriginalTradeGeometry.FocusFade(28));
        Check.Equal(2, GalaxyOriginalTradeGeometry.HotspotCount(0));
        Check.Equal(3, GalaxyOriginalTradeGeometry.HotspotCount(3));
        Check.Equal(8, GalaxyOriginalTradeGeometry.HotspotCount(100));
    }
}