Bundle libOpenMPT as a dynamic framework, which should be safe once again, now that there is only one version to bundle. Also, now it is using the versions of libvorbisfile and libmpg123 that are bundled with the player, instead of compiling minimp3 and stbvorbis. Signed-off-by: Christopher Snowhill <kode54@gmail.com>
92 lines
1.8 KiB
C++
92 lines
1.8 KiB
C++
/*
|
|
* 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
|