private static void Validate(List <List <int> > expected, List <int> set) { var result = Question_8_4.Powerset(set).ToList(); Assert.AreEqual(expected.Count, result.Count); foreach (var subset in expected) { result.Remove(result.Find(s => s.SequenceEqual(subset))); } Assert.AreEqual(0, result.Count); }
public void FindAllSubsetsTest(int testCase) { // Arrange List <int> testSet = GenerateTestSet(testCase); List <int> testSetCombinatorics = GenerateTestSet(testCase); List <HashSet <int> > expectedSubsets = GenerateExpectedSubsets(testCase); expectedSubsets.Sort(_hashSetComparer); // Act List <HashSet <int> > resultSubsets = Question_8_4.FindAllSubsets(testSet); List <HashSet <int> > resultSubsetsCombinatorics = Question_8_4.FindAllSubsetsCombinatorics(testSetCombinatorics); resultSubsets.Sort(_hashSetComparer); resultSubsetsCombinatorics.Sort(_hashSetComparer); // Assert Assert.AreEqual(expectedSubsets.Count, resultSubsets.Count, "Result count check failed - Recursion."); Assert.AreEqual(expectedSubsets.Count, resultSubsetsCombinatorics.Count, "Result count check failed - Combinatorics."); Assert.IsTrue(expectedSubsets.SequenceEqual(resultSubsets, _hashSetComparer), "Result subsets check failed - Recursion."); Assert.IsTrue(expectedSubsets.SequenceEqual(resultSubsetsCombinatorics, _hashSetComparer), "Result subsets check failed - Combinatorics."); }
public void Question_8_4_InvalidCases() { var set = new List <int>(Enumerable.Range(0, 33)); TestHelpers.AssertExceptionThrown(() => Question_8_4.Powerset(set).ToList(), typeof(ArgumentOutOfRangeException)); }