using AcDream.UI.Abstractions.Panels.Settings; namespace AcDream.UI.Abstractions.Tests.Panels.Settings; /// /// L.0: default-pin tests. /// public sealed class ChatSettingsTests { [Fact] public void Default_values_match_AceCharacterOptions2Default_stance() { // N4 (CH3 Opus review): ACE's real CharacterOptions2.Default // (0x00948700) turns General/Trade/LFG on but leaves Roleplay // (0x800) and Society (0x80000) off — this is no longer an // invented "all channels on" stance. var d = ChatSettings.Default; Assert.True(d.HearGeneralChat); Assert.True(d.HearTradeChat); Assert.True(d.HearLFGChat); Assert.False(d.HearRoleplayChat); Assert.False(d.HearSocietyChat); Assert.False(d.AppearOffline); Assert.True(d.ShowTimestamps); Assert.True(d.FilterProfanity); Assert.Equal(12f, d.FontSize); // Campaign CH slice CH6c: retail's base ChatInterface constructor // (0x004F4550) sets DefaultOpacity=0.5/ActiveOpacity=1.0 — the value // every gmFloatyChatUI (the four floating windows) keeps unmodified. // CH6c review fix (2026-08-10): shipping the base pair as acdream's // ONE shared global default faded every registered window (radar, // vitals, toolbar, main chat, ...) to 50% opacity out of the box, // including several that can never take keyboard focus and so were // permanently half-transparent. acdream now ships gmMainChatUI's own // 1.0/1.0 override (0x004CD0F0) as the shared global default instead // — retail-identical opaque presentation for the 11 non-chat windows // and the main chat window; only the four floating chat windows // diverge from retail's 0.5-while-idle fade, and the Settings → Chat // transparency slider remains fully user-settable (register row // AP-190). Assert.Equal(1.0f, d.DefaultOpacity); Assert.Equal(1.0f, d.ActiveOpacity); } [Fact] public void Equality_is_value_based() { var a = ChatSettings.Default; var b = ChatSettings.Default with { HearTradeChat = false }; var c = ChatSettings.Default with { HearTradeChat = false }; Assert.NotEqual(a, b); Assert.Equal(b, c); } [Fact] public void With_expression_clones_one_field() { var d = ChatSettings.Default with { FontSize = 16f }; Assert.Equal(16f, d.FontSize); Assert.True(d.HearGeneralChat); Assert.True(d.ShowTimestamps); } }