44 lines
902 B
C++
44 lines
902 B
C++
#include <iostream>
|
|
|
|
#include "daggy/DAG.hpp"
|
|
#include "daggy/DAGVisitor.hpp"
|
|
|
|
#include "catch.hpp"
|
|
|
|
TEST_CASE("DAG Construction Tests", "[dag]") {
|
|
daggy::DAG<int> 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<int> 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);
|
|
}
|
|
}
|