public void TestGeneratePermutationFromKey(int numObjects) { var factorial = new FactorialCalculator().Factorial(numObjects); var permutationGenerator = new PermutationGenerator(); var permutationSet = new HashSet <string>(); for (int i = 0; i < factorial; i++) { var permutation = permutationGenerator.GeneratePermutationFromKey(i, numObjects).GetPermutation(); var permutationString = permutation.Aggregate("", (agg, digit) => $"{agg}{digit}"); Assert.False(permutationSet.Contains(permutationString)); permutationSet.Add(permutationString); } Assert.AreEqual(factorial, permutationSet.Count); }