aboutsummaryrefslogtreecommitdiff
path: root/test/base/platform/unix/EventLoopTest.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-09-04 02:06:20 +0800
committerYuqian Yang <crupest@crupest.life>2025-09-04 02:06:20 +0800
commitac3d88fc043d628979675dc3ef99ba5e1b4d58ca (patch)
tree6e122b7a4e119e3535b57df5cb7d17a8e034f46c /test/base/platform/unix/EventLoopTest.cpp
parent1b197ca9997eb407407e508eb199b1e6fae78926 (diff)
downloadcru-ac3d88fc043d628979675dc3ef99ba5e1b4d58ca.tar.gz
cru-ac3d88fc043d628979675dc3ef99ba5e1b4d58ca.tar.bz2
cru-ac3d88fc043d628979675dc3ef99ba5e1b4d58ca.zip
Add unix event loop.
Diffstat (limited to 'test/base/platform/unix/EventLoopTest.cpp')
-rw-r--r--test/base/platform/unix/EventLoopTest.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/base/platform/unix/EventLoopTest.cpp b/test/base/platform/unix/EventLoopTest.cpp
new file mode 100644
index 00000000..f5936b2a
--- /dev/null
+++ b/test/base/platform/unix/EventLoopTest.cpp
@@ -0,0 +1,24 @@
+#include "cru/base/platform/unix/EventLoop.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 = 300;
+ 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);
+}