diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/Makefile.am | 8 | ||||
| -rw-r--r-- | test/placeholder.cpp | 5 | ||||
| -rw-r--r-- | test/signal.cpp | 62 |
3 files changed, 66 insertions, 9 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index c67e07a..1c4a5a1 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -7,7 +7,7 @@ gtest_ldadd = $(STDPLUS_LIBS) $(GTEST_LIBS) $(GMOCK_LIBS) -lgmock_main check_PROGRAMS = TESTS = $(check_PROGRAMS) -check_PROGRAMS += placeholder -placeholder_SOURCES = placeholder.cpp -placeholder_CPPFLAGS = $(gtest_cppflags) -placeholder_LDADD = $(gtest_ldadd) +check_PROGRAMS += signal +signal_SOURCES = signal.cpp +signal_CPPFLAGS = $(gtest_cppflags) +signal_LDADD = $(gtest_ldadd) diff --git a/test/placeholder.cpp b/test/placeholder.cpp deleted file mode 100644 index 782277f..0000000 --- a/test/placeholder.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include <gtest/gtest.h> - -TEST(PlaceholderTest, None) -{ -} diff --git a/test/signal.cpp b/test/signal.cpp new file mode 100644 index 0000000..6389cd8 --- /dev/null +++ b/test/signal.cpp @@ -0,0 +1,62 @@ +#include <cstring> +#include <gtest/gtest.h> +#include <signal.h> +#include <stdplus/signal.hpp> + +namespace stdplus +{ +namespace signal +{ +namespace +{ + +TEST(SignalTest, BlockSignal) +{ + constexpr int s = SIGINT; + constexpr int otherS = SIGTERM; + constexpr int notBlocked = SIGPROF; + + sigset_t expectedSet; + EXPECT_EQ(0, sigprocmask(SIG_BLOCK, nullptr, &expectedSet)); + EXPECT_EQ(0, sigaddset(&expectedSet, otherS)); + EXPECT_EQ(0, sigprocmask(SIG_BLOCK, &expectedSet, nullptr)); + EXPECT_EQ(0, sigismember(&expectedSet, notBlocked)); + EXPECT_EQ(0, sigismember(&expectedSet, s)); + EXPECT_EQ(0, sigaddset(&expectedSet, s)); + + block(s); + + sigset_t newSet; + EXPECT_EQ(0, sigprocmask(SIG_BLOCK, nullptr, &newSet)); + EXPECT_EQ(sigismember(&expectedSet, s), sigismember(&newSet, s)); + EXPECT_EQ(sigismember(&expectedSet, otherS), sigismember(&newSet, otherS)); + EXPECT_EQ(sigismember(&expectedSet, notBlocked), + sigismember(&newSet, notBlocked)); +} + +TEST(SignalTest, KeepBlockSignal) +{ + constexpr int s = SIGINT; + constexpr int otherS = SIGTERM; + constexpr int notBlocked = SIGPROF; + + sigset_t expectedSet; + EXPECT_EQ(0, sigprocmask(SIG_BLOCK, nullptr, &expectedSet)); + EXPECT_EQ(0, sigaddset(&expectedSet, s)); + EXPECT_EQ(0, sigaddset(&expectedSet, otherS)); + EXPECT_EQ(0, sigismember(&expectedSet, notBlocked)); + EXPECT_EQ(0, sigprocmask(SIG_BLOCK, &expectedSet, nullptr)); + + block(s); + + sigset_t newSet; + EXPECT_EQ(0, sigprocmask(SIG_BLOCK, nullptr, &newSet)); + EXPECT_EQ(sigismember(&expectedSet, s), sigismember(&newSet, s)); + EXPECT_EQ(sigismember(&expectedSet, otherS), sigismember(&newSet, otherS)); + EXPECT_EQ(sigismember(&expectedSet, notBlocked), + sigismember(&newSet, notBlocked)); +} + +} // namespace +} // namespace signal +} // namespace stdplus |

