X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bad631840c464e6b8623e47f06c26ee52511ab35..aaf5f98682223a5ceb3496e7a25865ad791e8ab7:/include/wx/cppunit.h diff --git a/include/wx/cppunit.h b/include/wx/cppunit.h index b44daff6dd..7d608a63ca 100644 --- a/include/wx/cppunit.h +++ b/include/wx/cppunit.h @@ -48,15 +48,24 @@ // #include "wx/beforestd.h" +#ifdef __VISUALC__ + // with cppunit 1.12 we get many bogus warnings 4701 (local variable may be + // used without having been initialized) in TestAssert.h + #pragma warning(disable:4701) +#endif + #include #include #include #include #include + +#ifdef __VISUALC__ + #pragma warning(default:4701) +#endif #include "wx/afterstd.h" #include "wx/string.h" -#include "wx/filefn.h" // for wxFileOffset /////////////////////////////////////////////////////////////////////////////// @@ -72,7 +81,7 @@ if (Condition) \ { anyTest; } \ else \ - wxLogInfo(wxString::Format(_T("skipping: %s.%s\n reason: %s equals false\n"), \ + wxLogInfo(wxString::Format(wxT("skipping: %s.%s\n reason: %s equals false\n"), \ wxString(suiteName, wxConvUTF8).c_str(), \ wxString(#testMethod, wxConvUTF8).c_str(), \ wxString(#Condition, wxConvUTF8).c_str())) @@ -88,6 +97,15 @@ CPPUNIT_NS_BEGIN // provide an overload of cppunit assertEquals(T, T) which can be used to // compare wxStrings directly with C strings +inline void +assertEquals(const char *expected, + const char *actual, + CppUnit::SourceLine sourceLine, + const std::string& message) +{ + assertEquals(wxString(expected), wxString(actual), sourceLine, message); +} + inline void assertEquals(const char *expected, const wxString& actual, @@ -97,6 +115,15 @@ assertEquals(const char *expected, assertEquals(wxString(expected), actual, sourceLine, message); } +inline void +assertEquals(const wxString& expected, + const char *actual, + CppUnit::SourceLine sourceLine, + const std::string& message) +{ + assertEquals(expected, wxString(actual), sourceLine, message); +} + inline void assertEquals(const wchar_t *expected, const wxString& actual, @@ -106,6 +133,19 @@ assertEquals(const wchar_t *expected, assertEquals(wxString(expected), actual, sourceLine, message); } +inline void +assertEquals(const wxString& expected, + const wchar_t *actual, + CppUnit::SourceLine sourceLine, + const std::string& message) +{ + assertEquals(expected, wxString(actual), sourceLine, message); +} + +CPPUNIT_NS_END + +// define an assertEquals() overload for the given types, this is a helper and +// shouldn't be used directly because of VC6 complications, see below #define WX_CPPUNIT_ASSERT_EQUALS(T1, T2) \ inline void \ assertEquals(T1 expected, \ @@ -122,26 +162,42 @@ assertEquals(const wchar_t *expected, } \ } -// and another to be able to specify (usually literal) ints as expected values -// for functions returning size_t/long/wxFileOffset -WX_CPPUNIT_ASSERT_EQUALS(int, long) -WX_CPPUNIT_ASSERT_EQUALS(int, size_t) -WX_CPPUNIT_ASSERT_EQUALS(int, wxFileOffset) +// this macro allows us to specify (usually literal) ints as expected values +// for functions returning integral types different from "int" +// +// FIXME-VC6: due to incorrect resolution of overloaded/template functions in +// this compiler (it basically doesn't use the template version at +// all if any overloaded function matches partially even if none of +// them matches fully) we also need to provide extra overloads -// special section with VC6 workarounds: due to incorrect resolution of -// overloaded/template functions in this compiler (it basically doesn't use the -// template version at all if any overloaded function matches partially even if -// none of them matches fully) we also need #ifdef __VISUALC6__ - -WX_CPPUNIT_ASSERT_EQUALS(int, int) -WX_CPPUNIT_ASSERT_EQUALS(long, long) -WX_CPPUNIT_ASSERT_EQUALS(size_t, size_t) -WX_CPPUNIT_ASSERT_EQUALS(wxFileOffset, wxFileOffset) - -#endif // VC6 - -CPPUNIT_NS_END + #define WX_CPPUNIT_ALLOW_EQUALS_TO_INT(T) \ + CPPUNIT_NS_BEGIN \ + WX_CPPUNIT_ASSERT_EQUALS(int, T) \ + WX_CPPUNIT_ASSERT_EQUALS(T, int) \ + WX_CPPUNIT_ASSERT_EQUALS(T, T) \ + CPPUNIT_NS_END + + CPPUNIT_NS_BEGIN + WX_CPPUNIT_ASSERT_EQUALS(int, int) + CPPUNIT_NS_END +#else // !VC6 + #define WX_CPPUNIT_ALLOW_EQUALS_TO_INT(T) \ + CPPUNIT_NS_BEGIN \ + WX_CPPUNIT_ASSERT_EQUALS(int, T) \ + WX_CPPUNIT_ASSERT_EQUALS(T, int) \ + CPPUNIT_NS_END +#endif // VC6/!VC6 + +WX_CPPUNIT_ALLOW_EQUALS_TO_INT(long) +WX_CPPUNIT_ALLOW_EQUALS_TO_INT(short) +WX_CPPUNIT_ALLOW_EQUALS_TO_INT(unsigned) +WX_CPPUNIT_ALLOW_EQUALS_TO_INT(unsigned long) + +#if defined(wxLongLong_t) && !defined(wxLongLongIsLong) +WX_CPPUNIT_ALLOW_EQUALS_TO_INT(wxLongLong_t) +WX_CPPUNIT_ALLOW_EQUALS_TO_INT(unsigned wxLongLong_t) +#endif // Use this macro to compare a wxArrayString with the pipe-separated elements // of the given string