def test_duplicate_edge(self): g = Graph() g.addNode(Node('A')) g.addNode(Node('B')) g.addEdge(Edge(Node('A'), Node('B'))) # A --> B with self.assertRaises(ValueError) as context: g.addEdge(Edge(Node('A'),Node('B'))) self.assertTrue('The edge (Node: A, Node: B) is already in the graph' in context.exception)
def test_add_edge(self): g = Graph() n1 = Node('A') n2 = Node('B') g.addNode(n1) g.addNode(n2) g.addEdge(Edge(n1, n2)) # A --> B self.assertIn(n2, g.edges[n1]) self.assertEqual([], g.edges[n2])
def test_edge_added_from_to__non_existing_node(self): """Test case: Check when an edge is added from or to a non existing node """ g = Graph() g.addNode(Node('A')) g.addNode(Node('B')) with self.assertRaises(ValueError) as context: g.addEdge(Edge(Node('A'), Node('D'))) # A --> D g.addEdge(Edge(Node('D'), Node('A'))) # D --> A self.assertTrue('Node: A and Node: D must be in the graph' in context.exception)
def test_method_getitem_of_Graph(self): """Test case: * Nodes A, B. C, D. Neighbors of A: B and D """ g = Graph() g.addNode(Node('A')) g.addNode(Node('B')) g.addNode(Node('C')) g.addNode(Node('D')) g.addEdge(Edge(Node('A'), Node('B'))) # A --> B g.addEdge(Edge(Node('A'), Node('D'))) # A --> D self.assertIn(Node('B'), g[Node('A')]) self.assertIn(Node('D'), g[Node('A')])
def test_edge_type_Edge(self): """Test case: Check that edge is a Edge object """ g = Graph() with self.assertRaises(TypeError) as context: g.addEdge(('A','B'))