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); } }