using AcDream.UI.Abstractions.Panels.Settings; namespace AcDream.UI.Abstractions.Tests.Panels.Settings; /// /// L.0: default-pin tests. Defaults must /// match the OpenAL engine's hard-coded constructor values so a user /// who has never opened the Audio tab gets identical behaviour to the /// pre-Phase-L world. /// public sealed class AudioSettingsTests { [Fact] public void Default_values_match_engine_constructor_defaults() { // OpenAlAudioEngine ctor: Master=1.0, Music=0.7, Sfx=1.0, // Ambient=0.8 — see src/AcDream.App/Audio/OpenAlAudioEngine.cs. var d = AudioSettings.Default; Assert.Equal(1.0f, d.Master); Assert.Equal(0.7f, d.Music); Assert.Equal(1.0f, d.Sfx); Assert.Equal(0.8f, d.Ambient); } [Fact] public void Equality_is_value_based() { var a = AudioSettings.Default; var b = AudioSettings.Default with { Master = 0.5f }; var c = AudioSettings.Default with { Master = 0.5f }; Assert.NotEqual(a, b); Assert.Equal(b, c); } [Fact] public void With_expression_clones_one_field() { var d = AudioSettings.Default with { Music = 0.25f }; Assert.Equal(0.25f, d.Music); // Other fields untouched. Assert.Equal(AudioSettings.Default.Master, d.Master); Assert.Equal(AudioSettings.Default.Sfx, d.Sfx); } }