aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-09-03 12:42:10 +0800
committerYuqian Yang <crupest@crupest.life>2025-09-03 21:42:16 +0800
commit4e377b298ff126453270139cb498a43d12f6382d (patch)
tree4d7c43fef658a15462c27008f8c67253d0eb6e34 /test
parentefa1266f10e90c0c46f47cc06645422142cb2d9f (diff)
downloadcru-4e377b298ff126453270139cb498a43d12f6382d.tar.gz
cru-4e377b298ff126453270139cb498a43d12f6382d.tar.bz2
cru-4e377b298ff126453270139cb498a43d12f6382d.zip
UnixTimerFile test.
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);
+}