def test_clone__case_diamond(self): dag = DepDag() dag.new_vertex('a', 'payload-a') dag.new_vertex('b', 'payload-b') dag.new_vertex('c', 'payload-c') dag.new_vertex('d', 'payload-d') dag.new_vertex('e', 'payload-e') dag.new_vertex('f', 'payload-f') dag.a.depends_on('b') dag.b.depends_on('c', 'd') dag.c.depends_on('e') dag.d.depends_on('e') dag.e.depends_on('f') new_dag = dag.clone() self.assertEqual([new_dag.b], list(new_dag.a.direct_supporters())) self.assertEqual([new_dag.c, new_dag.d], list(new_dag.b.direct_supporters())) self.assertEqual([new_dag.e], list(new_dag.c.direct_supporters())) self.assertEqual([new_dag.e], list(new_dag.d.direct_supporters())) self.assertEqual([new_dag.f], list(new_dag.e.direct_supporters())) self.assertEqual('payload-a', new_dag.a.payload) self.assertEqual('payload-b', new_dag.b.payload) self.assertEqual('payload-c', new_dag.c.payload) self.assertEqual('payload-d', new_dag.d.payload) self.assertEqual('payload-e', new_dag.e.payload) self.assertEqual('payload-f', new_dag.f.payload)
def test_clone__case_simple(self): dag = DepDag() dag.new_vertex('a', 'payload-a') dag.new_vertex('b', 'payload-b') dag.new_vertex('c', 'payload-c') dag.a.depends_on('b') dag.b.depends_on('c') new_dag = dag.clone() self.assertEqual('payload-a', new_dag.a.payload) self.assertEqual('payload-b', new_dag.b.payload) self.assertEqual('payload-c', new_dag.c.payload) self.assertEqual([new_dag.b], list(new_dag.a.direct_supporters())) self.assertEqual([new_dag.c], list(new_dag.b.direct_supporters()))
def test_clone__cyclic(self): dag = DepDag() dag.new_vertex('a', 'payload-a') dag.new_vertex('b', 'payload-b') dag.new_vertex('c', 'payload-c') dag.new_vertex('d', 'payload-d') dag.a.depends_on('b') dag.b.depends_on('c') dag.c.depends_on('d') dag.d.depends_on('a') self.assertTrue(dag.is_cyclic()) new_dag = dag.clone() self.assertEqual([new_dag.b], list(new_dag.a.direct_supporters())) self.assertEqual([new_dag.c], list(new_dag.b.direct_supporters())) self.assertEqual([new_dag.d], list(new_dag.c.direct_supporters())) self.assertEqual([new_dag.a], list(new_dag.d.direct_supporters())) self.assertEqual('payload-a', new_dag.a.payload) self.assertEqual('payload-b', new_dag.b.payload) self.assertEqual('payload-c', new_dag.c.payload) self.assertEqual('payload-d', new_dag.d.payload) self.assertTrue(new_dag.is_cyclic())