using Xunit; using StellaOps.Policy.Engine.AdvisoryAI; using StellaOps.TestKit; namespace StellaOps.Policy.Engine.Tests; public sealed class AdvisoryAiKnobsServiceTests { [Trait("Category", TestCategories.Unit)] [Fact] public void Get_ReturnsDefaultsWithHash() { var service = new AdvisoryAiKnobsService(TimeProvider.System); var profile = service.Get(); Assert.NotEmpty(profile.Knobs); Assert.False(string.IsNullOrWhiteSpace(profile.ProfileHash)); } [Trait("Category", TestCategories.Unit)] [Fact] public void Set_NormalizesOrdering() { var service = new AdvisoryAiKnobsService(TimeProvider.System); var profile = service.Set(new[] { new AdvisoryAiKnob("Time_Decay_Half_Life_Days", 20m, 1m, 365m, 1m, "decay"), new AdvisoryAiKnob("ai_signal_weight", 1.5m, 0m, 2m, 0.1m, "weight") }); Assert.Equal("ai_signal_weight", profile.Knobs[0].Name); Assert.Equal("time_decay_half_life_days", profile.Knobs[1].Name); } }