aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/base/CMakeLists.txt1
-rw-r--r--test/base/platform/unix/TimerTest.cpp24
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);
+}