From c85cffb9926ed247ade2ac11d00acea2ad5ae2e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BCller?= Date: Mon, 23 Dec 2024 18:04:59 +0100 Subject: [PATCH] Update test cases to test both parts together The test cases for parts 1 and 2 differ only in the tested condition, not in the tests themselves. This removes the need for derived test context classes. --- tests/include/aocTests/Part1TestContext.hpp | 26 ----------------- tests/include/aocTests/Part2TestContext.hpp | 26 ----------------- tests/include/aocTests/TestContext.hpp | 2 -- tests/src/Part1TestContext.cpp | 24 ---------------- tests/src/Part2TestContext.cpp | 24 ---------------- tests/src/TestCases.cpp | 31 ++++++++------------- 6 files changed, 11 insertions(+), 122 deletions(-) delete mode 100644 tests/include/aocTests/Part1TestContext.hpp delete mode 100644 tests/include/aocTests/Part2TestContext.hpp delete mode 100644 tests/src/Part1TestContext.cpp delete mode 100644 tests/src/Part2TestContext.cpp diff --git a/tests/include/aocTests/Part1TestContext.hpp b/tests/include/aocTests/Part1TestContext.hpp deleted file mode 100644 index 1b50e77..0000000 --- a/tests/include/aocTests/Part1TestContext.hpp +++ /dev/null @@ -1,26 +0,0 @@ -// Solutions to the Advent Of Code 2024. -// Copyright (C) 2024 Stefan Müller -// -// This program is free software: you can redistribute it and/or modify it under -// the terms of the GNU General Public License as published by the Free Software -// Foundation, either version 3 of the License, or (at your option) any later -// version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along with -// this program. If not, see . - -#pragma once - -#include - -class Part1TestContext - : public TestContext -{ -public: - Part1TestContext(std::vector inputPaths); - virtual long long int getResult(Solver& solver) const override; -}; diff --git a/tests/include/aocTests/Part2TestContext.hpp b/tests/include/aocTests/Part2TestContext.hpp deleted file mode 100644 index 80a79d0..0000000 --- a/tests/include/aocTests/Part2TestContext.hpp +++ /dev/null @@ -1,26 +0,0 @@ -// Solutions to the Advent Of Code 2024. -// Copyright (C) 2024 Stefan Müller -// -// This program is free software: you can redistribute it and/or modify it under -// the terms of the GNU General Public License as published by the Free Software -// Foundation, either version 3 of the License, or (at your option) any later -// version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along with -// this program. If not, see . - -#pragma once - -#include - -class Part2TestContext - : public TestContext -{ -public: - Part2TestContext(std::vector inputPaths); - virtual long long int getResult(Solver& solver) const override; -}; diff --git a/tests/include/aocTests/TestContext.hpp b/tests/include/aocTests/TestContext.hpp index 7219fff..93e16e2 100644 --- a/tests/include/aocTests/TestContext.hpp +++ b/tests/include/aocTests/TestContext.hpp @@ -24,9 +24,7 @@ class TestContext { public: TestContext(std::vector inputPaths); - virtual ~TestContext() {}; std::vector getInputPaths() const; - virtual long long int getResult(Solver& solver) const = 0; private: std::vector inputPaths_; }; diff --git a/tests/src/Part1TestContext.cpp b/tests/src/Part1TestContext.cpp deleted file mode 100644 index 260baa4..0000000 --- a/tests/src/Part1TestContext.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// Solutions to the Advent Of Code 2024. -// Copyright (C) 2024 Stefan Müller -// -// This program is free software: you can redistribute it and/or modify it under -// the terms of the GNU General Public License as published by the Free Software -// Foundation, either version 3 of the License, or (at your option) any later -// version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along with -// this program. If not, see . - -#include - -Part1TestContext::Part1TestContext(std::vector inputPaths) - : TestContext{ inputPaths } {} - -long long int Part1TestContext::getResult(Solver& solver) const -{ - return solver.getResultPart1(); -} diff --git a/tests/src/Part2TestContext.cpp b/tests/src/Part2TestContext.cpp deleted file mode 100644 index d5d02b0..0000000 --- a/tests/src/Part2TestContext.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// Solutions to the Advent Of Code 2024. -// Copyright (C) 2024 Stefan Müller -// -// This program is free software: you can redistribute it and/or modify it under -// the terms of the GNU General Public License as published by the Free Software -// Foundation, either version 3 of the License, or (at your option) any later -// version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along with -// this program. If not, see . - -#include - -Part2TestContext::Part2TestContext(std::vector inputPaths) - : TestContext{ inputPaths } {} - -long long int Part2TestContext::getResult(Solver& solver) const -{ - return solver.getResultPart2(); -} diff --git a/tests/src/TestCases.cpp b/tests/src/TestCases.cpp index a8376df..4eec29b 100644 --- a/tests/src/TestCases.cpp +++ b/tests/src/TestCases.cpp @@ -19,24 +19,23 @@ #include #include -#include -#include +#include #define REQUIRE_MESSAGE(cond, msg) if (!(cond)) { INFO(msg); REQUIRE(cond); } class TestCaseBase { public: - Part1TestContext part1TestContext{ getInputPaths() }; - Part2TestContext part2TestContext{ getInputPaths() }; - Part1TestContext part1ExampleTestContext{ getExampleInputPaths() }; - Part2TestContext part2ExampleTestContext{ getExampleInputPaths() }; - void run(std::unique_ptr&& solver, const long long int expected, const TestContext& context) + TestContext fullDataContext{ getInputPaths() }; + TestContext exampleDataContext{ getExampleInputPaths() }; + void run(const std::unique_ptr&& solver, const long long int expected1, + const long long int expected2, const TestContext& context) { SolverEngine solverEngine{ context.getInputPaths() }; solverEngine.run(*solver); - REQUIRE(expected == context.getResult(*solver)); + REQUIRE(expected1 == solver->getResultPart1()); + REQUIRE(expected2 == solver->getResultPart2()); } private: std::vector getInputPaths() const @@ -53,20 +52,12 @@ class TestCaseBase TEST_CASE("[HistorianHysteriaTests]") { TestCaseBase test; - SECTION("FullData1") + SECTION("FullData") { - test.run(std::make_unique(), 2176849, test.part1TestContext); + test.run(std::make_unique(), 2176849, 23384288, test.fullDataContext); } - SECTION("FullData2") + SECTION("ExampleData") { - test.run(std::make_unique(), 23384288, test.part2TestContext); - } - SECTION("ExampleData1") - { - test.run(std::make_unique(), 11, test.part1ExampleTestContext); - } - SECTION("ExampleData2") - { - test.run(std::make_unique(), 31, test.part2ExampleTestContext); + test.run(std::make_unique(), 11, 31, test.exampleDataContext); } }