xrpld
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/suite.h>
6
7#include <chrono>
8#include <ostream>
9#include <string>
10#include <thread>
11
12namespace beast {
13
15{
16public:
17 template <class Clock>
18 void
20 {
21 testcase(name);
22
23 auto const t1(c.now());
25 auto const t2(c.now());
26
27 log << "t1= " << t1.time_since_epoch().count() << ", 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
41 auto c1 = c.now().time_since_epoch();
42 c.set(clock_type::time_point(std::chrono::seconds(1)));
43 auto c2 = c.now().time_since_epoch();
44 c.set(clock_type::time_point(std::chrono::seconds(2)));
45 auto c3 = c.now().time_since_epoch();
46
47 log << "[" << c1.count() << "," << c2.count() << "," << c3.count() << "]" << std::endl;
48
49 pass();
50 }
51
52 void
53 run() override
54 {
58
59 testManual();
60 }
61};
62
64
65} // namespace beast
Abstract interface to a clock.
virtual time_point now() const =0
Returns the current time.
Manual clock implementation.
void test(std::string name, AbstractClock< Clock > &c)
void run() override
Runs the suite.
A testsuite class.
Definition suite.h:50
void pass()
Record a successful test condition.
Definition suite.h:500
LogOs< char > log
Logging output stream.
Definition suite.h:146
TestcaseT testcase
Memberspace for declaring test cases.
Definition suite.h:149
T endl(T... args)
AbstractClock< Facade > & getAbstractClock()
Returns a global instance of an abstract clock.
BEAST_DEFINE_TESTSUITE_MANUAL(abstract_clock, beast, beast)
T sleep_for(T... args)