Repository URL to install this package:
|
Version:
2.1 ▾
|
# test_bridges.py - unit tests for bridge-finding algorithms
#
# Copyright 2004-2018 NetworkX developers.
#
# This file is part of NetworkX.
#
# NetworkX is distributed under a BSD license; see LICENSE.txt for more
# information.
"""Unit tests for bridge-finding algorithms."""
from unittest import TestCase
from nose.tools import assert_equal, assert_in
import networkx as nx
class TestBridges(TestCase):
"""Unit tests for the bridge-finding function."""
def test_single_bridge(self):
edges = [
# DFS tree edges.
(1, 2), (2, 3), (3, 4), (3, 5), (5, 6), (6, 7), (7, 8), (5, 9),
(9, 10),
# Nontree edges.
(1, 3), (1, 4), (2, 5), (5, 10), (6, 8)
]
G = nx.Graph(edges)
source = 1
bridges = list(nx.bridges(G, source))
self.assertEqual(bridges, [(5, 6)])
def test_barbell_graph(self):
# The (3, 0) barbell graph has two triangles joined by a single edge.
G = nx.barbell_graph(3, 0)
source = 0
bridges = list(nx.bridges(G, source))
self.assertEqual(bridges, [(2, 3)])
class TestLocalBridges(TestCase):
"""Unit tests for the local_bridge function."""
def setUp(self):
self.BB = nx.barbell_graph(4, 0)
self.square = nx.cycle_graph(4)
self.tri = nx.cycle_graph(3)
def test_nospan(self):
expected = {(3, 4), (4, 3)}
assert_in(next(nx.local_bridges(self.BB, with_span=False)), expected)
assert_equal(set(nx.local_bridges(self.square, with_span=False)), self.square.edges)
assert_equal(list(nx.local_bridges(self.tri, with_span=False)), [])
def test_no_weight(self):
inf = float('inf')
expected = {(3, 4, inf), (4, 3, inf)}
assert_in(next(nx.local_bridges(self.BB)), expected)
expected = {(u, v, 3) for u, v, in self.square.edges}
assert_equal(set(nx.local_bridges(self.square)), expected)
assert_equal(list(nx.local_bridges(self.tri)), [])
def test_weight(self):
inf = float('inf')
G = self.square.copy()
G.edges[1, 2]['weight'] = 2
expected = {(u, v, 5 - wt) for u, v, wt in G.edges(data='weight', default=1)}
assert_equal(set(nx.local_bridges(G, weight='weight')), expected)
expected = {(u, v, 6) for u, v in G.edges}
lb = nx.local_bridges(G, weight=lambda u, v, d: 2)
assert_equal(set(lb), expected)