feat(core): add WorldView with 3x3 neighbor landblock computation
This commit is contained in:
parent
8f5b498be6
commit
5d35f4fe46
2 changed files with 101 additions and 0 deletions
46
tests/AcDream.Core.Tests/World/WorldViewTests.cs
Normal file
46
tests/AcDream.Core.Tests/World/WorldViewTests.cs
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
// tests/AcDream.Core.Tests/World/WorldViewTests.cs
|
||||
using AcDream.Core.World;
|
||||
|
||||
namespace AcDream.Core.Tests.World;
|
||||
|
||||
public class WorldViewTests
|
||||
{
|
||||
[Fact]
|
||||
public void NeighborIds_Center_Returns9Ids()
|
||||
{
|
||||
var ids = WorldView.NeighborLandblockIds(0xA9B4FFFFu).ToList();
|
||||
|
||||
Assert.Equal(9, ids.Count);
|
||||
Assert.Contains(0xA9B4FFFFu, ids); // center
|
||||
Assert.Contains(0xA8B3FFFFu, ids); // NW
|
||||
Assert.Contains(0xAAB5FFFFu, ids); // SE
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NeighborIds_LowerEdge_ClampsUnderflow()
|
||||
{
|
||||
// Landblock 0x0000FFFF — no west or south neighbors.
|
||||
var ids = WorldView.NeighborLandblockIds(0x0000FFFFu).ToList();
|
||||
|
||||
// 4 neighbors should exist: center + E + N + NE
|
||||
Assert.Equal(4, ids.Count);
|
||||
Assert.Contains(0x0000FFFFu, ids);
|
||||
Assert.Contains(0x0100FFFFu, ids);
|
||||
Assert.Contains(0x0001FFFFu, ids);
|
||||
Assert.Contains(0x0101FFFFu, ids);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NeighborIds_UpperEdge_ClampsOverflow()
|
||||
{
|
||||
// Landblock 0xFFFFFFFF — no east or north neighbors.
|
||||
var ids = WorldView.NeighborLandblockIds(0xFFFFFFFFu).ToList();
|
||||
|
||||
// 4 neighbors: center + W + S + SW
|
||||
Assert.Equal(4, ids.Count);
|
||||
Assert.Contains(0xFFFFFFFFu, ids);
|
||||
Assert.Contains(0xFEFFFFFFu, ids);
|
||||
Assert.Contains(0xFFFEFFFFu, ids);
|
||||
Assert.Contains(0xFEFEFFFFu, ids);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue