using AcDream.Core.Physics; using Xunit; namespace AcDream.Core.Tests.Physics; public class PhysicsEngineIsLandblockLoadedTests { private static TerrainSurface MakeFlatTerrain() { var heights = new byte[81]; Array.Fill(heights, (byte)50); var heightTable = new float[256]; for (int i = 0; i < 256; i++) heightTable[i] = i * 1f; return new TerrainSurface(heights, heightTable); } [Fact] public void IsLandblockLoaded_AbsentId_ReturnsFalse() { var engine = new PhysicsEngine(); Assert.False(engine.IsLandblockLoaded(0xA9B4FFFFu)); } [Fact] public void IsLandblockLoaded_AddedId_ReturnsTrue() { var engine = new PhysicsEngine(); engine.AddLandblock(0xA9B4FFFFu, MakeFlatTerrain(), Array.Empty(), Array.Empty(), worldOffsetX: 0f, worldOffsetY: 0f); Assert.True(engine.IsLandblockLoaded(0xA9B4FFFFu)); } [Fact] public void IsLandblockLoaded_AnotherIdAbsent_ReturnsFalse() { var engine = new PhysicsEngine(); engine.AddLandblock(0xA9B4FFFFu, MakeFlatTerrain(), Array.Empty(), Array.Empty(), worldOffsetX: 0f, worldOffsetY: 0f); Assert.False(engine.IsLandblockLoaded(0xDEADBEEFu)); } [Fact] public void IsLandblockLoaded_AfterRemove_ReturnsFalse() { var engine = new PhysicsEngine(); engine.AddLandblock(0xA9B4FFFFu, MakeFlatTerrain(), Array.Empty(), Array.Empty(), worldOffsetX: 0f, worldOffsetY: 0f); engine.RemoveLandblock(0xA9B4FFFFu); Assert.False(engine.IsLandblockLoaded(0xA9B4FFFFu)); } }