using System.Text.Json; using FluentAssertions; using StellaOps.Replay.Core; using Xunit; namespace StellaOps.Replay.Core.Tests; public sealed class CanonicalJsonTests { [Fact] public void CanonicalJson_OrdersPropertiesLexicographically() { var payload = new { zeta = 1, alpha = new { z = 9, m = 7 }, list = new[] { new { y = 2, x = 1 } } }; var canonical = CanonicalJson.Serialize(payload); canonical.Should().Be("{\"alpha\":{\"m\":7,\"z\":9},\"list\":[{\"x\":1,\"y\":2}],\"zeta\":1}"); } [Fact] public void CanonicalJson_PreservesNumbersAndBooleans() { var payload = JsonSerializer.Deserialize("{\"b\":true,\"a\":1.25}"); var canonical = CanonicalJson.Serialize(payload); canonical.Should().Be("{\"a\":1.25,\"b\":true}"); } }