feat: add block model with IBlock flyweight and registry
This commit is contained in:
52
VoxelEngine.Tests/BlockRegistryTests.cs
Normal file
52
VoxelEngine.Tests/BlockRegistryTests.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using VoxelEngine.World;
|
||||
using VoxelEngine.World.Blocks;
|
||||
using Xunit;
|
||||
|
||||
namespace VoxelEngine.Tests;
|
||||
|
||||
public class BlockRegistryTests
|
||||
{
|
||||
[Fact]
|
||||
public void Get_ReturnsRegisteredBlockById()
|
||||
{
|
||||
var registry = new BlockRegistry();
|
||||
|
||||
Assert.IsType<AirBlock>(registry.Get(0));
|
||||
Assert.IsType<StoneBlock>(registry.Get(1));
|
||||
Assert.IsType<DirtBlock>(registry.Get(2));
|
||||
Assert.IsType<GrassBlock>(registry.Get(3));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Air_IsNotOpaqueOrSolid_OthersAre()
|
||||
{
|
||||
var registry = new BlockRegistry();
|
||||
|
||||
Assert.False(registry.Get(0).IsOpaque);
|
||||
Assert.False(registry.Get(0).IsSolid);
|
||||
Assert.True(registry.Get(1).IsOpaque);
|
||||
Assert.True(registry.Get(1).IsSolid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Grass_HasDifferentTexturesPerFace()
|
||||
{
|
||||
var registry = new BlockRegistry();
|
||||
IBlock grass = registry.Get(3);
|
||||
|
||||
Assert.Equal(0, grass.GetTextureIndex(BlockFace.Top));
|
||||
Assert.Equal(1, grass.GetTextureIndex(BlockFace.Bottom));
|
||||
Assert.Equal(3, grass.GetTextureIndex(BlockFace.North));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NamedAccessors_MatchIds()
|
||||
{
|
||||
var registry = new BlockRegistry();
|
||||
|
||||
Assert.Equal((ushort)0, registry.Air.Id);
|
||||
Assert.Equal((ushort)1, registry.Stone.Id);
|
||||
Assert.Equal((ushort)2, registry.Dirt.Id);
|
||||
Assert.Equal((ushort)3, registry.Grass.Id);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user