Files
daggy/tests/unit_dag_visitor.cpp

35 lines
761 B
C++

#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);
}
}