35 lines
880 B
C#
35 lines
880 B
C#
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<JsonElement>("{\"b\":true,\"a\":1.25}");
|
|
|
|
var canonical = CanonicalJson.Serialize(payload);
|
|
|
|
canonical.Should().Be("{\"a\":1.25,\"b\":true}");
|
|
}
|
|
}
|