public void GetTranspositionsTest() { var permutation = new Permutation(); var input = new[] { new BaseNode<int, object>(0, 0), new BaseNode<int, object>(0, 1), new BaseNode<int, object>(0, 2), new BaseNode<int, object>(0, 3), new BaseNode<int, object>(0, 4), new BaseNode<int, object>(0, 5) }; var transpositions = permutation.GetTranspositions(input, 0).Select(item => string.Join(",", item.Select(node => node.Key))).ToList(); int n = input.Length; int expectedCount = Factorial(n); int i = 0; foreach (var transposition in transpositions) { _testOutputHelper.WriteLine("[Transpositions:{0}], [{1}]", i, transposition); i++; } Assert.Equal(expectedCount, transpositions.Count); }