rippled
Loading...
Searching...
No Matches
beast_abstract_clock_test.cpp
1// MODULES: ../impl/chrono_io.cpp
2
3#include <xrpl/beast/clock/abstract_clock.h>
4#include <xrpl/beast/clock/manual_clock.h>
5#include <xrpl/beast/unit_test.h>
6
7#include <sstream>
8#include <string>
9#include <thread>
10
11namespace beast {
12
14{
15public:
16 template <class Clock>
17 void
19 {
20 testcase(name);
21
22 auto const t1(c.now());
24 auto const t2(c.now());
25
26 log << "t1= " << t1.time_since_epoch().count()
27 << ", t2= " << t2.time_since_epoch().count()
28 << ", elapsed= " << (t2 - t1).count() << std::endl;
29
30 pass();
31 }
32
33 void
35 {
36 testcase("manual");
37
39 clock_type c;
40
42
43 auto c1 = c.now().time_since_epoch();
44 c.set(clock_type::time_point(std::chrono::seconds(1)));
45 auto c2 = c.now().time_since_epoch();
46 c.set(clock_type::time_point(std::chrono::seconds(2)));
47 auto c3 = c.now().time_since_epoch();
48
49 log << "[" << c1.count() << "," << c2.count() << "," << c3.count()
50 << "]" << std::endl;
51
52 pass();
53 }
54
55 void
56 run() override
57 {
58 test("steady_clock", get_abstract_clock<std::chrono::steady_clock>());
59 test("system_clock", get_abstract_clock<std::chrono::system_clock>());
60 test(
61 "high_resolution_clock",
62 get_abstract_clock<std::chrono::high_resolution_clock>());
63
65 }
66};
67
68BEAST_DEFINE_TESTSUITE_MANUAL(abstract_clock, beast, beast);
69
70} // namespace beast
void run() override
Runs the suite.
void test(std::string name, abstract_clock< Clock > &c)
Abstract interface to a clock.
virtual time_point now() const =0
Returns the current time.
Manual clock implementation.
A testsuite class.
Definition suite.h:52
log_os< char > log
Logging output stream.
Definition suite.h:149
void pass()
Record a successful test condition.
Definition suite.h:508
testcase_t testcase
Memberspace for declaring test cases.
Definition suite.h:152
T endl(T... args)
T sleep_for(T... args)