Adding DAG visitor and some unit tests around its function

This commit is contained in:
Ian Roddis
2021-06-07 11:54:50 -03:00
parent e36b3a2012
commit 2030368c22
6 changed files with 181 additions and 46 deletions

View File

@@ -0,0 +1,34 @@
#include <iostream>
#include "daggy/DAGVisitor.hpp"
#include "catch.hpp"
TEST_CASE("DAG Visitor Tests", "[dagvisitor]") {
daggy::DAG<int> dag;
REQUIRE_NOTHROW(dag.addVertex(0));
for (int i = 1; i < 10; ++i) {
dag.addVertex(i);
dag.addEdge(i-1, i);
}
// Add an edge to make it interesting
dag.addEdge(5, 7);
// for (auto v : dag.getRoots()) std::cout << " " << v << std::endl;
SECTION("Basic traversal") {
daggy::DAGVisitor visitor(dag);
REQUIRE(! visitor.isComplete());
size_t i = 0;
while (! visitor.isComplete()) {
auto id = visitor.visitNext();
REQUIRE(id.has_value());
visitor.completeVisit(id.value());
++i;
}
REQUIRE(i == 10);
}
}