54 lines
1.5 KiB
C#
54 lines
1.5 KiB
C#
using OpenTK.Mathematics;
|
|
using VoxelEngine.Core;
|
|
using VoxelEngine.Game;
|
|
using Xunit;
|
|
|
|
namespace VoxelEngine.Tests;
|
|
|
|
public class PlayerTests
|
|
{
|
|
[Fact]
|
|
public void ChunkPosition_Origin_IsZero()
|
|
{
|
|
var p = new Player(new Configuration(), new Vector3(0, 0, 0), aspectRatio: 1f);
|
|
Assert.Equal(new Vector3i(0, 0, 0), p.ChunkPosition);
|
|
}
|
|
|
|
[Fact]
|
|
public void ChunkPosition_PositiveCoords_FloorsDown()
|
|
{
|
|
var p = new Player(new Configuration(), new Vector3(17.5f, 32f, 8f), aspectRatio: 1f);
|
|
Assert.Equal(new Vector3i(1, 2, 0), p.ChunkPosition);
|
|
}
|
|
|
|
[Fact]
|
|
public void ChunkPosition_NegativeCoords_FloorsToNegativeInfinity()
|
|
{
|
|
var p = new Player(new Configuration(), new Vector3(-1f, -16f, -17f), aspectRatio: 1f);
|
|
Assert.Equal(new Vector3i(-1, -1, -2), p.ChunkPosition);
|
|
}
|
|
|
|
[Fact]
|
|
public void ChunkPosition_PositiveExactBoundary_IsNextChunk()
|
|
{
|
|
var p = new Player(new Configuration(), new Vector3(16f, 0f, 0f), aspectRatio: 1f);
|
|
Assert.Equal(new Vector3i(1, 0, 0), p.ChunkPosition);
|
|
}
|
|
|
|
[Fact]
|
|
public void Move_UpdatesPosition()
|
|
{
|
|
var p = new Player(new Configuration(), new Vector3(0, 0, 0), aspectRatio: 1f);
|
|
p.Move(new Vector3(5, 0, 0));
|
|
Assert.Equal(5f, p.Position.X);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_AppliesFovFromConfiguration()
|
|
{
|
|
var cfg = new Configuration { Fov = 75f };
|
|
var p = new Player(cfg, new Vector3(0, 0, 0), aspectRatio: 1.5f);
|
|
Assert.Equal(75f, p.Camera.Fov);
|
|
}
|
|
}
|