def assertConsistent(self, system, ground, type_spec=None): """Assert that the system and ground are consistent i.e., they have the same order-variant dicts. We test raw dicts, and Spec dicts and if present type specific dicts""" # Test dicts self.assertEquals(to_frozenset(system), to_frozenset(ground)) # Test Specs self.assertEquals(to_frozenset(system), to_frozenset([specs.Spec(d) for d in ground])) if type_spec is not None: # Type specific spec self.assertEquals(to_frozenset(system), to_frozenset([type_spec(d) for d in ground]))
def test_workflow_add_task_dict(self): """Adding task dicts should show up in Workflow.steps""" wf = specs.Workflow() wf.add_task(self.add, "add") task_list = [{"name": "add", "task": self.add}] # Steps should be equal to a list of dicts self.assertEquals(wf['steps'], task_list) self.assertEquals(wf.steps, task_list) # Steps should be equal to a list of Spec() dicts self.assertEquals(wf['steps'], [specs.Spec(t) for t in task_list]) self.assertEquals(wf.steps, [specs.Spec(t) for t in task_list]) # Steps should be equal to a list of StepSpec() dicts self.assertEquals(wf['steps'], [specs.StepSpec(t) for t in task_list]) self.assertEquals(wf.steps, [specs.StepSpec(t) for t in task_list]) # No duplicate nodes with self.assertRaises(specs.DuplicateTaskException): wf.add_task(self.add, "add") # Test with multiple tasks of the same type (different name) wf.add_task(self.add, "add2") task_list += [{"name": "add2", "task": self.add}] self.assertEquals(to_frozenset(wf['steps']), to_frozenset(task_list)) self.assertEquals(to_frozenset(wf.steps), to_frozenset(task_list)) self.assertEquals(to_frozenset(wf['steps']), to_frozenset([specs.Spec(t) for t in task_list])) self.assertEquals(to_frozenset(wf.steps), to_frozenset([specs.Spec(t) for t in task_list])) # Steps should be equal to a list of StepSpec() dicts self.assertEquals(to_frozenset(wf['steps']), to_frozenset([specs.StepSpec(t) for t in task_list])) self.assertEquals(to_frozenset(wf.steps), to_frozenset([specs.StepSpec(t) for t in task_list]))