nucleo_f446re_playground/components/etl/test/UnitTest++/TestRunner.h
Attila Body 11c24647ea
git subrepo clone --branch=20.41.6 git@github.com:ETLCPP/etl.git components/etl
subrepo:
  subdir:   "components/etl"
  merged:   "be5537ec"
upstream:
  origin:   "git@github.com:ETLCPP/etl.git"
  branch:   "20.41.6"
  commit:   "be5537ec"
git-subrepo:
  version:  "0.4.9"
  origin:   "???"
  commit:   "???"
2025-06-11 11:25:49 +02:00

61 lines
1.3 KiB
C++

#ifndef UNITTEST_TESTRUNNER_H
#define UNITTEST_TESTRUNNER_H
#include "Test.h"
#include "TestList.h"
#include "CurrentTest.h"
namespace UnitTest {
class TestReporter;
class TestResults;
class Timer;
UNITTEST_LINKAGE int RunAllTests();
struct True
{
bool operator()(const Test* const) const
{
return true;
}
};
class UNITTEST_LINKAGE TestRunner
{
public:
explicit TestRunner(TestReporter& reporter);
~TestRunner();
template< class Predicate >
int RunTestsIf(TestList const& list, char const* suiteName,
const Predicate& predicate, int maxTestTimeInMs) const
{
Test* curTest = list.GetHead();
while (curTest != 0)
{
if (IsTestInSuite(curTest, suiteName) && predicate(curTest))
RunTest(m_result, curTest, maxTestTimeInMs);
curTest = curTest->m_nextTest;
}
return Finish();
}
TestResults* GetTestResults();
private:
TestReporter* m_reporter;
TestResults* m_result;
Timer* m_timer;
int Finish() const;
bool IsTestInSuite(const Test* const curTest, char const* suiteName) const;
void RunTest(TestResults* const result, Test* const curTest, int const maxTestTimeInMs) const;
};
}
#endif