retworkx 0.8.0

A python graph library implemented in Rust
Documentation
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

import unittest

import retworkx


class TestToUndirected(unittest.TestCase):

    def test_to_undirected_empty_graph(self):
        digraph = retworkx.PyDiGraph()
        graph = digraph.to_undirected()
        self.assertEqual(0, len(graph))

    def test_single_direction_graph(self):
        digraph = retworkx.generators.directed_path_graph(5)
        graph = digraph.to_undirected()
        self.assertEqual(digraph.weighted_edge_list(),
                         graph.weighted_edge_list())

    def test_bidirectional_graph(self):
        digraph = retworkx.generators.directed_path_graph(5)
        for i in range(0, 4):
            digraph.add_edge(i + 1, i, None)
        graph = digraph.to_undirected()
        self.assertEqual(digraph.weighted_edge_list(),
                         graph.weighted_edge_list())

    def test_shared_ref(self):
        digraph = retworkx.PyDiGraph()
        node_weight = {'a': 1}
        node_a = digraph.add_node(node_weight)
        edge_weight = {'a': 1}
        digraph.add_child(node_a, 'b', edge_weight)
        graph = digraph.to_undirected()
        self.assertEqual(digraph[node_a], {'a': 1})
        self.assertEqual(graph[node_a], {'a': 1})
        node_weight['b'] = 2
        self.assertEqual(digraph[node_a], {'a': 1, 'b': 2})
        self.assertEqual(graph[node_a], {'a': 1, 'b': 2})
        self.assertEqual(digraph.get_edge_data(0, 1), {'a': 1})
        self.assertEqual(graph.get_edge_data(0, 1), {'a': 1})
        edge_weight['b'] = 2
        self.assertEqual(digraph.get_edge_data(0, 1), {'a': 1, 'b': 2})
        self.assertEqual(graph.get_edge_data(0, 1), {'a': 1, 'b': 2})