using Godosa.Core.Diagnostics; using Xunit; namespace Godosa.Core.Tests.Diagnostics; public class DebugFlagsTests { [Fact] public void Categories_AreCommaSeparated_Trimmed_CaseInsensitive() { var flags = new DebugFlags(" input , AUDIO"); Assert.True(flags.On("input")); Assert.True(flags.On("audio")); Assert.False(flags.On("frames")); } [Fact] public void All_TurnsOnEveryCategory_ButNotExactSwitches() { var flags = new DebugFlags("all"); Assert.True(flags.On("script")); Assert.False(flags.Exact("nohud")); } [Fact] public void Exact_MatchesOnlyTheNamedSwitch() { var flags = new DebugFlags("frames,NoHud"); Assert.True(flags.Exact("nohud")); Assert.False(flags.Exact("input")); } [Fact] public void MissingOrEmpty_TurnsNothingOn() { Assert.False(new DebugFlags(null).On("input")); Assert.False(new DebugFlags(" , ,").On("input")); } [Fact] public void EngineDebug_Apply_SetsEachLibCategory() { try { EngineDebug.Apply(new DebugFlags("script")); Assert.True(EngineDebug.Script); Assert.False(EngineDebug.Input); Assert.False(EngineDebug.Audio); EngineDebug.Apply(new DebugFlags("input,audio")); Assert.True(EngineDebug.Input); Assert.True(EngineDebug.Audio); Assert.False(EngineDebug.Script); } finally { EngineDebug.Apply(new DebugFlags(null)); } } }