]> git.saurik.com Git - wxWidgets.git/blame - tests/events/stopwatch.cpp
Added GIF and animated GIF saving support.
[wxWidgets.git] / tests / events / stopwatch.cpp
CommitLineData
45cb7053
FM
1///////////////////////////////////////////////////////////////////////////////
2// Name: tests/events/stopwatch.cpp
3// Purpose: Test wxStopWatch class
4// Author: Francesco Montorsi (extracted from console sample)
5// Created: 2010-05-16
6// RCS-ID: $Id$
7// Copyright: (c) 2010 wxWidgets team
8///////////////////////////////////////////////////////////////////////////////
9
10
11// ----------------------------------------------------------------------------
12// headers
13// ----------------------------------------------------------------------------
14
15#include "testprec.h"
16
17#ifdef __BORLANDC__
18 #pragma hdrstop
19#endif
20
21#ifndef WX_PRECOMP
22#endif // WX_PRECOMP
23
24#include <time.h>
25
26#include "wx/stopwatch.h"
27#include "wx/utils.h"
28
29// --------------------------------------------------------------------------
30// test class
31// --------------------------------------------------------------------------
32
33class StopWatchTestCase : public CppUnit::TestCase
34{
35public:
36 StopWatchTestCase() {}
37
38private:
39 CPPUNIT_TEST_SUITE( StopWatchTestCase );
40 CPPUNIT_TEST( Misc );
41 CPPUNIT_TEST( BackwardsClockBug );
42 CPPUNIT_TEST_SUITE_END();
43
44 void Misc();
45 void BackwardsClockBug();
46
47 DECLARE_NO_COPY_CLASS(StopWatchTestCase)
48};
49
50// register in the unnamed registry so that these tests are run by default
51CPPUNIT_TEST_SUITE_REGISTRATION( StopWatchTestCase );
52
53// also include in it's own registry so that these tests can be run alone
54CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StopWatchTestCase, "StopWatchTestCase" );
55
56void StopWatchTestCase::Misc()
57{
232fdc63
VZ
58 static const long tolerance = 100; // in ms
59
45cb7053 60 wxStopWatch sw;
232fdc63 61 long t;
45cb7053
FM
62
63 sw.Pause(); // pause it immediately
64
65 wxSleep(2);
232fdc63
VZ
66 t = sw.Time();
67
68 // check that the stop watch doesn't advance while paused
69 WX_ASSERT_MESSAGE
70 (
71 ("Actual time value is %ld", t),
72 t >= 0 && t < tolerance
73 );
45cb7053
FM
74
75 sw.Resume();
76 wxSleep(3);
232fdc63
VZ
77 t = sw.Time();
78 // check that it did advance now by ~3s
79 WX_ASSERT_MESSAGE
80 (
81 ("Actual time value is %ld", t),
82 t > 3000 - tolerance && t < 3000 + tolerance
83 );
45cb7053
FM
84
85 sw.Pause();
86 sw.Resume();
87
88 wxSleep(2);
232fdc63
VZ
89 t = sw.Time();
90
91 // and it should advance again
92 WX_ASSERT_MESSAGE
93 (
94 ("Actual time value is %ld", t),
95 t > 5000 - tolerance && t < 5000 + tolerance
96 );
45cb7053
FM
97}
98
99void StopWatchTestCase::BackwardsClockBug()
100{
101 wxStopWatch sw;
102 wxStopWatch sw2;
103
104 for ( size_t n = 0; n < 10; n++ )
105 {
106 sw2.Start();
107
108 for ( size_t m = 0; m < 10000; m++ )
109 {
110 CPPUNIT_ASSERT ( sw.Time() >= 0 && sw2.Time() >= 0 );
111 }
112 }
113}