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

XFEEDToolBox

【WinUI】XFE精英危险工具箱

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

namespace XFEEDToolBox.Test;

[TestFixture]
public sealed class GalaxyBlackHoleTests
{
    [Test] public void OnlyActualPhysicalTypesAndOriginalNavigationFlagEnableTheSeparateMaterial()
    {
        var physical=GalaxyOriginalSettings.Parse("<Root><RealisticView Value='0'/><NavigationMarkers Value='1'/></Root>",new(){ShowMarkers=false}).Filter;
        Check.That(!physical.ShowMarkers&&physical.ShowRoute&&GalaxyOriginalBlackHole.Enabled(41,physical.Mode==GalaxyMapMode.Realistic,physical.ShowRoute));
        var noNavigation=GalaxyOriginalSettings.Parse("<Root><RealisticView Value='0'/><NavigationMarkers Value='0'/></Root>",new(){ShowMarkers=true}).Filter;
        Check.That(noNavigation.ShowMarkers&&!noNavigation.ShowRoute&&!GalaxyOriginalBlackHole.Enabled(42,noNavigation.Mode==GalaxyMapMode.Realistic,noNavigation.ShowRoute));
        Check.That(GalaxyOriginalBlackHole.IsSpecial((ushort)(42|24<<10))&&!GalaxyOriginalBlackHole.IsSpecial(40));
        Check.That(!GalaxyOriginalBlackHole.Enabled(41,false,true)&&!GalaxyOriginalBlackHole.Enabled(40,true,true));
    }
    [Test] public void SourceTextureAndHalfSizeArePreservedWithoutAnEstimatedMinimum()
    {
        Check.Equal(GalaxyOriginalBlackHole.PayloadSha256,Convert.ToHexStringLower(SHA256.HashData(GalaxyOriginalBlackHole.Payload.Span)));
        Check.Equal(181248,GalaxyOriginalBlackHole.Payload.Length);Check.Equal(10,GalaxyOriginalBlackHole.Mips.Count);
        Check.Equal((float)(Half).7f,GalaxyOriginalBlackHole.HalfExtent(.7f));
        Check.That(GalaxyOriginalBlackHole.HalfExtent(.00001f) is >0 and <.0001f);
        Check.Equal(0f,GalaxyOriginalBlackHole.HalfExtent(0));Check.Equal(0f,GalaxyOriginalBlackHole.HalfExtent(float.PositiveInfinity));
        Check.Equal(0f,GalaxyOriginalBlackHole.HalfExtent(float.NaN));Check.Equal(0f,GalaxyOriginalBlackHole.HalfExtent(float.MaxValue));
    }
    [Test] public void BlackHolePixelUsesSeparateChannelsSignedHdrAndUnclampedSourceAlpha()
    {
        var material=GalaxyOriginalBlackHole.Material();
        var dark=GalaxyOriginalBlackHole.SourcePixel(Vector3.Zero,0,material,1f/256);
        Check.Equal(new Vector4(1f/256,1f/256,1f/256,0),dark);
        var bright=GalaxyOriginalBlackHole.SourcePixel(Vector3.One,0,material,1);
        Check.That(bright.X<0&&bright.Y<0&&bright.Z<0&&bright.W>1);
        var scaled=GalaxyOriginalBlackHole.SourcePixel(Vector3.One,0,material,1f/256);
        Check.Equal(bright.W,scaled.W);Check.Equal(bright.X/256,scaled.X);
        var red=GalaxyOriginalBlackHole.SourcePixel(new(1,0,0),0,material,1);
        Check.That(red.X<0&&red.Y==1&&red.Z==1&&red.W>0);
        Check.Equal(new Vector4(1,4,1,0),GalaxyOriginalBlackHole.Material(true));
    }
}