Example #1
0
    def test_union_merge_all(self):
        dag_a = retworkx.PyDiGraph()
        dag_b = retworkx.PyDiGraph()

        node_a = dag_a.add_node("a_1")
        dag_a.add_child(node_a, "a_2", "e_1")
        dag_a.add_child(node_a, "a_3", "e_2")

        node_b = dag_b.add_node("a_1")
        dag_b.add_child(node_b, "a_2", "e_1")
        dag_b.add_child(node_b, "a_3", "e_2")

        dag_c = retworkx.digraph_union(dag_a, dag_b, True, True)

        self.assertTrue(retworkx.is_isomorphic(dag_a, dag_c))
Example #2
0
    def test_union_mismatch_edge_weight(self):
        first = retworkx.PyDiGraph()
        nodes = first.add_nodes_from([0, 1])
        first.add_edges_from([(nodes[0], nodes[1], "a")])

        second = retworkx.PyDiGraph()
        nodes = second.add_nodes_from([0, 1])
        second.add_edges_from([(nodes[0], nodes[1], "b")])

        final = retworkx.digraph_union(first,
                                       second,
                                       merge_nodes=True,
                                       merge_edges=True)
        self.assertEqual(final.weighted_edge_list(), [(0, 1, "a"),
                                                      (0, 1, "b")])
Example #3
0
    def test_union_basic_merge_none(self):
        dag_a = retworkx.PyDiGraph()
        dag_b = retworkx.PyDiGraph()

        node_a = dag_a.add_node("a_1")
        dag_a.add_child(node_a, "a_2", "e_1")
        dag_a.add_child(node_a, "a_3", "r_2")

        node_b = dag_b.add_node("a_1")
        dag_b.add_child(node_b, "a_2", "e_1")
        dag_b.add_child(node_b, "a_3", "e_2")

        dag_c = retworkx.digraph_union(dag_a, dag_b, False, False)

        self.assertTrue(len(dag_c.nodes()) == 6)
        self.assertTrue(len(dag_c.edge_list()) == 4)
Example #4
0
    def test_union_node_hole(self):
        first = retworkx.PyDiGraph()
        nodes = first.add_nodes_from([0, 1])
        first.add_edges_from([(nodes[0], nodes[1], "a")])

        second = retworkx.PyDiGraph()
        dummy = second.add_node("dummy")
        nodes = second.add_nodes_from([0, 1])
        second.add_edges_from([(nodes[0], nodes[1], "a")])
        second.remove_node(dummy)

        final = retworkx.digraph_union(first,
                                       second,
                                       merge_nodes=True,
                                       merge_edges=True)
        self.assertEqual(final.weighted_edge_list(), [(0, 1, "a")])
Example #5
0
    def test_union_basic_merge_nodes_only(self):
        dag_a = retworkx.PyDiGraph()
        dag_b = retworkx.PyDiGraph()

        node_a = dag_a.add_node("a_1")
        child_a = dag_a.add_child(node_a, "a_2", "e_1")
        dag_a.add_child(node_a, "a_3", "e_2")

        node_b = dag_b.add_node("a_1")
        dag_b.add_child(node_b, "a_2", "e_1")
        dag_b.add_child(node_b, "a_3", "e_2")

        dag_c = retworkx.digraph_union(dag_a, dag_b, True, False)

        self.assertTrue(len(dag_c.edge_list()) == 4)
        self.assertTrue(len(dag_c.get_all_edge_data(node_a, child_a)) == 2)
        self.assertTrue(len(dag_c.nodes()) == 3)