Add CombinationsWithRepeats method to EnumerableExtensions with corresponding tests

This commit is contained in:
Sebastian Lindemeier
2025-12-15 13:45:21 +01:00
parent 149977d02f
commit 0665713725
2 changed files with 67 additions and 5 deletions
@@ -11,7 +11,7 @@ public class EnumerableExtensionsTest
var actual = data.Combinations(2).ToArray();
Assert.Contains([1, 2], actual);
Assert.Equal(1, actual.Length);
Assert.Single(actual);
}
[Fact]
@@ -35,7 +35,37 @@ public class EnumerableExtensionsTest
var actual = data.Combinations(3).ToArray();
Assert.Contains([1, 2, 3], actual);
Assert.Equal(1, actual.Length);
Assert.Single(actual);
}
[Fact]
public void Combinations_repeated_12_2_equals_11_12_22()
{
int[] data = [1, 2];
var actual = data.CombinationsWithRepeats(2).ToArray();
Assert.Equal([[1, 1], [1, 2], [2, 2]], actual);
}
[Fact]
public void Combinations_repeated_123_2_equals_11_12_13_22_23_33()
{
int[] data = [1, 2, 3];
var actual = data.CombinationsWithRepeats(2).ToArray();
Assert.Equal([[1, 1], [1, 2], [1, 3], [2, 2], [2, 3], [3, 3]], actual);
}
[Fact]
public void Combinations_repeated_123_3_equals_many()
{
int[] data = [1, 2, 3];
var actual = data.CombinationsWithRepeats(3).ToArray();
Assert.Equal([[1, 1, 1], [1, 1, 2], [1, 1, 3], [1, 2, 2], [1, 2, 3], [1, 3, 3], [2, 2, 2], [2, 2, 3], [2, 3, 3], [3, 3, 3]], actual);
}
[Fact]