37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using ItWorx.KnowledgeHub.Domain.Knowledge;
|
|
|
|
namespace ItWorx.KnowledgeHub.Domain.Tests;
|
|
|
|
public sealed class SortKeyTests
|
|
{
|
|
[Fact]
|
|
public void Next_produces_a_key_that_sorts_after_the_previous_one()
|
|
{
|
|
var first = SortKey.First();
|
|
var second = SortKey.Next(first);
|
|
var third = SortKey.Next(second);
|
|
|
|
Assert.True(string.CompareOrdinal(first.Value, second.Value) < 0);
|
|
Assert.True(string.CompareOrdinal(second.Value, third.Value) < 0);
|
|
}
|
|
|
|
[Fact]
|
|
public void Between_produces_a_key_strictly_between_two_others()
|
|
{
|
|
var lower = SortKey.First();
|
|
var upper = SortKey.Next(lower);
|
|
var middle = SortKey.Between(lower, upper);
|
|
|
|
Assert.True(string.CompareOrdinal(lower.Value, middle.Value) < 0);
|
|
Assert.True(string.CompareOrdinal(middle.Value, upper.Value) < 0);
|
|
}
|
|
|
|
[Fact]
|
|
public void All_keys_share_the_same_fixed_width_for_stable_ordinal_comparison()
|
|
{
|
|
var keys = new[] { SortKey.First(), SortKey.Next(SortKey.First()) };
|
|
|
|
Assert.All(keys, key => Assert.Equal(keys[0].Value.Length, key.Value.Length));
|
|
}
|
|
}
|