X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/38e5440573cfc2501af256839cfaa17c26ded7ed..787de8404830402133e7635e47b9c14d3b7ad892:/tests/testprec.h diff --git a/tests/testprec.h b/tests/testprec.h index e45b48bb10..3e8ed28a63 100644 --- a/tests/testprec.h +++ b/tests/testprec.h @@ -2,6 +2,8 @@ #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 @@ -85,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; @@ -101,15 +126,26 @@ 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 { 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); };