Ejemplo n.º 1
0
    def test_hybridgraphs(self):
        '''
        Test graphs with both directed and undirected edges.
        '''
        G = nx.MultiGraph()
        G.add_edge(1, 2, weight=15)
        G.add_edge(1, 2, weight=15)
        G.add_edge(2, 4)
        graph = Graph()
        graph.add_graph_from_networkx(G)
        # a custom directed edge in an undirected networkx multigraph
        e = Edge()
        e.data['source'] = '1'
        e.data['target'] = '4'
        graph.add_edge(e, directed=True)

        expected_edges = [
            Edge(classes=' multiple_edges ',
                 data={
                     'source': '1',
                     'target': '2',
                     'weight': 15
                 },
                 position={}),
            Edge(classes=' multiple_edges ',
                 data={
                     'source': '1',
                     'target': '2',
                     'weight': 15
                 },
                 position={}),
            Edge(classes=' multiple_edges ',
                 data={
                     'source': '2',
                     'target': '4'
                 },
                 position={}),
            Edge(classes=' directed ',
                 data={
                     'source': '1',
                     'target': '4'
                 },
                 position={})
        ]
        compare_edges(expected_edges, graph.edges)
Ejemplo n.º 2
0
    def test_hybridgraphs(self):
        """
        Test graphs with both directed and undirected edges.
        """
        G = nx.MultiGraph()
        G.add_edge(1, 2, weight=15)
        G.add_edge(1, 2, weight=15)
        G.add_edge(2, 4)
        graph = Graph()
        graph.add_graph_from_networkx(G)
        # a custom directed edge in an undirected networkx multigraph
        e = Edge()
        e.data["source"] = "1"
        e.data["target"] = "4"
        graph.add_edge(e, directed=True)

        expected_edges = [
            Edge(
                classes=" multiple_edges ",
                data={
                    "source": "1",
                    "target": "2",
                    "weight": 15
                },
            ),
            Edge(
                classes=" multiple_edges ",
                data={
                    "source": "1",
                    "target": "2",
                    "weight": 15
                },
            ),
            Edge(classes=" multiple_edges ",
                 data={
                     "source": "2",
                     "target": "4"
                 }),
            Edge(classes=" directed ", data={
                "source": "1",
                "target": "4"
            }),
        ]
        compare_edges(expected_edges, graph.edges)
    def test_add_edges(self):
        """
        Test to ensure that an edge with the corresponding nodes will be added to the graph
        """
        edge = Edge(data={"source": "0", "target": "1"})
        edge_inv = Edge(data={"source": "1", "target": "0"})

        expected_nodes = [
            Node(data={"id": "0"}, position={}),
            Node(data={"id": "1"}, position={}),
        ]
        expected_edges = [
            Edge(classes="", data={
                "source": "0",
                "target": "1"
            }),
        ]
        expected_edges_multiple = [
            Edge(classes="", data={
                "source": "0",
                "target": "1"
            }),
            Edge(classes=" multiple_edges ",
                 data={
                     "source": "1",
                     "target": "0"
                 }),
        ]

        graph = Graph()
        graph.add_edge(copy.copy(edge))
        compare_edges(expected_edges, graph.edges)
        compare_nodes(expected_nodes, graph.nodes)

        # test for passing arguments
        graph.add_edge(copy.copy(edge_inv), multiple_edges=True)
        compare_edges(expected_edges_multiple, graph.edges)
        compare_nodes(expected_nodes, graph.nodes)