Refactor Permutations in EnumerableExtensions, add PermutationsWithRepeats method, and update tests for improved validation and clarity
This commit is contained in:
@@ -9,9 +9,8 @@ public class EnumerableExtensionsTest
|
||||
int[] data = [1, 2];
|
||||
|
||||
var actual = data.Combinations(2).ToArray();
|
||||
|
||||
Assert.Contains([1, 2], actual);
|
||||
Assert.Single(actual);
|
||||
|
||||
Assert.Equal([[1, 2]], actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -21,10 +20,7 @@ public class EnumerableExtensionsTest
|
||||
|
||||
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);
|
||||
Assert.Equal([[1, 2], [1, 3], [2, 3]], actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -33,9 +29,8 @@ public class EnumerableExtensionsTest
|
||||
int[] data = [1, 2, 3];
|
||||
|
||||
var actual = data.Combinations(3).ToArray();
|
||||
|
||||
Assert.Contains([1, 2, 3], actual);
|
||||
Assert.Single(actual);
|
||||
|
||||
Assert.Equal([[1, 2, 3]], actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -69,33 +64,42 @@ public class EnumerableExtensionsTest
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Permutations_12_2_equals_11_12_21_22()
|
||||
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.Contains([1, 1], actual);
|
||||
Assert.Contains([1, 2], actual);
|
||||
Assert.Contains([2, 1], actual);
|
||||
Assert.Contains([2, 2], actual);
|
||||
Assert.Equal(4, actual.Length);
|
||||
Assert.Equal([[1, 2], [2, 1]], actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Permutations_123_2_equals_11_12_13_21_22_23_31_32_33()
|
||||
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.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);
|
||||
Assert.Equal([[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]], actual);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user