diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/base/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/base/platform/unix/TimerTest.cpp | 24 |
2 files changed, 25 insertions, 0 deletions
diff --git a/test/base/CMakeLists.txt b/test/base/CMakeLists.txt index 683c8295..5abba240 100644 --- a/test/base/CMakeLists.txt +++ b/test/base/CMakeLists.txt @@ -25,6 +25,7 @@ target_compile_definitions(CruBaseTest PRIVATE if (UNIX AND NOT EMSCRIPTEN) target_sources(CruBaseTest PRIVATE + platform/unix/TimerTest.cpp platform/unix/UnixFileTest.cpp platform/unix/UnixFileStreamTest.cpp ) diff --git a/test/base/platform/unix/TimerTest.cpp b/test/base/platform/unix/TimerTest.cpp new file mode 100644 index 00000000..261cc6b2 --- /dev/null +++ b/test/base/platform/unix/TimerTest.cpp @@ -0,0 +1,24 @@ +#include "cru/base/platform/unix/Timer.h" + +#include <catch2/catch_test_macros.hpp> + +#include <poll.h> +#include <chrono> + +TEST_CASE("UnixTimerFile Work", "[unix][time]") { + using namespace cru; + using namespace cru::platform::unix; + + auto test_miliseconds = 100; + auto test_duration = std::chrono::milliseconds(test_miliseconds); + auto start = std::chrono::steady_clock::now(); + REQUIRE((std::chrono::steady_clock::now() - start) < test_duration); + + UnixTimerFile timer(test_duration); + + struct pollfd fds[1]; + fds[0].fd = timer.GetReadFd(); + fds[0].events = POLLIN; + REQUIRE(::poll(fds, 1, test_miliseconds * 2) == 1); + REQUIRE((std::chrono::steady_clock::now() - start) > test_duration); +} |