Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* TestToolsTracker.h
|
||||
* ------------------
|
||||
* Purpose: Unit test framework for OpenMPT.
|
||||
* Notes : Really basic functionality that relies on a debugger that catches
|
||||
* exceptions and breaks right at the spot where it gets thrown.
|
||||
* Authors: OpenMPT Devs
|
||||
* The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "openmpt/all/BuildSettings.hpp"
|
||||
|
||||
|
||||
#ifdef ENABLE_TESTS
|
||||
#ifdef MODPLUG_TRACKER
|
||||
|
||||
|
||||
#include "mpt/test/test.hpp"
|
||||
|
||||
|
||||
OPENMPT_NAMESPACE_BEGIN
|
||||
|
||||
|
||||
namespace Test {
|
||||
|
||||
|
||||
#if MPT_COMPILER_MSVC
|
||||
// With MSVC, break directly using __debugbreak intrinsic instead of calling DebugBreak which breaks one stackframe deeper than we want
|
||||
#define MyDebugBreak() __debugbreak()
|
||||
#else
|
||||
#define MyDebugBreak() DebugBreak()
|
||||
#endif
|
||||
|
||||
|
||||
class mpt_test_reporter
|
||||
: public mpt::test::silent_reporter
|
||||
{
|
||||
public:
|
||||
mpt_test_reporter() = default;
|
||||
~mpt_test_reporter() override = default;
|
||||
public:
|
||||
inline void immediate_breakpoint() override {
|
||||
MyDebugBreak();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Verify that given parameters are 'equal'. Break directly into the debugger if not.
|
||||
// The exact meaning of equality is based on operator== of the compared types.
|
||||
#define VERIFY_EQUAL(x,y) \
|
||||
do { \
|
||||
if(!((x) == (y))) { \
|
||||
MyDebugBreak(); \
|
||||
} \
|
||||
} while(0) \
|
||||
/**/
|
||||
|
||||
// Like VERIFY_EQUAL, only differs for libopenmpt
|
||||
#define VERIFY_EQUAL_NONCONT VERIFY_EQUAL
|
||||
|
||||
// Like VERIFY_EQUAL, only differs for libopenmpt
|
||||
#define VERIFY_EQUAL_QUIET_NONCONT VERIFY_EQUAL
|
||||
|
||||
#define VERIFY_EQUAL_EPS(x,y,eps) \
|
||||
do { \
|
||||
if(std::abs((x) - (y)) > (eps)) { \
|
||||
MyDebugBreak(); \
|
||||
} \
|
||||
} while(0) \
|
||||
/**/
|
||||
|
||||
|
||||
#define DO_TEST(func) \
|
||||
do { \
|
||||
if(IsDebuggerPresent()) { \
|
||||
func(); \
|
||||
} \
|
||||
} while(0) \
|
||||
/**/
|
||||
|
||||
|
||||
} // namespace Test
|
||||
|
||||
|
||||
OPENMPT_NAMESPACE_END
|
||||
|
||||
|
||||
#endif // MODPLUG_TRACKER
|
||||
#endif // ENABLE_TESTS
|
Loading…
Add table
Add a link
Reference in a new issue