def testShortCycle(self): a = Action(lambda: 0, "a") b = Action(lambda: 0, "b") a.addDependency(b) with self.assertRaises(Exception) as cm: b.addDependency(a) self.assertEqual(cm.exception.args[0], "Dependency cycle")
def testGetDependenciesAndLabelsAreNotOnlyEqualButSame(self): bLabel = ("b",) a = Action(lambda: 0, "a") b = Action(lambda: 0, bLabel) a.addDependency(b) otherB, = a.getDependencies() self.assertIs(otherB, b) self.assertIs(otherB.label, bLabel)
def testLongCycle(self): a = Action(lambda: 0, "a") b = Action(lambda: 0, "b") c = Action(lambda: 0, "c") d = Action(lambda: 0, "d") e = Action(lambda: 0, "e") a.addDependency(b) b.addDependency(c) c.addDependency(d) d.addDependency(e) with self.assertRaises(Exception) as cm: e.addDependency(a) self.assertEqual(cm.exception.args[0], "Dependency cycle")
def testDeepDependencyWithDuplicatedLabel(self): a = Action(lambda: 0, "label") b = Action(lambda: 0, "label") c = Action(lambda: 0, "label") d = Action(lambda: 0, "label") a.addDependency(b) b.addDependency(c) c.addDependency(d) self.assertEqual(a.getPreview(), ["label", "label", "label", "label"])
def testDeepDependency(self): a = Action(lambda: 0, "a") b = Action(lambda: 0, "b") c = Action(lambda: 0, "c") d = Action(lambda: 0, "d") a.addDependency(b) b.addDependency(c) c.addDependency(d) self.assertEqual(a.getPreview(), ["d", "c", "b", "a"])
def testDiamondDependency(self): # a # / \ # b c # \ / # d a = Action(lambda: 0, "a") b = Action(lambda: 0, "b") c = Action(lambda: 0, "c") d = Action(lambda: 0, "d") a.addDependency(b) a.addDependency(c) b.addDependency(d) c.addDependency(d) self.assertIn(a.getPreview(), [["d", "c", "b", "a"], ["d", "b", "c", "a"]])
def testSelfDependency(self): a = Action(lambda: 0, "a") with self.assertRaises(Exception) as cm: a.addDependency(a) self.assertEqual(cm.exception.args[0], "Dependency cycle")