Files
git.stella-ops.org/src/__Libraries/__Tests/StellaOps.HybridLogicalClock.Tests/HlcTimestampTests.Compare.Advanced.cs

58 lines
1.5 KiB
C#

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);
}
}