Files

54 lines
1.3 KiB
C#

using MrGameEng.Core;
using Xunit;
namespace MrGameEng.Core.Tests;
public class GameClockTests
{
[Fact]
public void Advance_SingleFrame_UpdatesDeltaTotalAndFrameCount()
{
var clock = new GameClock();
clock.Advance(0.016f);
Assert.Equal(0.016f, clock.DeltaTime);
Assert.Equal(0.016f, clock.UnscaledDeltaTime);
Assert.Equal(0.016, clock.TotalTime, 3);
Assert.Equal(1, clock.FrameCount);
}
[Fact]
public void Advance_WithTimeScale_ScalesDeltaButNotUnscaled()
{
var clock = new GameClock { TimeScale = 0.5f };
clock.Advance(0.02f);
Assert.Equal(0.01f, clock.DeltaTime, 3);
Assert.Equal(0.02f, clock.UnscaledDeltaTime, 3);
Assert.Equal(0.01, clock.TotalTime, 3);
Assert.Equal(0.02, clock.UnscaledTotalTime, 3);
}
[Fact]
public void TimeScale_Zero_PausesScaledTime()
{
var clock = new GameClock { TimeScale = 0f };
clock.Advance(0.016f);
Assert.Equal(0f, clock.DeltaTime);
Assert.Equal(0.0, clock.TotalTime);
Assert.Equal(0.016, clock.UnscaledTotalTime, 3);
}
[Fact]
public void TimeScale_Negative_ClampsToZero()
{
var clock = new GameClock { TimeScale = -1f };
Assert.Equal(0f, clock.TimeScale);
}
}