- Removing Catch2 code from codebase, will pull it via FetchContent instead.
- Changing StdOutLogger to OStreamLogger, so that test cases output can be silenced.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
#include "daggy/DAG.hpp"
|
||||
|
||||
#include "catch.hpp"
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
TEST_CASE("DAG Construction Tests", "[dag]") {
|
||||
daggy::DAG dag;
|
||||
@@ -12,28 +12,26 @@ TEST_CASE("DAG Construction Tests", "[dag]") {
|
||||
|
||||
REQUIRE_NOTHROW(dag.addVertex());
|
||||
for (int i = 1; i < 10; ++i) {
|
||||
dag.addVertex();
|
||||
dag.addEdge(i-1, i);
|
||||
dag.addVertex();
|
||||
dag.addEdge(i - 1, i);
|
||||
}
|
||||
|
||||
REQUIRE(dag.size() == 10);
|
||||
REQUIRE(! dag.empty());
|
||||
REQUIRE(!dag.empty());
|
||||
|
||||
// Cannot add an edge that would result in a cycle
|
||||
REQUIRE_THROWS(dag.addEdge(9, 5));
|
||||
|
||||
// Bounds checking
|
||||
SECTION("addEdge Bounds Checking") {
|
||||
REQUIRE_THROWS(dag.addEdge(20, 0));
|
||||
REQUIRE_THROWS(dag.addEdge(0, 20));
|
||||
}
|
||||
SECTION("dropEdge Bounds Checking") {
|
||||
REQUIRE_THROWS(dag.dropEdge(20, 0));
|
||||
REQUIRE_THROWS(dag.dropEdge(0, 20));
|
||||
}
|
||||
SECTION("hasPath Bounds Checking") {
|
||||
REQUIRE_THROWS(dag.hasPath(20, 0));
|
||||
REQUIRE_THROWS(dag.hasPath(0, 20));
|
||||
REQUIRE_THROWS(dag.addEdge(20, 0));
|
||||
REQUIRE_THROWS(dag.addEdge(0, 20));
|
||||
}SECTION("dropEdge Bounds Checking") {
|
||||
REQUIRE_THROWS(dag.dropEdge(20, 0));
|
||||
REQUIRE_THROWS(dag.dropEdge(0, 20));
|
||||
}SECTION("hasPath Bounds Checking") {
|
||||
REQUIRE_THROWS(dag.hasPath(20, 0));
|
||||
REQUIRE_THROWS(dag.hasPath(0, 20));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,36 +49,36 @@ TEST_CASE("DAG Traversal Tests", "[dag]") {
|
||||
4 -------------------------------/ \-----> 9
|
||||
*/
|
||||
|
||||
std::vector<std::pair<int,int>> edges{
|
||||
{0, 6}
|
||||
, {1, 5}
|
||||
, {5, 6}
|
||||
, {6, 7}
|
||||
, {2, 3}
|
||||
, {3, 5}
|
||||
, {4, 7}
|
||||
, {7, 8}
|
||||
, {7, 9}
|
||||
std::vector<std::pair<int, int>> edges{
|
||||
{0, 6},
|
||||
{1, 5},
|
||||
{5, 6},
|
||||
{6, 7},
|
||||
{2, 3},
|
||||
{3, 5},
|
||||
{4, 7},
|
||||
{7, 8},
|
||||
{7, 9}
|
||||
};
|
||||
|
||||
for (auto const [from, to] : edges) {
|
||||
dag.addEdge(from, to);
|
||||
for (auto const[from, to] : edges) {
|
||||
dag.addEdge(from, to);
|
||||
}
|
||||
|
||||
SECTION("Baisc Traversal") {
|
||||
dag.reset();
|
||||
std::vector<int> visitOrder(N_VERTICES);
|
||||
size_t i = 0;
|
||||
while (! dag.allVisited()) {
|
||||
const auto & v = dag.visitNext().value();
|
||||
dag.completeVisit(v);
|
||||
visitOrder[v] = i;
|
||||
++i;
|
||||
}
|
||||
dag.reset();
|
||||
std::vector<int> visitOrder(N_VERTICES);
|
||||
size_t i = 0;
|
||||
while (!dag.allVisited()) {
|
||||
const auto &v = dag.visitNext().value();
|
||||
dag.completeVisit(v);
|
||||
visitOrder[v] = i;
|
||||
++i;
|
||||
}
|
||||
|
||||
// Ensure visit order is preserved
|
||||
for (auto const [from, to] : edges) {
|
||||
REQUIRE(visitOrder[from] <= visitOrder[to]);
|
||||
}
|
||||
// Ensure visit order is preserved
|
||||
for (auto const[from, to] : edges) {
|
||||
REQUIRE(visitOrder[from] <= visitOrder[to]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user