• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }