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() << ", t2= " << t2.time_since_epoch().count()
27 << ", elapsed= " << (t2 - t1).count() << std::endl;
28
29 pass();
30 }
31
32 void
34 {
35 testcase("manual");
36
38 clock_type c;
39
41
42 auto c1 = c.now().time_since_epoch();
43 c.set(clock_type::time_point(std::chrono::seconds(1)));
44 auto c2 = c.now().time_since_epoch();
45 c.set(clock_type::time_point(std::chrono::seconds(2)));
46 auto c3 = c.now().time_since_epoch();
47
48 log << "[" << c1.count() << "," << c2.count() << "," << c3.count() << "]" << std::endl;
49
50 pass();
51 }
52
53 void
54 run() override
55 {
56 test("steady_clock", get_abstract_clock<std::chrono::steady_clock>());
57 test("system_clock", get_abstract_clock<std::chrono::system_clock>());
58 test("high_resolution_clock", get_abstract_clock<std::chrono::high_resolution_clock>());
59
61 }
62};
63
64BEAST_DEFINE_TESTSUITE_MANUAL(abstract_clock, beast, beast);
65
66} // 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:51
log_os< char > log
Logging output stream.
Definition suite.h:144
void pass()
Record a successful test condition.
Definition suite.h:494
testcase_t testcase
Memberspace for declaring test cases.
Definition suite.h:147
T endl(T... args)
T sleep_for(T... args)