+#ifndef WX_TESTPREC_INCLUDED
+#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
// -Wundef if it involves an operation with undefined __MINGW_FEATURES__ so
// test for the latter too to avoid it.
#if defined(__VISUALC__) || \
- (defined(__MINGW32__) && !defined(__MINGW_FEATURES__) || !__USE_MINGW_ANSI_STDIO)
+ (defined(__MINGW32__) && \
+ (!defined(__MINGW_FEATURES__) || !__USE_MINGW_ANSI_STDIO))
#define wxUSING_VC_CRT_IO
#endif
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
{
CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ ); \
static CPPUNIT_NS::AutoRegisterSuite< name##TestCase > \
CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterNamedRegistry__ )(#name "TestCase")
+
+#endif