using Xunit; namespace StellaOps.HybridLogicalClock.Tests; public partial class HlcTimestampTests { [Fact] public void CompareTo_SamePhysicalTimeAndCounter_SortsLexicographicallyByNodeId() { var nodeA = new HlcTimestamp { PhysicalTime = BasePhysicalTime, NodeId = "node-a", LogicalCounter = 0 }; var nodeB = new HlcTimestamp { PhysicalTime = BasePhysicalTime, NodeId = "node-b", LogicalCounter = 0 }; Assert.True(nodeA.CompareTo(nodeB) < 0); Assert.True(nodeB.CompareTo(nodeA) > 0); } [Fact] public void CompareTo_IdenticalTimestamps_ReturnsZero() { var ts1 = new HlcTimestamp { PhysicalTime = BasePhysicalTime, NodeId = TestNodeId, LogicalCounter = 42 }; var ts2 = new HlcTimestamp { PhysicalTime = BasePhysicalTime, NodeId = TestNodeId, LogicalCounter = 42 }; Assert.Equal(0, ts1.CompareTo(ts2)); } [Fact] public void CompareTo_TotalOrdering_IsTransitive() { var a = new HlcTimestamp { PhysicalTime = 100, NodeId = "node", LogicalCounter = 0 }; var b = new HlcTimestamp { PhysicalTime = 100, NodeId = "node", LogicalCounter = 1 }; var c = new HlcTimestamp { PhysicalTime = 100, NodeId = "node", LogicalCounter = 2 }; Assert.True(a < b); Assert.True(b < c); Assert.True(a < c); } }