#include #include "daggy/DAG.hpp" #include "daggy/DAGVisitor.hpp" #include "catch.hpp" TEST_CASE("DAG Construction Tests", "[dag]") { daggy::DAG dag; REQUIRE(dag.size() == 0); REQUIRE(dag.empty()); REQUIRE_NOTHROW(dag.addVertex(0)); for (int i = 1; i < 10; ++i) { dag.addVertex(i); dag.addEdge(i-1, i); } REQUIRE(dag.getRoots().size() == 1); REQUIRE(dag.size() == 10); REQUIRE(! dag.empty()); // Cannot add an edge that would result in a cycle REQUIRE_THROWS(dag.addEdge(9, 5)); } TEST_CASE("DAG Basic Tests", "[dag]") { daggy::DAG dag; dag.addVertex(0); for (int i = 1; i < 10; ++i) { dag.addVertex(i); dag.addEdge(i-1, i); } SECTION("Pathing") { REQUIRE(dag.shortestPath(0,9).size() == 10); dag.addEdge(5, 9); REQUIRE(dag.shortestPath(0,9).size() == 7); } }