AdventOfCode/AdventOfCode.Extensions.Tests/EnumerableExtensionsTest.cs

71 lines
1.8 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.Contains([1, 2], actual);
Assert.Equal(1, actual.Length);
}
[Fact]
public void Combinations_123_2_equals_12_13_23()
{
int[] data = [1, 2, 3];
var actual = data.Combinations(2).ToArray();
Assert.Contains([1, 2], actual);
Assert.Contains([1, 3], actual);
Assert.Contains([2, 3], actual);
Assert.Equal(3, actual.Length);
}
[Fact]
public void Combinations_123_3_equals_123()
{
int[] data = [1, 2, 3];
var actual = data.Combinations(3).ToArray();
Assert.Contains([1, 2, 3], actual);
Assert.Equal(1, actual.Length);
}
[Fact]
public void Permutations_12_2_equals_11_12_21_22()
{
int[] data = [1, 2];
var actual = data.Permutations(2).ToArray();
Assert.Contains([1, 1], actual);
Assert.Contains([1, 2], actual);
Assert.Contains([2, 1], actual);
Assert.Contains([2, 2], actual);
Assert.Equal(4, actual.Length);
}
[Fact]
public void Permutations_123_2_equals_11_12_13_21_22_23_31_32_33()
{
int[] data = [1, 2, 3];
var actual = data.Permutations(2).ToArray();
Assert.Contains([1, 1], actual);
Assert.Contains([1, 2], actual);
Assert.Contains([2, 1], actual);
Assert.Contains([2, 2], actual);
Assert.Contains([3, 1], actual);
Assert.Contains([3, 2], actual);
Assert.Contains([3, 3], actual);
Assert.Equal(9, actual.Length);
}
}