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]))