X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ef0aeb729dd02e78d8daf56a9380a1cccf317fe5..09b67c660cadef225cbf8f1986cfe591f8feae8c:/include/wx/cppunit.h diff --git a/include/wx/cppunit.h b/include/wx/cppunit.h index 6698891991..e87892b5a2 100644 --- a/include/wx/cppunit.h +++ b/include/wx/cppunit.h @@ -28,13 +28,17 @@ #ifdef __BORLANDC__ #pragma warn -8022 #endif - + +#ifndef CPPUNIT_STD_NEED_ALLOCATOR + #define CPPUNIT_STD_NEED_ALLOCATOR 0 +#endif + /////////////////////////////////////////////////////////////////////////////// // Set the default format for the errors, which can be used by an IDE to jump // to the error location. This default gets overridden by the cppunit headers // for some compilers (e.g. VC++). -#ifndef CPPUNIT_COMPILER_LOCATION_FORMAT +#ifndef CPPUNIT_COMPILER_LOCATION_FORMAT #define CPPUNIT_COMPILER_LOCATION_FORMAT "%p:%l:" #endif @@ -77,18 +81,59 @@ #define WXTEST_FAIL_WITH_CONDITION(suiteName, Condition, testMethod) \ WXTEST_ANY_WITH_CONDITION(suiteName, Condition, testMethod, CPPUNIT_TEST_FAIL(testMethod)) +// Use this macro to compare a wxString with a literal string. +#define WX_ASSERT_STR_EQUAL(p, s) CPPUNIT_ASSERT_EQUAL(wxString(p), s) + +// Use this macro to compare a size_t with a literal integer +#define WX_ASSERT_SIZET_EQUAL(n, m) CPPUNIT_ASSERT_EQUAL(((size_t)n), m) + + +// Use this macro to assert with the given formatted message (it should contain +// the format string and arguments in a separate pair of parentheses) +#define WX_ASSERT_MESSAGE(msg, cond) \ + CPPUNIT_ASSERT_MESSAGE(std::string(wxString::Format msg .mb_str()), (cond)) /////////////////////////////////////////////////////////////////////////////// -// stream inserter for wxString -// +// define stream inserter for wxString if it's not defined in the main library, +// we need it to output the test failures involving wxString +#if !wxUSE_STD_IOSTREAM #include "wx/string.h" +#include + inline std::ostream& operator<<(std::ostream& o, const wxString& s) { - return o << s.mb_str(); +#if wxUSE_UNICODE + return o << (const char *)wxSafeConvertWX2MB(s.wc_str()); +#else + return o << s.c_str(); +#endif +} + +// VC6 doesn't provide overloads for operator<<(__int64) in its stream classes +// so do it ourselves +#if defined(__VISUALC6__) && defined(wxLongLong_t) + +#include "wx/longlong.h" + +inline std::ostream& operator<<(std::ostream& ostr, wxLongLong_t ll) +{ + ostr << wxLongLong(ll).ToString(); + + return ostr; +} + +inline std::ostream& operator<<(std::ostream& ostr, unsigned wxLongLong_t llu) +{ + ostr << wxULongLong(llu).ToString(); + + return ostr; } +#endif // VC6 && wxLongLong_t + +#endif // !wxUSE_STD_IOSTREAM /////////////////////////////////////////////////////////////////////////////// // Some more compiler warning tweaking and auto linking.