|
31 | 31 | #include <cstddef> |
32 | 32 | #include <memory> |
33 | 33 | #include <numeric> |
| 34 | +#include <sstream> |
34 | 35 | #include <unordered_set> |
35 | 36 | #include <utility> |
36 | 37 | #include <vector> |
@@ -152,6 +153,69 @@ TEST(General, GraphAddEdge) { |
152 | 153 | ASSERT_TRUE(optimizer->edges().empty()); |
153 | 154 | } |
154 | 155 |
|
| 156 | +TEST(General, GraphPrintSummary) { |
| 157 | + auto optimizer = g2o::internal::createOptimizerForTests(); |
| 158 | + |
| 159 | + auto v0 = std::make_shared<g2o::VertexSE2>(); |
| 160 | + v0->setId(0); |
| 161 | + auto v1 = std::make_shared<g2o::VertexSE2>(); |
| 162 | + v1->setId(1); |
| 163 | + |
| 164 | + ASSERT_TRUE(optimizer->addVertex(v0)); |
| 165 | + ASSERT_TRUE(optimizer->addVertex(v1)); |
| 166 | + |
| 167 | + auto e0 = std::make_shared<g2o::EdgeSE2>(); |
| 168 | + e0->setVertex(0, v0); |
| 169 | + e0->setVertex(1, v1); |
| 170 | + e0->setLevel(0); |
| 171 | + ASSERT_TRUE(optimizer->addEdge(e0)); |
| 172 | + |
| 173 | + std::ostringstream os; |
| 174 | + optimizer->printGraphSummary(os); |
| 175 | + const std::string summary = os.str(); |
| 176 | + |
| 177 | + EXPECT_NE(summary.find("vertices: 2"), std::string::npos); |
| 178 | + EXPECT_NE(summary.find("edges: 1"), std::string::npos); |
| 179 | + EXPECT_NE(summary.find("levels: 1"), std::string::npos); |
| 180 | + EXPECT_NE(summary.find("connected_components: 1"), std::string::npos); |
| 181 | +} |
| 182 | + |
| 183 | +TEST(General, GraphConnectedComponents) { |
| 184 | + auto optimizer = g2o::internal::createOptimizerForTests(); |
| 185 | + |
| 186 | + auto v0 = std::make_shared<g2o::VertexSE2>(); |
| 187 | + v0->setId(0); |
| 188 | + auto v1 = std::make_shared<g2o::VertexSE2>(); |
| 189 | + v1->setId(1); |
| 190 | + auto v2 = std::make_shared<g2o::VertexSE2>(); |
| 191 | + v2->setId(2); |
| 192 | + |
| 193 | + ASSERT_TRUE(optimizer->addVertex(v0)); |
| 194 | + ASSERT_TRUE(optimizer->addVertex(v1)); |
| 195 | + ASSERT_TRUE(optimizer->addVertex(v2)); |
| 196 | + |
| 197 | + auto e01 = std::make_shared<g2o::EdgeSE2>(); |
| 198 | + e01->setVertex(0, v0); |
| 199 | + e01->setVertex(1, v1); |
| 200 | + e01->setLevel(0); |
| 201 | + ASSERT_TRUE(optimizer->addEdge(e01)); |
| 202 | + |
| 203 | + auto e12 = std::make_shared<g2o::EdgeSE2>(); |
| 204 | + e12->setVertex(0, v1); |
| 205 | + e12->setVertex(1, v2); |
| 206 | + e12->setLevel(1); |
| 207 | + ASSERT_TRUE(optimizer->addEdge(e12)); |
| 208 | + |
| 209 | + EXPECT_FALSE(optimizer->isConnected(0)); |
| 210 | + EXPECT_EQ(optimizer->numConnectedComponents(0), 2); |
| 211 | + |
| 212 | + EXPECT_FALSE(optimizer->isConnected(1)); |
| 213 | + EXPECT_EQ(optimizer->numConnectedComponents(1), 2); |
| 214 | + |
| 215 | + EXPECT_FALSE(optimizer->isConnected(2)); |
| 216 | + EXPECT_EQ(optimizer->numConnectedComponents(2), 3); |
| 217 | +} |
| 218 | + |
155 | 219 | TEST(General, GraphIndexMapping) { |
156 | 220 | auto optimizer = g2o::internal::createOptimizerForTests(); |
157 | 221 |
|
|
0 commit comments