Files
needLe/dotnet/MaigoLabs.NeedLe.Tests/Indexer/Han/UnionFindSetTests.cs
T
2026-01-01 03:40:41 +08:00

60 lines
1.4 KiB
C#

using MaigoLabs.NeedLe.Indexer.Han;
namespace MaigoLabs.NeedLe.Tests.Indexer.Han;
public sealed class UnionFindSet_FindsSelfAsRootInitiallyTest : NeedleTestBase
{
[Fact]
public void Execute()
{
var ufs = new UnionFindSet();
Assert.Equal(1, ufs.Find(1));
Assert.Equal(2, ufs.Find(2));
}
}
public sealed class UnionFindSet_UnionsTwoElementsTest : NeedleTestBase
{
[Fact]
public void Execute()
{
var ufs = new UnionFindSet();
ufs.Union(1, 2);
Assert.Equal(ufs.Find(1), ufs.Find(2));
}
}
public sealed class UnionFindSet_UnionsMultipleElementsTransitivelyTest : NeedleTestBase
{
[Fact]
public void Execute()
{
var ufs = new UnionFindSet();
ufs.Union(1, 2);
ufs.Union(2, 3);
ufs.Union(4, 5);
Assert.Equal(ufs.Find(1), ufs.Find(3));
Assert.NotEqual(ufs.Find(1), ufs.Find(4));
ufs.Union(3, 4);
Assert.Equal(ufs.Find(1), ufs.Find(5));
}
}
public sealed class UnionFindSet_IteratesAllKeysTest : NeedleTestBase
{
[Fact]
public void Execute()
{
var ufs = new UnionFindSet();
ufs.Union(1, 2);
ufs.Union(3, 4);
var keys = ufs.Keys.ToList();
Assert.Contains(1, keys);
Assert.Contains(2, keys);
Assert.Contains(3, keys);
Assert.Contains(4, keys);
}
}