/////////////////////////////////////////////////////////////////////////////// // Name: tests/events/stopwatch.cpp // Purpose: Test wxStopWatch class // Author: Francesco Montorsi (extracted from console sample) // Created: 2010-05-16 // RCS-ID: $Id$ // Copyright: (c) 2010 wxWidgets team /////////////////////////////////////////////////////////////////////////////// // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- #include "testprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #endif // WX_PRECOMP #include #include "wx/stopwatch.h" #include "wx/utils.h" // -------------------------------------------------------------------------- // test class // -------------------------------------------------------------------------- class StopWatchTestCase : public CppUnit::TestCase { public: StopWatchTestCase() {} private: CPPUNIT_TEST_SUITE( StopWatchTestCase ); CPPUNIT_TEST( Misc ); CPPUNIT_TEST( BackwardsClockBug ); CPPUNIT_TEST_SUITE_END(); void Misc(); void BackwardsClockBug(); DECLARE_NO_COPY_CLASS(StopWatchTestCase) }; // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( StopWatchTestCase ); // also include in it's own registry so that these tests can be run alone CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StopWatchTestCase, "StopWatchTestCase" ); void StopWatchTestCase::Misc() { wxStopWatch sw; long tmp; sw.Pause(); // pause it immediately wxSleep(2); tmp = sw.Time(); CPPUNIT_ASSERT(tmp >= 0 && tmp < 100); // should not have counted while paused! sw.Resume(); wxSleep(3); tmp = sw.Time(); CPPUNIT_ASSERT(tmp >= 3000 && tmp < 4000); sw.Pause(); sw.Resume(); wxSleep(2); tmp = sw.Time(); CPPUNIT_ASSERT(tmp >= 5000 && tmp < 6000); } void StopWatchTestCase::BackwardsClockBug() { wxStopWatch sw; wxStopWatch sw2; for ( size_t n = 0; n < 10; n++ ) { sw2.Start(); for ( size_t m = 0; m < 10000; m++ ) { CPPUNIT_ASSERT ( sw.Time() >= 0 && sw2.Time() >= 0 ); } } }