1 #include <errno.h>
2 #include <gtest/gtest.h>
3 #include <signal.h>
4 using namespace testing::ext;
5
6 class SignalSigaddsetTest : public testing::Test {
SetUp()7 void SetUp() override {}
TearDown()8 void TearDown() override {}
9 };
10
SignalHandler(int signum)11 static void SignalHandler(int signum) {}
12
13 /**
14 * @tc.name: sigaddset_001
15 * @tc.desc: Ensure that the "sigaddset" function correctly adds signals to a signal set, and that the "sigaction"
16 * function can be used to set up signal handlers for the specified signals.
17 * @tc.type: FUNC
18 **/
19 HWTEST_F(SignalSigaddsetTest, sigaddset_001, TestSize.Level1)
20 {
21 sigset_t set;
22 sigemptyset(&set);
23
24 EXPECT_EQ(0, sigaddset(&set, SIGINT));
25 EXPECT_EQ(0, sigaddset(&set, SIGTERM));
26 struct sigaction sa;
27 sa.sa_handler = SignalHandler;
28 sa.sa_mask = set;
29 sa.sa_flags = 0;
30 EXPECT_EQ(sigaction(SIGINT, &sa, nullptr), 0);
31 EXPECT_EQ(sigaction(SIGTERM, &sa, nullptr), 0);
32 }
33
34 /**
35 * @tc.name: sigaddset_002
36 * @tc.desc: Verify that sigaddset correctly adds a signal to a signal set and returns the expected results
37 * when given invalid input.
38 * @tc.type: FUNC
39 **/
40 HWTEST_F(SignalSigaddsetTest, sigaddset_002, TestSize.Level1)
41 {
42 sigset_t set;
43 sigemptyset(&set);
44
45 errno = 0;
46 EXPECT_EQ(-1, sigaddset(&set, 0));
47 EXPECT_EQ(EINVAL, errno);
48
49 errno = 0;
50 EXPECT_EQ(-1, sigaddset(&set, NSIG + 1));
51 EXPECT_EQ(EINVAL, errno);
52
53 errno = 0;
54 EXPECT_EQ(0, sigaddset(&set, SIGUSR1));
55 EXPECT_EQ(0, errno);
56 }