X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c4cb46c1eb6384aa4a6b7e78f2550b4048dc4cba..968b44d37b9fcdc5232fb68312a65e4fc6b5f4ab:/tests/testprec.h diff --git a/tests/testprec.h b/tests/testprec.h index e597e6b9ac..0005f5bb3e 100644 --- a/tests/testprec.h +++ b/tests/testprec.h @@ -1,4 +1,9 @@ +#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 @@ -82,10 +87,33 @@ public: 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; @@ -98,6 +126,8 @@ extern void SetProcessEventFunc(ProcessEventFunc func); extern bool IsNetworkAvailable(); +extern bool IsAutomaticTest(); + // Helper class setting the locale to the given one for its lifetime. class LocaleSetter { @@ -137,3 +167,5 @@ private: CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ ); \ static CPPUNIT_NS::AutoRegisterSuite< name##TestCase > \ CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterNamedRegistry__ )(#name "TestCase") + +#endif