From 20299000356cf78563864bf69f328f391cd36bee Mon Sep 17 00:00:00 2001 From: stefiosif Date: Sun, 12 Jun 2022 17:34:52 +0300 Subject: [PATCH] Update tarjan test cases and add BFS test case --- test/algorithm_test.cc | 61 ++++++++++++++++++++++++++++++------------ test/graph_test.cc | 29 +++++++++++++++++--- 2 files changed, 70 insertions(+), 20 deletions(-) diff --git a/test/algorithm_test.cc b/test/algorithm_test.cc index 50756fa..d75f13a 100644 --- a/test/algorithm_test.cc +++ b/test/algorithm_test.cc @@ -7,9 +7,9 @@ using namespace graph; -TEST_SUITE("Algorithm.") { +TEST_SUITE("Algorithm") { - TEST_CASE("Tarjan T_1") { + TEST_CASE("Tarjan T1") { // 1 --> 2 --> 4 --> 1 // 2 --> 3 --> 5 --> 7 --> 3 // 5 --> 9 --> 6 --> 8 --> 9 @@ -29,20 +29,22 @@ TEST_SUITE("Algorithm.") { REQUIRE_EQ(G.vertices.size(), 9); algo::Tarjan tarjan(G); - auto result = tarjan.run(); + auto res = tarjan.run(); - for (auto& scc : result) { - scc.output(); - } - - std::vector> expected{ - {1, 2, 4}, + std::vector> exp = { + {6, 8, 9}, {3, 5, 7}, - {6, 8, 9} + {1, 2, 4} }; + + for (auto i = 0; i < res.size(); i++) { + auto kv = std::views::keys(res[i].adjMatrix); + CHECK_EQ(std::is_permutation(kv.begin(), kv.end(), exp[i].begin()), + true); + } } - TEST_CASE("Tarjan T_2") { + TEST_CASE("Tarjan T2") { // 1 --> 2 --> 5 --> 7 --> 2 // 1 --> 4 --> 3 --> 1 // 4 --> 6 --> 3 @@ -60,15 +62,21 @@ TEST_SUITE("Algorithm.") { REQUIRE_EQ(G.vertices.size(), 7); algo::Tarjan tarjan(G); - auto result = tarjan.run(); + auto res = tarjan.run(); - std::vector> expected{ - {1, 3, 4, 6}, - {2, 5, 7} + std::vector> exp = { + {2, 5, 7}, + {1, 3, 4, 6} }; + + for (auto i = 0; i < res.size(); i++) { + auto kv = std::views::keys(res[i].adjMatrix); + CHECK_EQ(std::is_permutation(kv.begin(), kv.end(), exp[i].begin()), + true); + } } - TEST_CASE("BFS T_1") { + TEST_CASE("BFS T1") { // 1 --> 2 --> 5 --> 7 --> 2 // 1 --> 4 --> 3 --> 1 // 4 --> 6 --> 3 @@ -84,6 +92,25 @@ TEST_SUITE("Algorithm.") { G.insert(7, 2); algo::BFS bfs(G, 1); - auto bfsTree = bfs.run(); + auto tree = bfs.run(); + + /*std::map> exp = { + {1, {2, 4}}, + {2, {5}}, + {3, {}}, + {4, {3, 6}}, + {5, {7}}, + {6, {}}, + {7, {}} + };*/ + + std::map> exp = { + {1, {2, 4}}, + {2, {5}}, + {4, {3, 6}}, + {5, {7}} + }; + + CHECK_EQ(tree, exp); } } \ No newline at end of file diff --git a/test/graph_test.cc b/test/graph_test.cc index 22d7a86..ff95237 100644 --- a/test/graph_test.cc +++ b/test/graph_test.cc @@ -8,9 +8,9 @@ using namespace graph; -TEST_SUITE("Graph.") { +TEST_SUITE("Graph") { - TEST_CASE("SCC") { + TEST_CASE("SCC T1") { // 1 --> 2 --> 4 --> 1 // 2 --> 3 --> 5 --> 7 --> 3 // 5 --> 9 --> 6 --> 8 --> 9 @@ -27,7 +27,30 @@ TEST_SUITE("Graph.") { G.insert(8, 9); G.insert(9, 6); + REQUIRE_EQ(G.vertices.size(), 9); + algo::Tarjan tarjan(G); - auto SCCs = tarjan.run(); + auto sccs = tarjan.run(); + } + + TEST_CASE("SCC T2") { + // 1 --> 2 --> 5 --> 7 --> 2 + // 1 --> 4 --> 3 --> 1 + // 4 --> 6 --> 3 + Digraph G; + G.insert(1, 2); + G.insert(1, 4); + G.insert(2, 5); + G.insert(3, 1); + G.insert(4, 3); + G.insert(4, 6); + G.insert(5, 7); + G.insert(6, 3); + G.insert(7, 2); + + REQUIRE_EQ(G.vertices.size(), 7); + + algo::Tarjan tarjan(G); + auto sccs = tarjan.run(); } } \ No newline at end of file