131 lines
3.6 KiB
C#
131 lines
3.6 KiB
C#
using StackExchange.Redis;
|
|
using Orleans.Streams;
|
|
using Moq;
|
|
using Universley.OrleansContrib.StreamsProvider.Redis;
|
|
|
|
namespace Provider.Tests
|
|
{
|
|
public class RedisStreamSequenceTokenTests
|
|
{
|
|
[Fact]
|
|
public void Constructor_ShouldInitializeProperties_FromRedisValue()
|
|
{
|
|
// Arrange
|
|
var redisValue = new RedisValue("123-456");
|
|
|
|
// Act
|
|
var token = new RedisStreamSequenceToken(redisValue);
|
|
|
|
// Assert
|
|
Assert.Equal(123, token.SequenceNumber);
|
|
Assert.Equal(456, token.EventIndex);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_ShouldInitializeProperties_FromParameters()
|
|
{
|
|
// Arrange
|
|
long sequenceNumber = 123;
|
|
int eventIndex = 456;
|
|
|
|
// Act
|
|
var token = new RedisStreamSequenceToken(sequenceNumber, eventIndex);
|
|
|
|
// Assert
|
|
Assert.Equal(sequenceNumber, token.SequenceNumber);
|
|
Assert.Equal(eventIndex, token.EventIndex);
|
|
}
|
|
|
|
[Fact]
|
|
public void CompareTo_ShouldReturnZero_ForEqualTokens()
|
|
{
|
|
// Arrange
|
|
var token1 = new RedisStreamSequenceToken(123, 456);
|
|
var token2 = new RedisStreamSequenceToken(123, 456);
|
|
|
|
// Act
|
|
var result = token1.CompareTo(token2);
|
|
|
|
// Assert
|
|
Assert.Equal(0, result);
|
|
}
|
|
|
|
[Fact]
|
|
public void CompareTo_ShouldReturnPositive_ForGreaterToken()
|
|
{
|
|
// Arrange
|
|
var token1 = new RedisStreamSequenceToken(123, 456);
|
|
var token2 = new RedisStreamSequenceToken(123, 455);
|
|
|
|
// Act
|
|
var result = token1.CompareTo(token2);
|
|
|
|
// Assert
|
|
Assert.True(result > 0);
|
|
}
|
|
|
|
[Fact]
|
|
public void CompareTo_ShouldReturnNegative_ForLesserToken()
|
|
{
|
|
// Arrange
|
|
var token1 = new RedisStreamSequenceToken(123, 455);
|
|
var token2 = new RedisStreamSequenceToken(123, 456);
|
|
|
|
// Act
|
|
var result = token1.CompareTo(token2);
|
|
|
|
// Assert
|
|
Assert.True(result < 0);
|
|
}
|
|
|
|
[Fact]
|
|
public void Equals_ShouldReturnTrue_ForEqualTokens()
|
|
{
|
|
// Arrange
|
|
var token1 = new RedisStreamSequenceToken(123, 456);
|
|
var token2 = new RedisStreamSequenceToken(123, 456);
|
|
|
|
// Act
|
|
var result = token1.Equals(token2);
|
|
|
|
// Assert
|
|
Assert.True(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Equals_ShouldReturnFalse_ForDifferentTokens()
|
|
{
|
|
// Arrange
|
|
var token1 = new RedisStreamSequenceToken(123, 456);
|
|
var token2 = new RedisStreamSequenceToken(123, 457);
|
|
|
|
// Act
|
|
var result = token1.Equals(token2);
|
|
|
|
// Assert
|
|
Assert.False(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void CompareTo_ShouldThrowArgumentNullException_ForNullToken()
|
|
{
|
|
// Arrange
|
|
var token = new RedisStreamSequenceToken(123, 456);
|
|
|
|
// Act & Assert
|
|
Assert.Throws<ArgumentNullException>(() => token.CompareTo(null));
|
|
}
|
|
|
|
[Fact]
|
|
public void CompareTo_ShouldThrowArgumentException_ForInvalidTokenType()
|
|
{
|
|
// Arrange
|
|
var token = new RedisStreamSequenceToken(123, 456);
|
|
var invalidToken = new Mock<StreamSequenceToken>().Object;
|
|
|
|
// Act & Assert
|
|
Assert.Throws<ArgumentException>(() => token.CompareTo(invalidToken));
|
|
}
|
|
}
|
|
}
|