def test_shouldBeUnachievable(): root = Goal(Decomposition.AND, "root") context1 = Context("c1") context2 = Context("c2") current = [] current.append(context1) task1 = Task("T1") task2 = Task("T2") task1.addApplicableContext(context2) task2.addApplicableContext(context2) root.addDependency(task1) root.addDependency(task2) deps = [] deps.append(task1) deps.append(task2) plan = PragmaticPlanning().isAchievable(root, current, None) assert plan is None
def test_aGoalOrDecomposedWithTwoTasksMayNotBeAchievable(): goal = Goal(Decomposition.OR, "Root") task1 = Task("T1") task2 = Task("T2") current = Context("C1") fullContext = [] fullContext.append(current) qc = QualityConstraint(current, CommonMetrics.SECONDS, 15, Comparison.LESS_OR_EQUAL_TO) task1.addApplicableContext(current) task1.setProvidedQuality(current, CommonMetrics.SECONDS, 16) task2.addApplicableContext(current) task2.setProvidedQuality(current, CommonMetrics.SECONDS, 17) goal.addDependency(task1) goal.addDependency(task2) goal.addApplicableContext(current) interp = Interpretation() interp.addQualityConstraint(qc) plan = PragmaticPlanning().isAchievable(goal, fullContext, interp) assert goal.decomposition is Decomposition.OR assert plan is None
def test_shouldGetDependencies(): root = Goal(Decomposition.AND, "root") task = Task("T1") goal = Goal(Decomposition.AND, "G1") delegation = Delegation("D1") root.addDependency(task) root.addDependency(goal) root.addDependency(delegation) deps = [] deps.append(delegation) deps.append(goal) deps.append(task) for d in deps: assert d in root.dependencies
def test_shouldBeAchievable(): root = Goal(Decomposition.AND, "root") context = Context("c1") current = [] current.append(context) task1 = Task("t1") task2 = Task("t2") task1.addApplicableContext(context) root.addDependency(task1) root.addDependency(task2) plan = PragmaticPlanning().isAchievable(root, current, None) assert plan assert task2 in plan.getTasks()
def test_shouldGetApplicableDependencies(): root = Goal(Decomposition.AND, "root") context = Context("c1") current = [] current.append(context) task = Task("t1") goal = Goal(Decomposition.AND, "g1") delegation = Delegation("D1") task.addApplicableContext(context) root.addDependency(task) root.addDependency(goal) root.addDependency(delegation) deps = [] deps.append(task) assert 1 == len(deps) assert task in deps
def test_aGoalWithATaskMayBeAchievable(): goal = Goal(Decomposition.AND, "Root") task = Task("T1") current = Context("C1") fullContext = [] fullContext.append(current) qc = QualityConstraint(current, CommonMetrics.SECONDS, 15, Comparison.LESS_OR_EQUAL_TO) interp = Interpretation() interp.addQualityConstraint(qc) task.addApplicableContext(current) task.setProvidedQuality(current, CommonMetrics.SECONDS, 13) goal.addDependency(task) goal.addApplicableContext(current) plan = PragmaticPlanning().isAchievable(goal, fullContext, interp) assert len(plan.getTasks()) == 1