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));
}
}
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));
}
}