+
+///////////////////////////////////////////////////////////////////////////////
+// Set of helpful test macros.
+//
+
+// Base macro for wrapping CPPUNIT_TEST macros and so making them conditional
+// tests, meaning that the test only get registered and thus run when a given
+// runtime condition is true.
+// In case the condition is evaluated as false a skip message is logged
+// (the message will only be shown in verbose mode).
+#define WXTEST_ANY_WITH_CONDITION(suiteName, Condition, testMethod, anyTest) \
+ if (Condition) \
+ { anyTest; } \
+ else \
+ wxLogInfo(wxString::Format(_T("skipping: %s.%s\n reason: %s equals false\n"), \
+ wxString(suiteName, wxConvUTF8).c_str(), \
+ wxString(#testMethod, wxConvUTF8).c_str(), \
+ wxString(#Condition, wxConvUTF8).c_str()))
+
+// Conditional CPPUNIT_TEST macro.
+#define WXTEST_WITH_CONDITION(suiteName, Condition, testMethod) \
+ WXTEST_ANY_WITH_CONDITION(suiteName, Condition, testMethod, CPPUNIT_TEST(testMethod))
+// Conditional CPPUNIT_TEST_FAIL macro.
+#define WXTEST_FAIL_WITH_CONDITION(suiteName, Condition, testMethod) \
+ WXTEST_ANY_WITH_CONDITION(suiteName, Condition, testMethod, CPPUNIT_TEST_FAIL(testMethod))
+
+
+///////////////////////////////////////////////////////////////////////////////
+// stream inserter for wxString
+//
+
+#include "wx/string.h"
+
+inline std::ostream& operator<<(std::ostream& o, const wxString& s)
+{
+ return o << s.mb_str();
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Some more compiler warning tweaking and auto linking.
+//
+