using AcDream.UI.Abstractions.Panels.Settings; namespace AcDream.UI.Abstractions.Tests.Panels.Settings; /// /// L.0: is the immutable record of /// display-tab preferences. Defaults are pinned here so a regression /// (e.g. someone changing the default FOV out from under users) /// surfaces immediately. /// public sealed class DisplaySettingsTests { [Fact] public void Default_values_match_brainstorm_agreement() { var d = DisplaySettings.Default; Assert.Equal("1920x1080", d.Resolution); Assert.False(d.Fullscreen); Assert.True(d.VSync); Assert.Equal(75f, d.FieldOfView); Assert.Equal(1.0f, d.Gamma); Assert.False(d.ShowFps); } [Fact] public void AvailableResolutions_includes_common_16_9_options() { var list = DisplaySettings.AvailableResolutions; Assert.Contains("1280x720", list); Assert.Contains("1920x1080", list); Assert.Contains("2560x1440", list); Assert.Contains("3840x2160", list); // List should be ascending so the dropdown reads naturally. for (int i = 1; i < list.Count; i++) { int prevW = ParseWidth(list[i - 1]); int curW = ParseWidth(list[i]); Assert.True(curW >= prevW, $"Resolutions not sorted: {list[i - 1]} >= {list[i]}"); } } [Fact] public void Equality_is_value_based() { var a = DisplaySettings.Default; var b = DisplaySettings.Default with { ShowFps = true }; var c = DisplaySettings.Default with { ShowFps = true }; Assert.NotEqual(a, b); Assert.Equal(b, c); } [Fact] public void With_expression_clones_one_field() { var d = DisplaySettings.Default with { FieldOfView = 90f }; Assert.Equal(90f, d.FieldOfView); // Other fields untouched. Assert.Equal("1920x1080", d.Resolution); Assert.True(d.VSync); } private static int ParseWidth(string res) { int x = res.IndexOf('x'); return int.Parse(res.AsSpan(0, x)); } }