Mercurial > irccd
annotate tests/timer/main.cpp @ 276:5795a1769de5
Docs: add more indexes
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 29 Sep 2016 13:09:58 +0200 |
parents | 6635b9187d71 |
children | c6fbb6e0e06d |
rev | line source |
---|---|
0 | 1 /* |
2 * main.cpp -- test irccd timer | |
3 * | |
4 * Copyright (c) 2013-2016 David Demelier <markand@malikania.fr> | |
5 * | |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #include <gtest/gtest.h> | |
20 | |
95
1125d90b3b44
Misc: switch to .hpp, #477
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
21 #include <irccd/elapsed-timer.hpp> |
1125d90b3b44
Misc: switch to .hpp, #477
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
22 #include <irccd/timer.hpp> |
0 | 23 |
24 using namespace irccd; | |
25 using namespace std::chrono_literals; | |
26 | |
27 /* -------------------------------------------------------- | |
28 * Timer object itself | |
29 * -------------------------------------------------------- */ | |
30 | |
31 TEST(Basic, single) | |
32 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
33 Timer timer(TimerType::Single, 1000); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
34 ElapsedTimer elapsed; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
35 int count = 0; |
0 | 36 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
37 timer.onSignal.connect([&] () { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
38 count = elapsed.elapsed(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
39 }); |
0 | 40 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
41 elapsed.reset(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
42 timer.start(); |
0 | 43 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
44 std::this_thread::sleep_for(3s); |
0 | 45 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
46 ASSERT_GE(count, 900); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
47 ASSERT_LE(count, 1100); |
108
af84dd3d585b
Irccd: try to fix errors in timer tests, #486
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
48 |
0 | 49 } |
50 | |
51 TEST(Basic, repeat) | |
52 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
53 Timer timer(TimerType::Repeat, 500); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
54 int max = 0; |
0 | 55 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
56 timer.onSignal.connect([&] () { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
57 max ++; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
58 }); |
0 | 59 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
60 timer.start(); |
0 | 61 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
62 // Should be at least 5 |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
63 std::this_thread::sleep_for(3s); |
0 | 64 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
65 ASSERT_GE(max, 5); |
0 | 66 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
67 timer.stop(); |
0 | 68 } |
69 | |
70 TEST(Basic, restart) | |
71 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
72 Timer timer(TimerType::Repeat, 500); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
73 int max = 0; |
0 | 74 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
75 timer.onSignal.connect([&] () { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
76 max ++; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
77 }); |
0 | 78 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
79 timer.start(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
80 std::this_thread::sleep_for(3s); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
81 timer.stop(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
82 std::this_thread::sleep_for(3s); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
83 timer.start(); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
84 std::this_thread::sleep_for(3s); |
0 | 85 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
86 ASSERT_GE(max, 10); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
87 ASSERT_LT(max, 15); |
0 | 88 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
89 timer.stop(); |
0 | 90 } |
91 | |
92 int main(int argc, char **argv) | |
93 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
94 testing::InitGoogleTest(&argc, argv); |
0 | 95 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
108
diff
changeset
|
96 return RUN_ALL_TESTS(); |
0 | 97 } |