class TestGraphUndirected(unittest.TestCase): def setUp(self): self.N = 4 # number of nodes self.G = Graph(self.N) self.edges = [ Edge(0, 1, 2), Edge(1, 2, 4), Edge(2, 0, 6), Edge(2, 3, 3), Edge(3, 1, 5) ] for edge in self.edges: self.G.add_edge(edge) #self.G.show() def test_undirected(self): self.assertFalse(self.G.is_directed()) self.assertEqual(self.G.v(), self.N) self.assertEqual(self.G.e(), 5) self.G.del_node(1) # node become isolated self.assertEqual(self.G.v(), self.N) self.assertEqual(self.G.e(), 2) def test_iteredges(self): inedges = list(self.G.iterinedges(1)) outedges = list(self.G.iteroutedges(1)) #print inedges, outedges self.assertEqual(len(inedges), 3) self.assertEqual(len(outedges), 3) def test_copy(self): T = self.G.copy() self.assertEqual(T.v(), self.G.v()) self.assertEqual(T.e(), self.G.e()) for node in T.iternodes(): self.assertTrue(self.G.has_node(node)) for edge in T.iteredges(): self.assertTrue(self.G.has_edge(edge)) def test_transpose(self): T = self.G.transpose() self.assertEqual(T.v(), self.G.v()) self.assertEqual(T.e(), self.G.e()) for node in T.iternodes(): self.assertTrue(self.G.has_node(node)) for edge in T.iteredges(): self.assertTrue(self.G.has_edge(~edge)) def test_complement(self): T = self.G.complement() self.assertEqual(T.v(), self.G.v()) self.assertEqual(T.e(), self.N * (self.N - 1) // 2 - self.G.e()) for node in T.iternodes(): self.assertTrue(self.G.has_node(node)) for edge in T.iteredges(): self.assertFalse(self.G.has_edge(edge)) for edge in self.G.iteredges(): self.assertFalse(T.has_edge(edge)) def test_degree(self): self.assertEqual(self.G.degree(0), 2) self.assertEqual(self.G.degree(1), 3) self.assertEqual(self.G.degree(2), 3) self.assertEqual(self.G.degree(3), 2) def test_add_graph_undirected(self): T = Graph(self.N) T.add_edge(Edge(0, 3, 9)) self.assertEqual(T.v(), self.N) self.assertEqual(T.e(), 1) self.G.add_graph(T) self.assertEqual(self.G.v(), self.N) self.assertEqual(self.G.e(), 6) def test_load_save(self): name1 = "undirected_matrixgraph.txt" name2 = "undirected_matrixgraph.lgl" name3 = "undirected_matrixgraph.ncol" self.G.save(name1) self.G.save_lgl(name2) self.G.save_ncol(name3) T = Graph.load(name1) self.assertEqual(self.G, T) def tearDown(self): pass
class TestGraphUndirected(unittest.TestCase): def setUp(self): self.N = 4 # number of nodes self.G = Graph(self.N) self.edges = [ Edge(0, 1, 2), Edge(1, 2, 4), Edge(2, 0, 6), Edge(2, 3, 3), Edge(3, 1, 5)] for edge in self.edges: self.G.add_edge(edge) def test_undirected(self): self.assertFalse(self.G.is_directed()) self.assertEqual(self.G.v(), self.N) self.assertEqual(self.G.e(), 5) self.G.del_node(1) # node become isolated self.assertEqual(self.G.v(), self.N) self.assertEqual(self.G.e(), 2) def test_iteredges(self): inedges = list(self.G.iterinedges(1)) outedges = list(self.G.iteroutedges(1)) #print inedges, outedges self.assertEqual(len(inedges), 3) self.assertEqual(len(outedges), 3) def test_copy(self): T = self.G.copy() self.assertEqual(T.v(), self.G.v()) self.assertEqual(T.e(), self.G.e()) for node in T.iternodes(): self.assertTrue(self.G.has_node(node)) for edge in T.iteredges(): self.assertTrue(self.G.has_edge(edge)) def test_transpose(self): T = self.G.transpose() self.assertEqual(T.v(), self.G.v()) self.assertEqual(T.e(), self.G.e()) for node in T.iternodes(): self.assertTrue(self.G.has_node(node)) for edge in T.iteredges(): self.assertTrue(self.G.has_edge(~edge)) def test_complement(self): T = self.G.complement() self.assertEqual(T.v(), self.G.v()) self.assertEqual(T.e(), self.N*(self.N-1)/2 - self.G.e()) for node in T.iternodes(): self.assertTrue(self.G.has_node(node)) for edge in T.iteredges(): self.assertFalse(self.G.has_edge(edge)) for edge in self.G.iteredges(): self.assertFalse(T.has_edge(edge)) def test_degree(self): self.assertEqual(self.G.degree(0), 2) self.assertEqual(self.G.degree(1), 3) self.assertEqual(self.G.degree(2), 3) self.assertEqual(self.G.degree(3), 2) def test_add_graph_undirected(self): T = Graph(self.N) T.add_edge(Edge(0, 3, 9)) self.assertEqual(T.v(), self.N) self.assertEqual(T.e(), 1) self.G.add_graph(T) self.assertEqual(self.G.v(), self.N) self.assertEqual(self.G.e(), 6) def test_load_save(self): name1 = "undirected_matrixgraph.txt" name2 = "undirected_matrixgraph.lgl" name3 = "undirected_matrixgraph.ncol" self.G.save(name1) self.G.save_lgl(name2) self.G.save_ncol(name3) T = Graph.load(name1) self.assertEqual(self.G, T) def tearDown(self): pass