diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2021-11-17 22:34:57 +0100 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2021-11-17 22:34:57 +0100 |
| commit | 6232d13f5321b87ddf12a1aa36b4545da45f173d (patch) | |
| tree | 23f3316470a14136debd9d02f9e920ca2b06f4cc /test/test_signal_handler.cc | |
Travel3: Simple image and video display site
Reads the images and videos from filesystem and builds a site in
memroy.
Diffstat (limited to 'test/test_signal_handler.cc')
| -rw-r--r-- | test/test_signal_handler.cc | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/test/test_signal_handler.cc b/test/test_signal_handler.cc new file mode 100644 index 0000000..511ab3c --- /dev/null +++ b/test/test_signal_handler.cc @@ -0,0 +1,63 @@ +#include "common.hh" + +#include "logger.hh" +#include "looper.hh" +#include "signal_handler.hh" + +#include <gtest/gtest.h> + +class SignalHandlerTestFixture : + public testing::TestWithParam<std::pair<SignalHandler::Signal, int>> { +}; + +TEST_P(SignalHandlerTestFixture, raise_before_loop) { + bool called = false; + auto logger = Logger::create_null(); + std::shared_ptr<Looper> looper = Looper::create(); + auto handler = SignalHandler::create(looper, + GetParam().first, + [&called, &looper] { + called = true; + looper->quit(); + }); + raise(GetParam().second); + looper->run(logger.get()); + EXPECT_TRUE(called); +} + +TEST_P(SignalHandlerTestFixture, raise_during_loop) { + bool called = false; + auto logger = Logger::create_null(); + std::shared_ptr<Looper> looper = Looper::create(); + auto handler = SignalHandler::create(looper, + GetParam().first, + [&called, &looper] { + called = true; + looper->quit(); + }); + looper->schedule(0, [] (uint32_t) { raise(GetParam().second); }); + looper->run(logger.get()); + EXPECT_TRUE(called); +} + +TEST_P(SignalHandlerTestFixture, no_raise) { + bool called = false; + auto logger = Logger::create_null(); + std::shared_ptr<Looper> looper = Looper::create(); + auto handler = SignalHandler::create(looper, + GetParam().first, + [&called, &looper] { + called = true; + looper->quit(); + }); + looper->schedule(0, [&looper] (uint32_t) { looper->quit(); }); + looper->run(logger.get()); + EXPECT_FALSE(called); +} + +INSTANTIATE_TEST_SUITE_P( + SignalHandlerTests, + SignalHandlerTestFixture, + testing::Values(std::make_pair(SignalHandler::Signal::INT, SIGINT), + std::make_pair(SignalHandler::Signal::TERM, SIGTERM), + std::make_pair(SignalHandler::Signal::HUP, SIGHUP))); |
