145 lines
3.5 KiB
C#
145 lines
3.5 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);
|
|
}
|
|
|
|
[Fact]
|
|
public void SlidingWindowOver_none_1_equals_none()
|
|
{
|
|
int[] data = [];
|
|
|
|
var actual = data.SlidingWindow(1).ToArray();
|
|
|
|
Assert.Equal([], actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void SlidingWindowOver_1_1_equals_1()
|
|
{
|
|
int[] data = [1];
|
|
|
|
var actual = data.SlidingWindow(1).ToArray();
|
|
|
|
Assert.Equal([[1]], actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void SlidingWindowOver_1234_2_equals_1_12_23_34()
|
|
{
|
|
int[] data = [1, 2, 3, 4];
|
|
|
|
var actual = data.SlidingWindow(2).ToArray();
|
|
|
|
Assert.Equal([[1], [1, 2], [2, 3], [3, 4]], actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void SlidingWindowOver_1234_3_equals_1_12_123_234()
|
|
{
|
|
int[] data = [1, 2, 3, 4];
|
|
|
|
var actual = data.SlidingWindow(3).ToArray();
|
|
|
|
Assert.Equal([[1], [1, 2], [1, 2, 3], [2, 3, 4]], actual);
|
|
}
|
|
} |