AdventOfCode/AdventOfCode.Extensions.Tests/EnumerableExtensionsTest.cs

105 lines
2.6 KiB
C#

using AdventOfCode.Extensions;
namespace AdventOfCode.Extensions.Tests;
public class EnumerableExtensionsTest
{
[Fact]
public void Combinations_12_2_equals_12()
{
int[] data = [1, 2];
var actual = data.Combinations(2).ToArray();
Assert.Equal([[1, 2]], actual);
}
[Fact]
public void Combinations_123_2_equals_12_13_23()
{
int[] data = [1, 2, 3];
var actual = data.Combinations(2).ToArray();
Assert.Equal([[1, 2], [1, 3], [2, 3]], actual);
}
[Fact]
public void Combinations_123_3_equals_123()
{
int[] data = [1, 2, 3];
var actual = data.Combinations(3).ToArray();
Assert.Equal([[1, 2, 3]], 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]
public void Permutations_repeated_12_2_equals_11_12_21_22()
{
int[] data = [1, 2];
var actual = data.PermutationsWithRepeats(2).ToArray();
Assert.Equal([[1, 1], [1, 2], [2, 1], [2, 2]], actual);
}
[Fact]
public void Permutations_12_2_equals_12_21()
{
int[] data = [1, 2];
var actual = data.Permutations(2).ToArray();
Assert.Equal([[1, 2], [2, 1]], actual);
}
[Fact]
public void Permutations_repeated_123_2_equals_11_12_13_21_22_23_31_32_33()
{
int[] data = [1, 2, 3];
var actual = data.PermutationsWithRepeats(2).ToArray();
Assert.Equal([[1, 1], [1, 2], [1, 3], [2, 1], [2, 2], [2, 3], [3, 1], [3, 2], [3, 3]], actual);
}
[Fact]
public void Permutations_123_2_equals_12_13_21_23_31_32()
{
int[] data = [1, 2, 3];
var actual = data.Permutations(2).ToArray();
Assert.Equal([[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]], actual);
}
}