diff options
author | Alexander Harkness <me@bearbin.net> | 2015-06-12 12:00:47 +0200 |
---|---|---|
committer | Alexander Harkness <me@bearbin.net> | 2015-06-12 12:00:47 +0200 |
commit | 001305247fa28e78d0f3d9d565ff7aff25864edc (patch) | |
tree | 9f1e41fa0e6afee7ce9f90f3778f02e7a770ebf7 /src/SelfTests.cpp | |
parent | Update gratipay (diff) | |
parent | SelfTests are registered and executed after logging framework init. (diff) | |
download | cuberite-001305247fa28e78d0f3d9d565ff7aff25864edc.tar cuberite-001305247fa28e78d0f3d9d565ff7aff25864edc.tar.gz cuberite-001305247fa28e78d0f3d9d565ff7aff25864edc.tar.bz2 cuberite-001305247fa28e78d0f3d9d565ff7aff25864edc.tar.lz cuberite-001305247fa28e78d0f3d9d565ff7aff25864edc.tar.xz cuberite-001305247fa28e78d0f3d9d565ff7aff25864edc.tar.zst cuberite-001305247fa28e78d0f3d9d565ff7aff25864edc.zip |
Diffstat (limited to 'src/SelfTests.cpp')
-rw-r--r-- | src/SelfTests.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/SelfTests.cpp b/src/SelfTests.cpp new file mode 100644 index 000000000..f03035a76 --- /dev/null +++ b/src/SelfTests.cpp @@ -0,0 +1,71 @@ + +// SelfTests.h + +// Implements the cSelfTests class representing the singleton used for registering self-tests +// This class is only declared if SELF_TEST macro is defined. + +#include "Globals.h" +#include "SelfTests.h" + + + + + +#if SELF_TEST + cSelfTests::cSelfTests(void): + m_AllowRegistering(true) + { + } + + + + + + cSelfTests & cSelfTests::Get(void) + { + static cSelfTests singleton; + return singleton; + } + + + + + + void cSelfTests::Register(cSelfTests::SelfTestFunction a_FnToExecute, const AString & a_TestName) + { + ASSERT(Get().m_AllowRegistering); + Get().m_SelfTests.push_back(std::make_pair(a_FnToExecute, a_TestName)); + } + + + + + + void cSelfTests::ExecuteAll(void) + { + Get().m_AllowRegistering = false; + LOG("--- Performing self-tests ---"); + for (auto & test: Get().m_SelfTests) + { + LOG("Performing self-test: %s", test.second.c_str()); + try + { + test.first(); + } + catch (const std::exception & exc) + { + LOGWARNING("Exception in test %s: %s", test.second.c_str(), exc.what()); + } + catch (...) + { + LOGWARNING("Unknown exception in test %s", test.second.c_str()); + } + } // for test - m_SelfTests[] + LOG("--- Self-tests finished ---"); + } + +#endif // SELF_TEST + + + + |