62 lines
1.7 KiB
C#
62 lines
1.7 KiB
C#
using AcDream.App.World;
|
|
|
|
namespace AcDream.App.Tests.World;
|
|
|
|
public sealed class LiveWorldOriginStateTests
|
|
{
|
|
[Fact]
|
|
public void Placeholder_IsNotAuthoritativeUntilFirstInitialization()
|
|
{
|
|
var state = new LiveWorldOriginState();
|
|
|
|
state.SetPlaceholder(42, 43);
|
|
|
|
Assert.Equal(42, state.CenterX);
|
|
Assert.Equal(43, state.CenterY);
|
|
Assert.False(state.IsKnown);
|
|
Assert.True(state.TryInitialize(10, 11));
|
|
Assert.Equal(10, state.CenterX);
|
|
Assert.Equal(11, state.CenterY);
|
|
Assert.True(state.IsKnown);
|
|
Assert.False(state.TryInitialize(20, 21));
|
|
Assert.Equal(10, state.CenterX);
|
|
Assert.Equal(11, state.CenterY);
|
|
}
|
|
|
|
[Fact]
|
|
public void Recenter_ReplacesKnownOriginAndResetRetainsItAsPlaceholder()
|
|
{
|
|
var state = new LiveWorldOriginState();
|
|
Assert.True(state.TryInitialize(1, 2));
|
|
|
|
state.Recenter(3, 4);
|
|
state.Reset();
|
|
|
|
Assert.Equal(3, state.CenterX);
|
|
Assert.Equal(4, state.CenterY);
|
|
Assert.False(state.IsKnown);
|
|
Assert.True(state.TryInitialize(5, 6));
|
|
}
|
|
|
|
[Fact]
|
|
public void RecenterBeforeInitialization_PreservesUnknownAndResetIsIdempotent()
|
|
{
|
|
var state = new LiveWorldOriginState();
|
|
state.SetPlaceholder(20, 21);
|
|
|
|
state.Recenter(30, 31);
|
|
state.Reset();
|
|
state.Reset();
|
|
|
|
Assert.Equal(30, state.CenterX);
|
|
Assert.Equal(31, state.CenterY);
|
|
Assert.False(state.IsKnown);
|
|
|
|
Assert.True(state.TryInitialize(40, 41));
|
|
state.Recenter(50, 51);
|
|
|
|
Assert.True(state.IsKnown);
|
|
Assert.Equal(50, state.CenterX);
|
|
Assert.Equal(51, state.CenterY);
|
|
}
|
|
}
|