1 | #include "includes.h" |
2 | #include "test_sink.h" |
3 | #include "spdlog/stopwatch.h" |
4 | |
5 | TEST_CASE("stopwatch1" , "[stopwatch]" ) |
6 | { |
7 | using std::chrono::milliseconds; |
8 | using clock = std::chrono::steady_clock; |
9 | milliseconds wait_ms(250); |
10 | milliseconds tolerance_ms(250); |
11 | auto start = clock::now(); |
12 | spdlog::stopwatch sw; |
13 | std::this_thread::sleep_for(wait_ms); |
14 | auto stop = clock::now(); |
15 | auto diff_ms = std::chrono::duration_cast<milliseconds>(stop - start); |
16 | REQUIRE(sw.elapsed() >= diff_ms); |
17 | REQUIRE(sw.elapsed() <= diff_ms + tolerance_ms); |
18 | } |
19 | |
20 | TEST_CASE("stopwatch2" , "[stopwatch]" ) |
21 | { |
22 | using spdlog::sinks::test_sink_st; |
23 | using std::chrono::duration_cast; |
24 | using std::chrono::milliseconds; |
25 | using clock = std::chrono::steady_clock; |
26 | |
27 | clock::duration wait_duration(milliseconds(250)); |
28 | clock::duration tolerance_duration(milliseconds(250)); |
29 | |
30 | auto test_sink = std::make_shared<test_sink_st>(); |
31 | |
32 | auto start = clock::now(); |
33 | spdlog::stopwatch sw; |
34 | spdlog::logger logger("test-stopwatch" , test_sink); |
35 | logger.set_pattern("%v" ); |
36 | std::this_thread::sleep_for(wait_duration); |
37 | auto stop = clock::now(); |
38 | logger.info("{}" , sw); |
39 | auto val = std::stod(test_sink->lines()[0]); |
40 | auto diff_duration = duration_cast<std::chrono::duration<double>>(stop - start); |
41 | |
42 | REQUIRE(val >= diff_duration.count()); |
43 | REQUIRE(val <= (diff_duration + tolerance_duration).count()); |
44 | } |
45 | |