summaryrefslogtreecommitdiff
path: root/test/test_signal_handler.cc
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2021-11-17 22:34:57 +0100
committerJoel Klinghed <the_jk@spawned.biz>2021-11-17 22:34:57 +0100
commit6232d13f5321b87ddf12a1aa36b4545da45f173d (patch)
tree23f3316470a14136debd9d02f9e920ca2b06f4cc /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.cc63
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)));