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(72f, c.CaveDarkStartY); // SeaLevel (64) + 8 Assert.Equal(32f, c.CaveDarkEndY); // SeaLevel (64) - 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(127, c.MinCaveY); } }