35 lines
761 B
C++
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);
|
|
}
|
|
}
|