def test_undirected_vertex_has_self_edge(self): """ Get an undirected vertex's has_self_edge property """ v0 = UndirectedVertex(val='v0') v1 = UndirectedVertex(val='v1') v2 = UndirectedVertex(val='v2') e00 = UndirectedEdge((v0, v0)) e01 = UndirectedEdge((v0, v1)) e11 = UndirectedEdge((v1, v1)) e02 = UndirectedEdge((v0, v2)) v0.add_edge(e00) v0.add_edge(e01) v1.add_edge(e01) v0.add_edge(e02) v2.add_edge(e02) self.assertTrue(v0.has_self_edge) self.assertFalse(v1.has_self_edge) self.assertFalse(v2.has_self_edge) with self.assertRaises(AttributeError): v0.has_self_edge = True v1.add_edge(e11) v0.remove_edge(e00) self.assertFalse(v0.has_self_edge) self.assertTrue(v1.has_self_edge) self.assertFalse(v2.has_self_edge)
def test_undirected_vertex_not_part_of_edge(self): """ An undirected vertex should not be able add an edge which doesn't have it as a vertex """ v0 = UndirectedVertex(val='v0') v1 = UndirectedVertex(val='v1') v2 = UndirectedVertex(val='v2') e12 = UndirectedEdge((v1, v2)) with self.assertRaises(ValueError): v0.add_edge(e12)
def test_undirected_vertex_add_edge(self): """ Add an edge to an undirected vertex """ v0 = UndirectedVertex(val='v0') v1 = UndirectedVertex(val='v1') v2 = UndirectedVertex(val='v2') e00 = UndirectedEdge((v0, v0)) e01 = UndirectedEdge((v0, v1)) e10 = UndirectedEdge((v1, v0)) e02 = UndirectedEdge((v0, v2)) v0.add_edge(e00) v0.add_edge(e01) self.assertTrue(e00 in v0) self.assertTrue(e01 in v0) self.assertTrue(e10 in v0) self.assertFalse(e02 in v0)
def test_undirected_vertex_neighbors_and_degree(self): """ Get undirected vertices' neighbors and degree properties """ v0 = UndirectedVertex(val='v0') v1 = UndirectedVertex(val='v1') v2 = UndirectedVertex(val='v2') e00 = UndirectedEdge((v0, v0)) e01 = UndirectedEdge((v0, v1)) e02 = UndirectedEdge((v0, v2)) v0.add_edge(e01) v0.add_edge(e02) self.assertEqual(set(v0.neighbors), set([v1, v2])) with self.assertRaises(AttributeError): v0.neighbors = set() self.assertEqual(v0.degree, 2) with self.assertRaises(AttributeError): v0.degree = 0 v0.add_edge(e00) self.assertEqual(set(v0.neighbors), set([v0, v1, v2])) self.assertEqual(v0.degree, 4)
def test_undirected_vertex_remove_edge(self): """ Remove an edge from an undirected vertex """ v0 = UndirectedVertex(val='v0') v1 = UndirectedVertex(val='v1') v2 = UndirectedVertex(val='v2') e01 = UndirectedEdge((v0, v1)) e10 = UndirectedEdge((v1, v0)) e02 = UndirectedEdge((v0, v2)) v0.add_edge(e01) v0.add_edge(e02) v0.remove_edge(e01) self.assertFalse(e01 in v0) self.assertFalse(e10 in v0) self.assertTrue(e02 in v0) v0.remove_edge(e02) self.assertFalse(e01 in v0) self.assertFalse(e10 in v0) self.assertFalse(e02 in v0)
def test_undirected_vertex_edges(self): """ Get an undirected vertex's edges property """ v0 = UndirectedVertex(val='v0') v1 = UndirectedVertex(val='v1') v2 = UndirectedVertex(val='v2') e00 = UndirectedEdge((v0, v0)) e01 = UndirectedEdge((v0, v1)) e02 = UndirectedEdge((v0, v2)) v0.add_edge(e00) v0.add_edge(e01) v1.add_edge(e01) v0.add_edge(e02) v2.add_edge(e02) self.assertEqual(set(v0.edges), set([e00, e01, e02])) self.assertEqual(set(v1.edges), set([e01])) self.assertEqual(set(v2.edges), set([e02])) with self.assertRaises(AttributeError): v0.edges = set()
def test_undirected_vertex_already_has_edge(self): """ An undirected vertex should not be able to add an edge that it already has """ v0 = UndirectedVertex(val='v0') v1 = UndirectedVertex(val='v1') e01 = UndirectedEdge((v0, v1)) v0.add_edge(e01) with self.assertRaises(ValueError): v0.add_edge(e01) try: v1.add_edge(e01) except ValueError: self.fail("Adding the edge (v0, v1) to v0 should not stop the edge " "(v0, v1) from being added to v1.")