def testTopologicalSortSimpleExceptions(self): test_cases = ( ([None, None, -3], 'Negative value in ideps: ideps[2] = -3'), ([None, None, None, None, 7], 'Value in ideps exceeds its length: ideps[4] = 7 >= 5'), ([None, None, None, 3], 'Trivial cyclic dependency in ideps: ideps[3] = 3'), ([1, 0], 'Cyclic dependency in ideps:' ' following dependencies from 0 leads back to 0.'), ) for ideps, expected_message in test_cases: with self.assertRaises(ValueError) as ctx: gen.TopologicalSortSimple(ideps) self.assertEqual(str(ctx.exception), expected_message)
def testTopologicalSortSimpleTabulatedTestCases(self): test_cases = ( ([], []), ([None], [0]), ([None, None], [0, 1]), ([None, 0], [0, 1]), ([1, None], [1, 0]), ([1, 2, None], [2, 1, 0]), ([2, None, 1], [1, 2, 0]), ([1, 3, None, None], [3, 1, 0, 2]), ([2, 2, None], [2, 0, 1]), ([1, 3, 3, None], [3, 1, 0, 2]), ([3, 2, None, 1], [2, 1, 3, 0]), ) for ideps, expected_permutation in test_cases: permutation = gen.TopologicalSortSimple(ideps) self.assertEqual(permutation, expected_permutation) self.ValidateTopologicalSortPermutation(ideps, permutation)
def testTopologicalSortSimpleRandomTestCases(self): for n in range(2, 10): for unused_trial_counter in range(100): ideps = BuildRandomIdepsForTopologicalSortSimple(n) permutation = gen.TopologicalSortSimple(ideps) self.ValidateTopologicalSortPermutation(ideps, permutation)