X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fcca30c7e6560839d43a3438dacb08c27fd7e8c0..fdb97de42b8a1491257566fb7bbd343916f1f2b8:/tests/testprec.h?ds=sidebyside diff --git a/tests/testprec.h b/tests/testprec.h index 1ec2054d6b..b5178c8d1e 100644 --- a/tests/testprec.h +++ b/tests/testprec.h @@ -1,40 +1,69 @@ #include "wx/wxprec.h" +#include "wx/cppunit.h" -#include - -// need this to be able to use CPPUNIT_ASSERT_EQUAL with wxString objects -// -// NB: at least for VC7.1 the specialization must be done before cppunit -// headers inclusion as otherwise it's just ignored! -namespace CppUnit -{ +// define wxHAVE_U_ESCAPE if the compiler supports \uxxxx character constants +#if (defined(__VISUALC__) && (__VISUALC__ >= 1300)) || \ + (defined(__GNUC__) && (__GNUC__ >= 3)) + #define wxHAVE_U_ESCAPE -template struct assertion_traits; + // and disable warning that using them results in with MSVC 8+ + #if wxCHECK_VISUALC_VERSION(8) + // universal-character-name encountered in source + #pragma warning(disable:4428) + #endif +#endif -template <> -struct assertion_traits +// thrown when assert fails in debug build +class TestAssertFailure { - static bool equal(const wxString& s1, const wxString& s2) +public: + TestAssertFailure(const wxString& file, + int line, + const wxString& func, + const wxString& cond, + const wxString& msg) + : m_file(file), + m_line(line), + m_func(func), + m_cond(cond), + m_msg(msg) { - return s1 == s2; } - static std::string toString(const wxString& s) - { - return std::string(s.mb_str()); - } + const wxString m_file; + const int m_line; + const wxString m_func; + const wxString m_cond; + const wxString m_msg; + + wxDECLARE_NO_ASSIGN_CLASS(TestAssertFailure); }; -} // namespace CppUnit +// macro to use for the functions which are supposed to fail an assertion +#if wxDEBUG_LEVEL + // some old cppunit versions don't define CPPUNIT_ASSERT_THROW so roll our + // own + #define WX_ASSERT_FAILS_WITH_ASSERT(cond) \ + { \ + bool throwsAssert = false; \ + try { cond ; } \ + catch ( const TestAssertFailure& ) { throwsAssert = true; } \ + if ( !throwsAssert ) \ + CPPUNIT_FAIL("expected assertion not generated"); \ + } +#else + // there are no assertions in this build so just check that it fails + #define WX_ASSERT_FAILS_WITH_ASSERT(cond) CPPUNIT_ASSERT(!(cond)) +#endif -#include "wx/cppunit.h" +// these functions can be used to hook into wxApp event processing and are +// currently used by the events propagation test +class WXDLLIMPEXP_FWD_BASE wxEvent; -// define wxHAVE_U_ESCAPE if the compiler supports \uxxxx character constants -#if (defined(__VISUALC__) && (__VISUALC__ >= 1300)) || \ - (defined(__GNUC__) && (__GNUC__ >= 3)) - #define wxHAVE_U_ESCAPE -#endif +typedef int (*FilterEventFunc)(wxEvent&); +typedef bool (*ProcessEventFunc)(wxEvent&); -#define CPPUNIT_ASSERT_STR_EQUAL(s1, s2) \ - CPPUNIT_ASSERT_EQUAL( wxString(s1), wxString(s2) ) +extern void SetFilterEventFunc(FilterEventFunc func); +extern void SetProcessEventFunc(ProcessEventFunc func); +extern bool IsNetworkAvailable();