test_stopwatch.cpp 1.4 KB

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