54 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|