Update TestContext to simply provide a generic test run and the input path methods

This commit is contained in:
2024-12-23 18:26:03 +01:00
parent c85cffb992
commit 896d41c561
3 changed files with 28 additions and 39 deletions

View File

@@ -15,49 +15,20 @@
#include <catch2/catch_test_macros.hpp>
#include <aoc/Solver.hpp>
#include <aoc/SolverEngine.hpp>
#include <aoc/HistorianHysteria.hpp>
#include <aocTests/TestContext.hpp>
#define REQUIRE_MESSAGE(cond, msg) if (!(cond)) { INFO(msg); REQUIRE(cond); }
class TestCaseBase
{
public:
TestContext fullDataContext{ getInputPaths() };
TestContext exampleDataContext{ getExampleInputPaths() };
void run(const std::unique_ptr<Solver>&& solver, const long long int expected1,
const long long int expected2, const TestContext& context)
{
SolverEngine solverEngine{ context.getInputPaths() };
solverEngine.run(*solver);
REQUIRE(expected1 == solver->getResultPart1());
REQUIRE(expected2 == solver->getResultPart2());
}
private:
std::vector<std::string> getInputPaths() const
{
return std::vector<std::string>{ "data", "../../../data", "../../../../data" };
}
std::vector<std::string> getExampleInputPaths() const
{
return std::vector<std::string>{ "data/examples", "../../../data/examples",
"../../../../data/examples" };
}
};
TEST_CASE("[HistorianHysteriaTests]")
{
TestCaseBase test;
TestContext test;
SECTION("FullData")
{
test.run(std::make_unique<HistorianHysteria>(), 2176849, 23384288, test.fullDataContext);
test.run(std::make_unique<HistorianHysteria>(), 2176849, 23384288, test.getInputPaths());
}
SECTION("ExampleData")
{
test.run(std::make_unique<HistorianHysteria>(), 11, 31, test.exampleDataContext);
test.run(std::make_unique<HistorianHysteria>(), 11, 31, test.getExampleInputPaths());
}
}

View File

@@ -15,10 +15,27 @@
#include <aocTests/TestContext.hpp>
TestContext::TestContext(std::vector<std::string> inputPaths)
: inputPaths_{ inputPaths } {}
#include <catch2/catch_test_macros.hpp>
#include <aoc/SolverEngine.hpp>
void TestContext::run(const std::unique_ptr<Solver>&& solver, const long long int expected1,
const long long int expected2, const std::vector<std::string>& inputPaths)
{
SolverEngine solverEngine{ inputPaths };
solverEngine.run(*solver);
REQUIRE(expected1 == solver->getResultPart1());
REQUIRE(expected2 == solver->getResultPart2());
}
std::vector<std::string> TestContext::getInputPaths() const
{
return inputPaths_;
return std::vector<std::string>{ "data", "../../../data", "../../../../data" };
}
std::vector<std::string> TestContext::getExampleInputPaths() const
{
return std::vector<std::string>{ "data/examples", "../../../data/examples",
"../../../../data/examples" };
}