using System; using StellaOps.Policy.Engine.ConsoleSurface; using StellaOps.Policy.Engine.Simulation; using Xunit; namespace StellaOps.Policy.Engine.Tests.ConsoleSurface; public sealed class ConsoleSimulationDiffServiceTests { [Fact] public void Compute_IsDeterministic_AndCarriesMetadata() { var analytics = new SimulationAnalyticsService(); var service = new ConsoleSimulationDiffService(analytics); var request = new ConsoleSimulationDiffRequest( BaselinePolicyVersion: "2025.11.24", CandidatePolicyVersion: "2025.12.02", ArtifactScope: new[] { new ConsoleArtifactScope("sha256:abc", "pkg:npm/foo@1.0.0"), new ConsoleArtifactScope("sha256:def", "pkg:npm/bar@2.0.0") }, Filters: new ConsoleSimulationFilters(new[] { "high", "critical" }, new[] { "RULE-1234" }), Budget: new ConsoleSimulationBudget(10, 5), EvaluationTimestamp: new DateTimeOffset(2025, 12, 2, 0, 0, 0, TimeSpan.Zero)); var first = service.Compute(request); var second = service.Compute(request); Assert.Equal(first, second); // deterministic Assert.Equal("console-policy-23-001", first.SchemaVersion); Assert.True(first.Summary.After.Total > 0); Assert.True(first.Summary.Before.Total > 0); Assert.NotEmpty(first.RuleImpact); Assert.True(first.Samples.Findings.Length <= 10); Assert.Equal(request.EvaluationTimestamp, first.Provenance.EvaluationTimestamp); } }