refactor(world): establish live entity composition seams
This commit is contained in:
parent
db5a11707d
commit
d68c83d1a5
5 changed files with 357 additions and 21 deletions
62
tests/AcDream.App.Tests/World/LiveWorldOriginStateTests.cs
Normal file
62
tests/AcDream.App.Tests/World/LiveWorldOriginStateTests.cs
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue