| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        tests/events/stopwatch.cpp
 
- // Purpose:     Test wxStopWatch class
 
- // Author:      Francesco Montorsi (extracted from console sample)
 
- // Created:     2010-05-16
 
- // Copyright:   (c) 2010 wxWidgets team
 
- ///////////////////////////////////////////////////////////////////////////////
 
- // ----------------------------------------------------------------------------
 
- // headers
 
- // ----------------------------------------------------------------------------
 
- #include "testprec.h"
 
- #ifdef __BORLANDC__
 
-     #pragma hdrstop
 
- #endif
 
- #ifndef WX_PRECOMP
 
- #endif // WX_PRECOMP
 
- #include <time.h>
 
- #include "wx/stopwatch.h"
 
- #include "wx/utils.h"
 
- namespace
 
- {
 
- const long tolerance = 50;  // in ms
 
- const int sleepTime = 500;
 
- } // anonymous namespace
 
- // --------------------------------------------------------------------------
 
- // test class
 
- // --------------------------------------------------------------------------
 
- class StopWatchTestCase : public CppUnit::TestCase
 
- {
 
- public:
 
-     StopWatchTestCase() {}
 
- private:
 
-     CPPUNIT_TEST_SUITE( StopWatchTestCase );
 
-         CPPUNIT_TEST( Misc );
 
-         CPPUNIT_TEST( BackwardsClockBug );
 
-         CPPUNIT_TEST( RestartBug );
 
-     CPPUNIT_TEST_SUITE_END();
 
-     void Misc();
 
-     void BackwardsClockBug();
 
-     void RestartBug();
 
-     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 its own registry so that these tests can be run alone
 
- CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StopWatchTestCase, "StopWatchTestCase" );
 
- void StopWatchTestCase::Misc()
 
- {
 
-     wxStopWatch sw;
 
-     long t;
 
-     wxLongLong usec;
 
-     sw.Pause();         // pause it immediately
 
-     // verify that almost no time elapsed
 
-     usec = sw.TimeInMicro();
 
-     WX_ASSERT_MESSAGE
 
-     (
 
-         ("Elapsed time was %" wxLongLongFmtSpec "dus", usec),
 
-         usec < tolerance*1000
 
-     );
 
-     wxSleep(1);
 
-     t = sw.Time();
 
-     // check that the stop watch doesn't advance while paused
 
-     WX_ASSERT_MESSAGE
 
-     (
 
-         ("Actual time value is %ld", t),
 
-         t >= 0 && t < tolerance
 
-     );
 
-     sw.Resume();
 
-     wxMilliSleep(sleepTime);
 
-     t = sw.Time();
 
-     // check that it did advance now by ~1.5s
 
-     WX_ASSERT_MESSAGE
 
-     (
 
-         ("Actual time value is %ld", t),
 
-         t > sleepTime - tolerance && t < sleepTime + tolerance
 
-     );
 
-     sw.Pause();
 
-     // check that this sleep won't be taken into account below
 
-     wxMilliSleep(sleepTime);
 
-     sw.Resume();
 
-     wxMilliSleep(sleepTime);
 
-     t = sw.Time();
 
-     // and it should advance again
 
-     WX_ASSERT_MESSAGE
 
-     (
 
-         ("Actual time value is %ld", t),
 
-         t > 2*sleepTime - tolerance && t < 2*sleepTime + tolerance
 
-     );
 
- }
 
- 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 );
 
-         }
 
-     }
 
- }
 
- void StopWatchTestCase::RestartBug()
 
- {
 
-     wxStopWatch sw;
 
-     sw.Pause();
 
-     // Calling Start() should resume the stopwatch if it was paused.
 
-     static const int offset = 5000;
 
-     sw.Start(offset);
 
-     wxMilliSleep(sleepTime);
 
-     long t = sw.Time();
 
-     WX_ASSERT_MESSAGE
 
-     (
 
-         ("Actual time value is %ld", t),
 
-         t > offset + sleepTime - tolerance &&
 
-             t < offset + sleepTime + tolerance
 
-     );
 
- }
 
 
  |