X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/1c529746ff07312e30e76fd933c628c658e3c77d..646c8fd6c0112573ba2aae7f165f5d48e849831e:/tests/test_async_pool.cpp diff --git a/tests/test_async_pool.cpp b/tests/test_async_pool.cpp new file mode 100644 index 00000000..7e2e0cfe --- /dev/null +++ b/tests/test_async_pool.cpp @@ -0,0 +1,54 @@ +#define BOOST_TEST_MODULE STGSubscriptions + +#include "async_pool.h" + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wold-style-cast" +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wsign-compare" +#pragma GCC diagnostic ignored "-Wparentheses" +#include +#pragma GCC diagnostic pop + +namespace AsyncPoolST = STG::AsyncPoolST; + +namespace +{ + +size_t counter = 0; + +} + +BOOST_AUTO_TEST_SUITE() + +BOOST_AUTO_TEST_CASE(BeforeStart) +{ + BOOST_CHECK_EQUAL(counter, 0); + AsyncPoolST::enqueue([](){ ++counter; }); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + BOOST_CHECK_EQUAL(counter, 0); +} + +BOOST_AUTO_TEST_CASE(AfterStart) +{ + BOOST_CHECK_EQUAL(counter, 0); + AsyncPoolST::start(); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + BOOST_CHECK_EQUAL(counter, 1); + AsyncPoolST::enqueue([](){ ++counter; }); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + BOOST_CHECK_EQUAL(counter, 2); +} + +BOOST_AUTO_TEST_CASE(AfterStop) +{ + BOOST_CHECK_EQUAL(counter, 2); + AsyncPoolST::stop(); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + BOOST_CHECK_EQUAL(counter, 2); + AsyncPoolST::enqueue([](){ ++counter; }); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + BOOST_CHECK_EQUAL(counter, 2); +} + +BOOST_AUTO_TEST_SUITE_END()