using FluentAssertions; using StellaOps.TestKit; using StellaOps.Testing.Determinism; using Xunit; namespace StellaOps.Testing.Determinism.Tests; public sealed partial class DeterminismManifestTests { [Trait("Category", TestCategories.Unit)] [Fact] public void ToCanonicalBytes_WithValidManifest_ProducesDeterministicOutput() { var manifest = CreateSampleManifest(); var bytes1 = DeterminismManifestWriter.ToCanonicalBytes(manifest); var bytes2 = DeterminismManifestWriter.ToCanonicalBytes(manifest); bytes1.Should().Equal(bytes2, "Same manifest should produce identical canonical bytes"); } [Trait("Category", TestCategories.Unit)] [Fact] public void ToCanonicalString_WithValidManifest_ProducesDeterministicString() { var manifest = CreateSampleManifest(); var json1 = DeterminismManifestWriter.ToCanonicalString(manifest); var json2 = DeterminismManifestWriter.ToCanonicalString(manifest); json1.Should().Be(json2, "Same manifest should produce identical canonical JSON string"); json1.Should().NotContain("\n", "Canonical JSON should have no newlines"); json1.Should().NotContain(" ", "Canonical JSON should have no indentation"); } }