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 GalaxyOriginalFrameFadeClockTests
{
    [Test] public void OrdinaryClockUsesSecondsAndOriginalMinimumAndUpperLimits()
    {
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(.016,out var normal));Check.Equal(.016f,normal);
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(0,out var zero));
        Check.Equal(GalaxyOriginalFrameFadeClock.MinimumFrameValue,zero);
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(-.1,out var backwards));
        Check.Equal(GalaxyOriginalFrameFadeClock.MinimumFrameValue,backwards);
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(.8,out var slow));Check.Equal(.5f,slow);
    }

    [Test] public void FourSecondBoundaryPreservesTheOriginalDiscontinuousStallPolicy()
    {
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(4,out var exact));Check.Equal(.5f,exact);
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(MathF.BitIncrement(4),out var longer));
        Check.Equal(GalaxyOriginalFrameFadeClock.LongFrameValue,longer);
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(60,out var stalled));Check.Equal(longer,stalled);
    }

    [Test] public void FixedStepIsExplicitAndStillPassesThroughOriginalFrameClamps()
    {
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(null,out var fixedStep,60));Check.Equal(1f/60,fixedStep);
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(30,out var same,60));Check.Equal(fixedStep,same);
        Check.That(GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(null,out var slow,.1f));
        Check.Equal(GalaxyOriginalFrameFadeClock.LongFrameValue,slow);
    }

    [Test] public void MissingClockAndInvalidFixedRateNeverBecomeAnAssumedCadence()
    {
        Check.That(!GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(null,out _));
        Check.That(!GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(double.NaN,out _));
        Check.That(!GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(double.PositiveInfinity,out _));
        Check.That(!GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(.016,out _,0));
        Check.That(!GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(.016,out _,-60));
        Check.That(!GalaxyOriginalFrameFadeClock.TryFromElapsedSeconds(.016,out _,float.NaN));
    }
}