#define WX_TESTPREC_INCLUDED 1
#include "wx/wxprec.h"
+#include "wx/stopwatch.h"
+#include "wx/evtloop.h"
#include "wx/cppunit.h"
// Custom test macro that is only defined when wxUIActionSimulator is available
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))
+ // there are no assertions in this build so we can't do anything (we used
+ // to check that the condition failed but this didn't work well as in
+ // normal build with wxDEBUG_LEVEL != 0 we can pass something not
+ // evaluating to a bool at all but it then would fail to compile in
+ // wxDEBUG_LEVEL == 0 case, so just don't do anything at all now).
+ #define WX_ASSERT_FAILS_WITH_ASSERT(cond)
#endif
+#define WX_ASSERT_EVENT_OCCURS(eventcounter, count) \
+{\
+ wxStopWatch sw; \
+ wxEventLoopBase* loop = wxEventLoopBase::GetActive(); \
+ while(eventcounter.GetCount() < count) \
+ { \
+ if(sw.Time() < 100) \
+ loop->Dispatch(); \
+ else \
+ { \
+ CPPUNIT_FAIL(wxString::Format("timeout reached with %d " \
+ "events received, %d expected", \
+ eventcounter.GetCount(), count).ToStdString()); \
+ break; \
+ } \
+ } \
+ eventcounter.Clear(); \
+}
+
// 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;
extern bool IsNetworkAvailable();
+extern bool IsAutomaticTest();
+
// Helper class setting the locale to the given one for its lifetime.
class LocaleSetter
{
public:
- LocaleSetter(const char *loc) : m_locOld(setlocale(LC_ALL, loc)) { }
- ~LocaleSetter() { setlocale(LC_ALL, m_locOld); }
+ LocaleSetter(const char *loc)
+ : m_locOld(wxStrdupA(setlocale(LC_ALL, NULL)))
+ {
+ setlocale(LC_ALL, loc);
+ }
+
+ ~LocaleSetter()
+ {
+ setlocale(LC_ALL, m_locOld);
+ free(m_locOld);
+ }
private:
- const char * const m_locOld;
+ char * const m_locOld;
wxDECLARE_NO_COPY_CLASS(LocaleSetter);
};