89 lines
3.0 KiB
C#
89 lines
3.0 KiB
C#
using VoxelEngine.Core;
|
|
using Xunit;
|
|
|
|
namespace VoxelEngine.Tests;
|
|
|
|
public class ConfigurationTests
|
|
{
|
|
[Fact]
|
|
public void Defaults_AreSane()
|
|
{
|
|
var c = new Configuration();
|
|
Assert.True(c.RenderDistanceHorizontal >= 1);
|
|
Assert.True(c.RenderDistanceVertical >= 1);
|
|
Assert.True(c.SpawnReadyRadiusHorizontal >= 0);
|
|
Assert.True(c.MaxGenerateJobsInFlight >= 1);
|
|
Assert.True(c.MaxMeshUploadsPerFrame >= 1);
|
|
Assert.True(c.WorkerThreadCount >= 1);
|
|
Assert.True(c.MoveSpeed > 0f);
|
|
Assert.True(c.MouseSensitivity > 0f);
|
|
Assert.InRange(c.Fov, 1f, 179f);
|
|
Assert.True(c.WindowWidth > 0);
|
|
Assert.True(c.WindowHeight > 0);
|
|
Assert.Null(c.Seed);
|
|
}
|
|
|
|
[Fact]
|
|
public void Properties_AreMutable()
|
|
{
|
|
var c = new Configuration { RenderDistanceHorizontal = 4, Seed = 1337 };
|
|
Assert.Equal(4, c.RenderDistanceHorizontal);
|
|
Assert.Equal(1337, c.Seed);
|
|
|
|
var c2 = new Configuration
|
|
{
|
|
RenderDistanceVertical = 2,
|
|
SpawnReadyRadiusHorizontal = 0,
|
|
MaxGenerateJobsInFlight = 2,
|
|
MaxMeshUploadsPerFrame = 1,
|
|
WorkerThreadCount = 2,
|
|
MoveSpeed = 4f,
|
|
MouseSensitivity = 0.5f,
|
|
Fov = 90f,
|
|
WindowWidth = 800,
|
|
WindowHeight = 600,
|
|
};
|
|
Assert.Equal(2, c2.RenderDistanceVertical);
|
|
Assert.Equal(0, c2.SpawnReadyRadiusHorizontal);
|
|
Assert.Equal(2, c2.MaxGenerateJobsInFlight);
|
|
Assert.Equal(1, c2.MaxMeshUploadsPerFrame);
|
|
Assert.Equal(2, c2.WorkerThreadCount);
|
|
Assert.Equal(4f, c2.MoveSpeed);
|
|
Assert.Equal(0.5f, c2.MouseSensitivity);
|
|
Assert.Equal(90f, c2.Fov);
|
|
Assert.Equal(800, c2.WindowWidth);
|
|
Assert.Equal(600, c2.WindowHeight);
|
|
}
|
|
|
|
[Fact]
|
|
public void Defaults_HaveCaveTuningConstants()
|
|
{
|
|
var c = new Configuration();
|
|
|
|
// Algorithm
|
|
Assert.Equal(0.03f, c.CaveNoiseFrequency);
|
|
Assert.Equal(-0.3f, c.CaveNoiseThreshold);
|
|
Assert.Equal(64, c.WormCellSize);
|
|
Assert.Equal(300, c.WormSpawnProbabilityPermille);
|
|
Assert.Equal(80, c.WormMaxLength);
|
|
Assert.Equal(1.5f, c.WormMinRadius);
|
|
Assert.Equal(3.5f, c.WormMaxRadius);
|
|
|
|
// Lighting (fog)
|
|
Assert.Equal(264f, c.CaveDarkStartY); // SeaLevel (256) + 8
|
|
Assert.Equal(224f, c.CaveDarkEndY); // SeaLevel (256) - 32
|
|
Assert.Equal(0.15f, c.CaveMinBrightness);
|
|
}
|
|
|
|
[Fact]
|
|
public void Defaults_HaveVisibilityAndCaveCeilingConstants()
|
|
{
|
|
var c = new Configuration();
|
|
|
|
Assert.Equal(1, c.SurfaceShellSkirtBelow);
|
|
Assert.Equal(0.7f, c.FogStartFraction);
|
|
Assert.Equal(new OpenTK.Mathematics.Vector3(0.45f, 0.65f, 0.95f), c.SkyColor);
|
|
Assert.Equal(256, c.MinCaveY);
|
|
}
|
|
}
|