3f66f6a5b3
This keyword is not expanded by Git which means it's not replaced with the correct revision value in the releases made using git-based scripts and it's confusing to have lines with unexpanded "$Id$" in the released files. As expanding them with Git is not that simple (it could be done with git archive and export-subst attribute) and there are not many benefits in having them in the first place, just remove all these lines. If nothing else, this will make an eventual transition to Git simpler. Closes #14487. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
148 lines
3.8 KiB
C++
148 lines
3.8 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: tests/events/timertest.cpp
|
|
// Purpose: Test wxTimer events
|
|
// Author: Vadim Zeitlin
|
|
// Created: 2008-10-22
|
|
// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// headers
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#include "testprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#ifndef WX_PRECOMP
|
|
#endif // WX_PRECOMP
|
|
|
|
#include <time.h>
|
|
|
|
#include "wx/evtloop.h"
|
|
#include "wx/timer.h"
|
|
|
|
// --------------------------------------------------------------------------
|
|
// helper class counting the number of timer events
|
|
// --------------------------------------------------------------------------
|
|
|
|
class TimerCounterHandler : public wxEvtHandler
|
|
{
|
|
public:
|
|
TimerCounterHandler()
|
|
{
|
|
m_events = 0;
|
|
|
|
Connect(wxEVT_TIMER, wxTimerEventHandler(TimerCounterHandler::OnTimer));
|
|
}
|
|
|
|
int GetNumEvents() const { return m_events; }
|
|
|
|
private:
|
|
void OnTimer(wxTimerEvent& WXUNUSED(event))
|
|
{
|
|
m_events++;
|
|
|
|
Tick();
|
|
}
|
|
|
|
virtual void Tick() { /* nothing to do in the base class */ }
|
|
|
|
int m_events;
|
|
|
|
DECLARE_NO_COPY_CLASS(TimerCounterHandler)
|
|
};
|
|
|
|
// --------------------------------------------------------------------------
|
|
// test class
|
|
// --------------------------------------------------------------------------
|
|
|
|
class TimerEventTestCase : public CppUnit::TestCase
|
|
{
|
|
public:
|
|
TimerEventTestCase() {}
|
|
|
|
private:
|
|
CPPUNIT_TEST_SUITE( TimerEventTestCase );
|
|
CPPUNIT_TEST( OneShot );
|
|
CPPUNIT_TEST( Multiple );
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
|
void OneShot();
|
|
void Multiple();
|
|
|
|
DECLARE_NO_COPY_CLASS(TimerEventTestCase)
|
|
};
|
|
|
|
// register in the unnamed registry so that these tests are run by default
|
|
CPPUNIT_TEST_SUITE_REGISTRATION( TimerEventTestCase );
|
|
|
|
// also include in its own registry so that these tests can be run alone
|
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TimerEventTestCase, "TimerEventTestCase" );
|
|
|
|
void TimerEventTestCase::OneShot()
|
|
{
|
|
class ExitOnTimerHandler : public TimerCounterHandler
|
|
{
|
|
public:
|
|
ExitOnTimerHandler(wxEventLoopBase& loop)
|
|
: TimerCounterHandler(),
|
|
m_loop(loop)
|
|
{
|
|
}
|
|
|
|
private:
|
|
virtual void Tick() { m_loop.Exit(); }
|
|
|
|
wxEventLoopBase& m_loop;
|
|
|
|
// don't use DECLARE_NO_COPY_CLASS() to avoid upsetting MSVC
|
|
};
|
|
|
|
wxEventLoop loop;
|
|
|
|
ExitOnTimerHandler handler(loop);
|
|
wxTimer timer(&handler);
|
|
timer.Start(200, true);
|
|
|
|
loop.Run();
|
|
|
|
CPPUNIT_ASSERT_EQUAL( 1, handler.GetNumEvents() );
|
|
}
|
|
|
|
void TimerEventTestCase::Multiple()
|
|
{
|
|
// FIXME: This test crashes on wxGTK ANSI build slave for unknown reason,
|
|
// disable it here to let the rest of the test suite run until this
|
|
// can be fixed.
|
|
#if !defined(__WXGTK__) || wxUSE_UNICODE
|
|
wxEventLoop loop;
|
|
|
|
TimerCounterHandler handler;
|
|
wxTimer timer(&handler);
|
|
timer.Start(100);
|
|
|
|
// run the loop for 2 seconds
|
|
time_t t;
|
|
time(&t);
|
|
const time_t tEnd = t + 2;
|
|
while ( time(&t) < tEnd )
|
|
{
|
|
loop.Dispatch();
|
|
}
|
|
|
|
// we can't count on getting exactly 20 ticks but we shouldn't get more
|
|
// than this
|
|
const int numTicks = handler.GetNumEvents();
|
|
CPPUNIT_ASSERT( numTicks <= 20 );
|
|
|
|
// and we should get a decent number of them but if the system is very
|
|
// loaded (as happens with build bot slaves running a couple of builds in
|
|
// parallel actually) it may be much less than 20 so just check that we get
|
|
// more than one
|
|
CPPUNIT_ASSERT( numTicks > 1 );
|
|
#endif // !(wxGTK Unicode)
|
|
}
|