diff --git a/src/uvw/loop.hpp b/src/uvw/loop.hpp index e2f9baf0..6edc1ba6 100644 --- a/src/uvw/loop.hpp +++ b/src/uvw/loop.hpp @@ -125,7 +125,7 @@ public: return (uv_run(loop.get(), UV_RUN_ONCE) == 0); } - bool runWait() noexcept { + bool runNoWait() noexcept { return (uv_run(loop.get(), UV_RUN_NOWAIT) == 0); } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d20ada5f..8aa9ec2d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -22,6 +22,7 @@ set( set(TARGET_MAIN main) set(TARGET_ASYNC async) +set(TARGET_CHECK check) set(TARGET_LOOP loop) set(TARGET_WORK work) @@ -41,6 +42,14 @@ target_include_directories(${TARGET_ASYNC} PRIVATE ${COMMON_INCLUDE_DIRS}) target_link_libraries(${TARGET_ASYNC} PRIVATE ${COMMON_LINK_LIBS}) add_test(NAME ${TARGET_ASYNC} COMMAND ${TARGET_ASYNC}) +# Test TARGET_CHECK + +set(TARGET_CHECK_SOURCES uvw/check.cpp) +add_executable(${TARGET_CHECK} ${TARGET_CHECK_SOURCES}) +target_include_directories(${TARGET_CHECK} PRIVATE ${COMMON_INCLUDE_DIRS}) +target_link_libraries(${TARGET_CHECK} PRIVATE ${COMMON_LINK_LIBS}) +add_test(NAME ${TARGET_CHECK} COMMAND ${TARGET_CHECK}) + # Test TARGET_LOOP set(TARGET_LOOP_SOURCES uvw/loop.cpp) diff --git a/test/uvw/async.cpp b/test/uvw/async.cpp index aa505177..989b3d0f 100644 --- a/test/uvw/async.cpp +++ b/test/uvw/async.cpp @@ -1,6 +1,7 @@ #include #include + TEST(Async, Send) { auto loop = uvw::Loop::getDefault(); auto handle = loop->resource(); @@ -30,3 +31,21 @@ TEST(Async, Send) { ASSERT_FALSE(checkErrorEvent); ASSERT_TRUE(checkAsyncEvent); } + + +TEST(Async, Fake) { + auto loop = uvw::Loop::getDefault(); + auto handle = loop->resource(); + + auto l = [](const auto &, auto &){ ASSERT_FALSE(true); }; + handle->on(l); + handle->on(l); + + handle->send(); + handle->close(); + + ASSERT_FALSE(handle->active()); + ASSERT_TRUE(handle->closing()); + + loop->run(); +} diff --git a/test/uvw/check.cpp b/test/uvw/check.cpp new file mode 100644 index 00000000..eed61198 --- /dev/null +++ b/test/uvw/check.cpp @@ -0,0 +1,52 @@ +#include +#include + + +TEST(Check, PartiallyDone) { + auto loop = uvw::Loop::getDefault(); + auto handle = loop->resource(); + + bool checkErrorEvent = false; + bool checkCheckEvent = false; + + handle->on([&checkErrorEvent](const uvw::ErrorEvent &, uvw::CheckHandle &){ + ASSERT_FALSE(checkErrorEvent); + checkErrorEvent = true; + }); + + handle->on([&checkCheckEvent](const uvw::CheckEvent &, uvw::CheckHandle &handle){ + ASSERT_FALSE(checkCheckEvent); + checkCheckEvent = true; + handle.stop(); + handle.close(); + ASSERT_TRUE(handle.closing()); + }); + + handle->start(); + + ASSERT_TRUE(handle->active()); + ASSERT_FALSE(handle->closing()); + + loop->runNoWait(); + + ASSERT_FALSE(checkErrorEvent); + ASSERT_TRUE(checkCheckEvent); +} + + +TEST(Check, Fake) { + auto loop = uvw::Loop::getDefault(); + auto handle = loop->resource(); + + auto l = [](const auto &, auto &){ ASSERT_FALSE(true); }; + handle->on(l); + handle->on(l); + + handle->start(); + handle->close(); + + ASSERT_FALSE(handle->active()); + ASSERT_TRUE(handle->closing()); + + loop->run(); +} diff --git a/test/uvw/loop.cpp b/test/uvw/loop.cpp index 8cbc5b90..4d47377c 100644 --- a/test/uvw/loop.cpp +++ b/test/uvw/loop.cpp @@ -43,7 +43,7 @@ TEST(Loop, PartiallyDone) { loop->walk([](uvw::BaseHandle &) { ASSERT_TRUE(false); }); ASSERT_NO_THROW(loop->runOnce()); - ASSERT_NO_THROW(loop->runWait()); + ASSERT_NO_THROW(loop->runNoWait()); ASSERT_FALSE(loop->alive()); }