d390214929
Fixes #2228.
52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
|
|
// SelfTests.h
|
|
|
|
// Declares the cSelfTests class representing the singleton used for registering self-tests
|
|
// This class is only declared if SELF_TEST macro is defined.
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef SELF_TEST
|
|
/** Singleton containing registered self-tests.
|
|
Used to schedule self-tests to run after the logging framework is initialized (#2228). */
|
|
class cSelfTests
|
|
{
|
|
public:
|
|
/** Returns the singleton instance of this class. */
|
|
static cSelfTests & Get(void);
|
|
|
|
// typedef void (* SelfTestFunction)(void);
|
|
typedef std::function<void(void)> SelfTestFunction;
|
|
|
|
/** Registers a self-test to be executed once the logging framework is initialized. */
|
|
static void Register(SelfTestFunction a_FnToExecute, const AString & a_TestName);
|
|
|
|
/** Executes all the registered self-tests. */
|
|
static void ExecuteAll(void);
|
|
|
|
protected:
|
|
typedef std::vector<std::pair<SelfTestFunction, AString>> SelfTestFunctions;
|
|
|
|
/** Functions (registered self-tests) to call once the logging framework is initialized. */
|
|
SelfTestFunctions m_SelfTests;
|
|
|
|
/** If true, tests may be registered. Set to false once the tests are executed, to detect tests that are registered too late. */
|
|
bool m_AllowRegistering;
|
|
|
|
|
|
cSelfTests(void);
|
|
};
|
|
#endif // SELF_TEST
|
|
|
|
|
|
|
|
|