summaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/setoolsgui/networkx/algorithms/tests/test_boundary.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/setoolsgui/networkx/algorithms/tests/test_boundary.py')
-rw-r--r--lib/python2.7/site-packages/setoolsgui/networkx/algorithms/tests/test_boundary.py104
1 files changed, 104 insertions, 0 deletions
diff --git a/lib/python2.7/site-packages/setoolsgui/networkx/algorithms/tests/test_boundary.py b/lib/python2.7/site-packages/setoolsgui/networkx/algorithms/tests/test_boundary.py
new file mode 100644
index 0000000..2b9e714
--- /dev/null
+++ b/lib/python2.7/site-packages/setoolsgui/networkx/algorithms/tests/test_boundary.py
@@ -0,0 +1,104 @@
+#!/usr/bin/env python
+from nose.tools import *
+import networkx as nx
+from networkx import convert_node_labels_to_integers as cnlti
+
+class TestBoundary:
+
+ def setUp(self):
+ self.null=nx.null_graph()
+ self.P10=cnlti(nx.path_graph(10),first_label=1)
+ self.K10=cnlti(nx.complete_graph(10),first_label=1)
+
+ def test_null_node_boundary(self):
+ """null graph has empty node boundaries"""
+ null=self.null
+ assert_equal(nx.node_boundary(null,[]),[])
+ assert_equal(nx.node_boundary(null,[],[]),[])
+ assert_equal(nx.node_boundary(null,[1,2,3]),[])
+ assert_equal(nx.node_boundary(null,[1,2,3],[4,5,6]),[])
+ assert_equal(nx.node_boundary(null,[1,2,3],[3,4,5]),[])
+
+ def test_null_edge_boundary(self):
+ """null graph has empty edge boundaries"""
+ null=self.null
+ assert_equal(nx.edge_boundary(null,[]),[])
+ assert_equal(nx.edge_boundary(null,[],[]),[])
+ assert_equal(nx.edge_boundary(null,[1,2,3]),[])
+ assert_equal(nx.edge_boundary(null,[1,2,3],[4,5,6]),[])
+ assert_equal(nx.edge_boundary(null,[1,2,3],[3,4,5]),[])
+
+ def test_path_node_boundary(self):
+ """Check node boundaries in path graph."""
+ P10=self.P10
+ assert_equal(nx.node_boundary(P10,[]),[])
+ assert_equal(nx.node_boundary(P10,[],[]),[])
+ assert_equal(nx.node_boundary(P10,[1,2,3]),[4])
+ assert_equal(sorted(nx.node_boundary(P10,[4,5,6])),[3, 7])
+ assert_equal(sorted(nx.node_boundary(P10,[3,4,5,6,7])),[2, 8])
+ assert_equal(nx.node_boundary(P10,[8,9,10]),[7])
+ assert_equal(sorted(nx.node_boundary(P10,[4,5,6],[9,10])),[])
+
+ def test_path_edge_boundary(self):
+ """Check edge boundaries in path graph."""
+ P10=self.P10
+
+ assert_equal(nx.edge_boundary(P10,[]),[])
+ assert_equal(nx.edge_boundary(P10,[],[]),[])
+ assert_equal(nx.edge_boundary(P10,[1,2,3]),[(3, 4)])
+ assert_equal(sorted(nx.edge_boundary(P10,[4,5,6])),[(4, 3), (6, 7)])
+ assert_equal(sorted(nx.edge_boundary(P10,[3,4,5,6,7])),[(3, 2), (7, 8)])
+ assert_equal(nx.edge_boundary(P10,[8,9,10]),[(8, 7)])
+ assert_equal(sorted(nx.edge_boundary(P10,[4,5,6],[9,10])),[])
+ assert_equal(nx.edge_boundary(P10,[1,2,3],[3,4,5]) ,[(2, 3), (3, 4)])
+
+
+ def test_k10_node_boundary(self):
+ """Check node boundaries in K10"""
+ K10=self.K10
+
+ assert_equal(nx.node_boundary(K10,[]),[])
+ assert_equal(nx.node_boundary(K10,[],[]),[])
+ assert_equal(sorted(nx.node_boundary(K10,[1,2,3])),
+ [4, 5, 6, 7, 8, 9, 10])
+ assert_equal(sorted(nx.node_boundary(K10,[4,5,6])),
+ [1, 2, 3, 7, 8, 9, 10])
+ assert_equal(sorted(nx.node_boundary(K10,[3,4,5,6,7])),
+ [1, 2, 8, 9, 10])
+ assert_equal(nx.node_boundary(K10,[4,5,6],[]),[])
+ assert_equal(nx.node_boundary(K10,K10),[])
+ assert_equal(nx.node_boundary(K10,[1,2,3],[3,4,5]),[4, 5])
+
+ def test_k10_edge_boundary(self):
+ """Check edge boundaries in K10"""
+ K10=self.K10
+
+ assert_equal(nx.edge_boundary(K10,[]),[])
+ assert_equal(nx.edge_boundary(K10,[],[]),[])
+ assert_equal(len(nx.edge_boundary(K10,[1,2,3])),21)
+ assert_equal(len(nx.edge_boundary(K10,[4,5,6,7])),24)
+ assert_equal(len(nx.edge_boundary(K10,[3,4,5,6,7])),25)
+ assert_equal(len(nx.edge_boundary(K10,[8,9,10])),21)
+ assert_equal(sorted(nx.edge_boundary(K10,[4,5,6],[9,10])),
+ [(4, 9), (4, 10), (5, 9), (5, 10), (6, 9), (6, 10)])
+ assert_equal(nx.edge_boundary(K10,[1,2,3],[3,4,5]),
+ [(1, 3), (1, 4), (1, 5), (2, 3), (2, 4),
+ (2, 5), (3, 4), (3, 5)])
+
+
+ def test_petersen(self):
+ """Check boundaries in the petersen graph
+
+ cheeger(G,k)=min(|bdy(S)|/|S| for |S|=k, 0<k<=|V(G)|/2)
+ """
+ from random import sample
+ P=nx.petersen_graph()
+ def cheeger(G,k):
+ return min([float(len(nx.node_boundary(G,sample(G.nodes(),k))))/k
+ for n in range(100)])
+
+ assert_almost_equals(cheeger(P,1),3.00,places=2)
+ assert_almost_equals(cheeger(P,2),2.00,places=2)
+ assert_almost_equals(cheeger(P,3),1.67,places=2)
+ assert_almost_equals(cheeger(P,4),1.00,places=2)
+ assert_almost_equals(cheeger(P,5),0.80,places=2)