Files
VoxelEngine/VoxelEngine.Tests/BlockRegistryTests.cs

53 lines
1.4 KiB
C#

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);
}
}