diff --git a/test/GraphTest.cpp b/test/GraphTest.cpp index ccc6c9a6d..29450e250 100644 --- a/test/GraphTest.cpp +++ b/test/GraphTest.cpp @@ -685,7 +685,7 @@ TEST(ReverseDirectedGraphTest, test_exception) { ASSERT_THROW(mixedGraph.reverseDirectedGraph(), std::runtime_error); } -TEST(IsolatedNodeGraphTest, Test_1) { +TEST(IsolatedNodeGraphTest, Test_AddNode1) { CXXGraph::Node node1("1", 1); CXXGraph::Node node2("2", 2); CXXGraph::Node node3("3", 3); @@ -706,3 +706,91 @@ TEST(IsolatedNodeGraphTest, Test_1) { ASSERT_EQ(graph.getNodeSet().size(), 4); ASSERT_EQ(graph.getEdgeSet().size(), 3); } + +TEST(IsolatedNodeGraphTest, Test_AddNode2) { + CXXGraph::Node node1("1", 1); + CXXGraph::Node node2("2", 2); + CXXGraph::Node node3("3", 3); + CXXGraph::DirectedEdge edge1(1, node1, node2); + CXXGraph::DirectedEdge edge2(2, node2, node1); + CXXGraph::DirectedEdge edge3(3, node1, node3); + CXXGraph::T_EdgeSet edgeSet; + edgeSet.insert(make_shared>(edge1)); + edgeSet.insert(make_shared>(edge2)); + edgeSet.insert(make_shared>(edge3)); + CXXGraph::Graph graph(edgeSet); + + // Create an isolated node and add it to the graph + CXXGraph::Node node4("4", 4); + graph.addNode(&node4); + + // Check that the number of nodes in the graph is 4 + ASSERT_EQ(graph.getNodeSet().size(), 4); + ASSERT_EQ(graph.getEdgeSet().size(), 3); +} + +TEST(TestRemoveNode, Test_isolatedNode) { + CXXGraph::Node node1("1", 1); + CXXGraph::Node node2("2", 2); + CXXGraph::Node node3("3", 3); + CXXGraph::DirectedEdge edge1(1, node1, node2); + CXXGraph::DirectedEdge edge2(2, node2, node1); + CXXGraph::DirectedEdge edge3(3, node1, node3); + CXXGraph::T_EdgeSet edgeSet; + edgeSet.insert(make_shared>(edge1)); + edgeSet.insert(make_shared>(edge2)); + edgeSet.insert(make_shared>(edge3)); + CXXGraph::Graph graph(edgeSet); + + // Create isolated nodes and add them to the graph + CXXGraph::Node node4("4", 4); + CXXGraph::Node node5("5", 5); + CXXGraph::Node node6("6", 6); + graph.addNode(make_shared>(node4)); + graph.addNode(make_shared>(node5)); + graph.addNode(make_shared>(node6)); + + // Check the initial number of edges and nodes + ASSERT_EQ(graph.getNodeSet().size(), 6); + ASSERT_EQ(graph.getEdgeSet().size(), 3); + + // We now remove node 5 + graph.removeNode("5"); + + // Check the final number of edges and nodes + ASSERT_EQ(graph.getNodeSet().size(), 5); + ASSERT_EQ(graph.getEdgeSet().size(), 3); +} + +TEST(TestRemoveNode, Test_connectedNode) { + CXXGraph::Node node1("1", 1); + CXXGraph::Node node2("2", 2); + CXXGraph::Node node3("3", 3); + CXXGraph::DirectedEdge edge1(1, node1, node2); + CXXGraph::DirectedEdge edge2(2, node2, node1); + CXXGraph::DirectedEdge edge3(3, node1, node3); + CXXGraph::T_EdgeSet edgeSet; + edgeSet.insert(make_shared>(edge1)); + edgeSet.insert(make_shared>(edge2)); + edgeSet.insert(make_shared>(edge3)); + CXXGraph::Graph graph(edgeSet); + + // Create isolated nodes and add them to the graph + CXXGraph::Node node4("4", 4); + CXXGraph::Node node5("5", 5); + CXXGraph::Node node6("6", 6); + graph.addNode(make_shared>(node4)); + graph.addNode(make_shared>(node5)); + graph.addNode(make_shared>(node6)); + + // Check the initial number of edges and nodes + ASSERT_EQ(graph.getNodeSet().size(), 6); + ASSERT_EQ(graph.getEdgeSet().size(), 3); + + // We now remove node 2 + graph.removeNode("2"); + + // Check the final number of edges and nodes + ASSERT_EQ(graph.getNodeSet().size(), 5); + ASSERT_EQ(graph.getEdgeSet().size(), 1); +}