xref: /openbmc/sdeventplus/test/source/base.cpp (revision 4863b96b)
148c42751SWilliam A. Kennington III #include <cerrno>
20a816c5dSWilliam A. Kennington III #include <gmock/gmock.h>
30a816c5dSWilliam A. Kennington III #include <gtest/gtest.h>
4715c72f8SWilliam A. Kennington III #include <memory>
5715c72f8SWilliam A. Kennington III #include <sdeventplus/event.hpp>
665db863eSWilliam A. Kennington III #include <sdeventplus/exception.hpp>
70a816c5dSWilliam A. Kennington III #include <sdeventplus/internal/sdevent.hpp>
80a816c5dSWilliam A. Kennington III #include <sdeventplus/source/base.hpp>
90a816c5dSWilliam A. Kennington III #include <sdeventplus/test/sdevent.hpp>
1065db863eSWilliam A. Kennington III #include <string>
1148c42751SWilliam A. Kennington III #include <system_error>
12715c72f8SWilliam A. Kennington III #include <systemd/sd-event.h>
130a816c5dSWilliam A. Kennington III #include <type_traits>
140a816c5dSWilliam A. Kennington III 
150a816c5dSWilliam A. Kennington III namespace sdeventplus
160a816c5dSWilliam A. Kennington III {
170a816c5dSWilliam A. Kennington III namespace source
180a816c5dSWilliam A. Kennington III {
190a816c5dSWilliam A. Kennington III namespace
200a816c5dSWilliam A. Kennington III {
210a816c5dSWilliam A. Kennington III 
2265db863eSWilliam A. Kennington III using testing::DoAll;
230a816c5dSWilliam A. Kennington III using testing::Return;
2448c42751SWilliam A. Kennington III using testing::SaveArg;
2565db863eSWilliam A. Kennington III using testing::SetArgPointee;
260a816c5dSWilliam A. Kennington III 
270a816c5dSWilliam A. Kennington III class BaseImpl : public Base
280a816c5dSWilliam A. Kennington III {
290a816c5dSWilliam A. Kennington III   public:
30715c72f8SWilliam A. Kennington III     BaseImpl(const Event& event, sd_event_source* source) : Base(event, source)
310a816c5dSWilliam A. Kennington III     {
320a816c5dSWilliam A. Kennington III     }
33715c72f8SWilliam A. Kennington III     BaseImpl(const Event& event, sd_event_source* source, std::false_type) :
34715c72f8SWilliam A. Kennington III         Base(event, source, std::false_type())
350a816c5dSWilliam A. Kennington III     {
360a816c5dSWilliam A. Kennington III     }
370a816c5dSWilliam A. Kennington III };
380a816c5dSWilliam A. Kennington III 
390a816c5dSWilliam A. Kennington III class BaseTest : public testing::Test
400a816c5dSWilliam A. Kennington III {
410a816c5dSWilliam A. Kennington III   protected:
420a816c5dSWilliam A. Kennington III     testing::StrictMock<test::SdEventMock> mock;
43715c72f8SWilliam A. Kennington III     sd_event_source* expected_source = reinterpret_cast<sd_event_source*>(1234);
44715c72f8SWilliam A. Kennington III     sd_event* expected_event = reinterpret_cast<sd_event*>(2345);
45715c72f8SWilliam A. Kennington III     std::unique_ptr<Event> event;
46715c72f8SWilliam A. Kennington III 
47715c72f8SWilliam A. Kennington III     virtual void SetUp()
48715c72f8SWilliam A. Kennington III     {
49715c72f8SWilliam A. Kennington III         event =
50715c72f8SWilliam A. Kennington III             std::make_unique<Event>(expected_event, std::false_type(), &mock);
51715c72f8SWilliam A. Kennington III     }
52715c72f8SWilliam A. Kennington III     virtual void TearDown()
53715c72f8SWilliam A. Kennington III     {
54715c72f8SWilliam A. Kennington III         EXPECT_CALL(mock, sd_event_unref(expected_event))
55715c72f8SWilliam A. Kennington III             .WillOnce(Return(nullptr));
56715c72f8SWilliam A. Kennington III         event.reset();
57715c72f8SWilliam A. Kennington III     }
580a816c5dSWilliam A. Kennington III };
590a816c5dSWilliam A. Kennington III 
600a816c5dSWilliam A. Kennington III TEST_F(BaseTest, NewBaseRef)
610a816c5dSWilliam A. Kennington III {
62715c72f8SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_ref(expected_event))
63715c72f8SWilliam A. Kennington III         .WillOnce(Return(expected_event));
640a816c5dSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_ref(expected_source))
650a816c5dSWilliam A. Kennington III         .WillOnce(Return(expected_source));
66715c72f8SWilliam A. Kennington III     BaseImpl source(*event, expected_source);
67*4863b96bSWilliam A. Kennington III     EXPECT_EQ(expected_source, source.get());
68*4863b96bSWilliam A. Kennington III     EXPECT_NE(event.get(), &source.get_event());
69*4863b96bSWilliam A. Kennington III     EXPECT_EQ(expected_event, source.get_event().get());
700a816c5dSWilliam A. Kennington III 
7165db863eSWilliam A. Kennington III     {
7265db863eSWilliam A. Kennington III         testing::InSequence seq;
7365db863eSWilliam A. Kennington III         EXPECT_CALL(mock,
7465db863eSWilliam A. Kennington III                     sd_event_source_set_enabled(expected_source, SD_EVENT_OFF))
7565db863eSWilliam A. Kennington III             .WillOnce(Return(0));
760a816c5dSWilliam A. Kennington III         EXPECT_CALL(mock, sd_event_source_unref(expected_source))
770a816c5dSWilliam A. Kennington III             .WillOnce(Return(nullptr));
780a816c5dSWilliam A. Kennington III     }
79715c72f8SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_unref(expected_event)).WillOnce(Return(nullptr));
8065db863eSWilliam A. Kennington III }
810a816c5dSWilliam A. Kennington III 
820a816c5dSWilliam A. Kennington III TEST_F(BaseTest, NewBaseNoRef)
830a816c5dSWilliam A. Kennington III {
84715c72f8SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_ref(expected_event))
85715c72f8SWilliam A. Kennington III         .WillOnce(Return(expected_event));
86715c72f8SWilliam A. Kennington III     BaseImpl source(*event, expected_source, std::false_type());
87*4863b96bSWilliam A. Kennington III     EXPECT_EQ(expected_source, source.get());
88*4863b96bSWilliam A. Kennington III     EXPECT_NE(event.get(), &source.get_event());
89*4863b96bSWilliam A. Kennington III     EXPECT_EQ(expected_event, source.get_event().get());
900a816c5dSWilliam A. Kennington III 
9165db863eSWilliam A. Kennington III     {
9265db863eSWilliam A. Kennington III         testing::InSequence seq;
9365db863eSWilliam A. Kennington III         EXPECT_CALL(mock,
9465db863eSWilliam A. Kennington III                     sd_event_source_set_enabled(expected_source, SD_EVENT_OFF))
9565db863eSWilliam A. Kennington III             .WillOnce(Return(0));
960a816c5dSWilliam A. Kennington III         EXPECT_CALL(mock, sd_event_source_unref(expected_source))
970a816c5dSWilliam A. Kennington III             .WillOnce(Return(nullptr));
980a816c5dSWilliam A. Kennington III     }
99715c72f8SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_unref(expected_event)).WillOnce(Return(nullptr));
10065db863eSWilliam A. Kennington III }
10165db863eSWilliam A. Kennington III 
1027c24e057SWilliam A. Kennington III TEST_F(BaseTest, NoSource)
1037c24e057SWilliam A. Kennington III {
1047c24e057SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_ref(expected_event))
1057c24e057SWilliam A. Kennington III         .WillOnce(Return(expected_event));
1067c24e057SWilliam A. Kennington III     BaseImpl source(*event, nullptr, std::false_type());
107*4863b96bSWilliam A. Kennington III     EXPECT_EQ(nullptr, source.get());
108*4863b96bSWilliam A. Kennington III     EXPECT_NE(event.get(), &source.get_event());
109*4863b96bSWilliam A. Kennington III     EXPECT_EQ(expected_event, source.get_event().get());
1107c24e057SWilliam A. Kennington III 
1117c24e057SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_unref(nullptr)).WillOnce(Return(nullptr));
1127c24e057SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_unref(expected_event)).WillOnce(Return(nullptr));
1137c24e057SWilliam A. Kennington III }
1147c24e057SWilliam A. Kennington III 
11565db863eSWilliam A. Kennington III class BaseMethodTest : public BaseTest
11665db863eSWilliam A. Kennington III {
11765db863eSWilliam A. Kennington III   protected:
11865db863eSWilliam A. Kennington III     std::unique_ptr<BaseImpl> base;
11965db863eSWilliam A. Kennington III 
120715c72f8SWilliam A. Kennington III     void SetUp() override
12165db863eSWilliam A. Kennington III     {
122715c72f8SWilliam A. Kennington III         BaseTest::SetUp();
123715c72f8SWilliam A. Kennington III         EXPECT_CALL(mock, sd_event_ref(expected_event))
124715c72f8SWilliam A. Kennington III             .WillOnce(Return(expected_event));
125715c72f8SWilliam A. Kennington III         base = std::make_unique<BaseImpl>(*event, expected_source,
126715c72f8SWilliam A. Kennington III                                           std::false_type());
12765db863eSWilliam A. Kennington III     }
12865db863eSWilliam A. Kennington III 
129715c72f8SWilliam A. Kennington III     void TearDown() override
13065db863eSWilliam A. Kennington III     {
13165db863eSWilliam A. Kennington III         {
13265db863eSWilliam A. Kennington III             testing::InSequence seq;
13365db863eSWilliam A. Kennington III             EXPECT_CALL(mock, sd_event_source_set_enabled(expected_source,
13465db863eSWilliam A. Kennington III                                                           SD_EVENT_OFF))
13565db863eSWilliam A. Kennington III                 .WillOnce(Return(0));
13665db863eSWilliam A. Kennington III             EXPECT_CALL(mock, sd_event_source_unref(expected_source))
13765db863eSWilliam A. Kennington III                 .WillOnce(Return(nullptr));
13865db863eSWilliam A. Kennington III         }
139715c72f8SWilliam A. Kennington III         EXPECT_CALL(mock, sd_event_unref(expected_event))
140715c72f8SWilliam A. Kennington III             .WillOnce(Return(nullptr));
141715c72f8SWilliam A. Kennington III         base.reset();
142715c72f8SWilliam A. Kennington III         BaseTest::TearDown();
14365db863eSWilliam A. Kennington III     }
14465db863eSWilliam A. Kennington III };
14565db863eSWilliam A. Kennington III 
14665db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, GetDescriptionSuccess)
14765db863eSWilliam A. Kennington III {
14865db863eSWilliam A. Kennington III     const char* expected = "test_desc";
14965db863eSWilliam A. Kennington III     EXPECT_CALL(mock,
15065db863eSWilliam A. Kennington III                 sd_event_source_get_description(expected_source, testing::_))
15165db863eSWilliam A. Kennington III         .WillOnce(DoAll(SetArgPointee<1>(expected), Return(0)));
15265db863eSWilliam A. Kennington III     // Intentionally comparing pointers to make sure no copying is happening
15365db863eSWilliam A. Kennington III     EXPECT_EQ(expected, base->get_description());
15465db863eSWilliam A. Kennington III }
15565db863eSWilliam A. Kennington III 
15665db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, GetDescriptionError)
15765db863eSWilliam A. Kennington III {
15865db863eSWilliam A. Kennington III     EXPECT_CALL(mock,
15965db863eSWilliam A. Kennington III                 sd_event_source_get_description(expected_source, testing::_))
16065db863eSWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
16165db863eSWilliam A. Kennington III     EXPECT_THROW(base->get_description(), SdEventError);
16265db863eSWilliam A. Kennington III }
16365db863eSWilliam A. Kennington III 
16465db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, SetDescriptionSuccess)
16565db863eSWilliam A. Kennington III {
16665db863eSWilliam A. Kennington III     const char* expected = "test desc";
16765db863eSWilliam A. Kennington III     // Intentionally comparing pointers to make sure no copying is happening
16865db863eSWilliam A. Kennington III     EXPECT_CALL(mock,
16965db863eSWilliam A. Kennington III                 sd_event_source_set_description(expected_source, expected))
17065db863eSWilliam A. Kennington III         .WillOnce(Return(0));
17165db863eSWilliam A. Kennington III     base->set_description(expected);
17265db863eSWilliam A. Kennington III }
17365db863eSWilliam A. Kennington III 
17465db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, SetDescriptionError)
17565db863eSWilliam A. Kennington III {
17665db863eSWilliam A. Kennington III     const char* expected = "test desc";
17765db863eSWilliam A. Kennington III     // Intentionally comparing pointers to make sure no copying is happening
17865db863eSWilliam A. Kennington III     EXPECT_CALL(mock,
17965db863eSWilliam A. Kennington III                 sd_event_source_set_description(expected_source, expected))
18065db863eSWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
18165db863eSWilliam A. Kennington III     EXPECT_THROW(base->set_description(expected), SdEventError);
18265db863eSWilliam A. Kennington III }
18365db863eSWilliam A. Kennington III 
18448c42751SWilliam A. Kennington III TEST_F(BaseMethodTest, SetPrepareCallback)
18548c42751SWilliam A. Kennington III {
18648c42751SWilliam A. Kennington III     bool completed = false;
18748c42751SWilliam A. Kennington III     Base::Callback callback = [&completed](Base&) { completed = true; };
18848c42751SWilliam A. Kennington III     sd_event_handler_t event_handler;
18948c42751SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
19048c42751SWilliam A. Kennington III         .WillOnce(DoAll(SaveArg<1>(&event_handler), Return(0)));
19148c42751SWilliam A. Kennington III     base->set_prepare(std::move(callback));
19248c42751SWilliam A. Kennington III     EXPECT_FALSE(callback);
19348c42751SWilliam A. Kennington III     EXPECT_FALSE(completed);
19448c42751SWilliam A. Kennington III 
19548c42751SWilliam A. Kennington III     EXPECT_EQ(0, event_handler(nullptr, base.get()));
19648c42751SWilliam A. Kennington III     EXPECT_TRUE(completed);
19748c42751SWilliam A. Kennington III }
19848c42751SWilliam A. Kennington III 
19948c42751SWilliam A. Kennington III TEST_F(BaseMethodTest, SetPrepareCallbackNoUserdata)
20048c42751SWilliam A. Kennington III {
20148c42751SWilliam A. Kennington III     Base::Callback callback = [](Base&) {};
20248c42751SWilliam A. Kennington III     sd_event_handler_t event_handler;
20348c42751SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
20448c42751SWilliam A. Kennington III         .WillOnce(DoAll(SaveArg<1>(&event_handler), Return(0)));
20548c42751SWilliam A. Kennington III     base->set_prepare(std::move(callback));
20648c42751SWilliam A. Kennington III     EXPECT_FALSE(callback);
20748c42751SWilliam A. Kennington III 
20848c42751SWilliam A. Kennington III     EXPECT_EQ(-EINVAL, event_handler(nullptr, nullptr));
20948c42751SWilliam A. Kennington III }
21048c42751SWilliam A. Kennington III 
21148c42751SWilliam A. Kennington III TEST_F(BaseMethodTest, SetPrepareNull)
21248c42751SWilliam A. Kennington III {
21348c42751SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, nullptr))
21448c42751SWilliam A. Kennington III         .WillOnce(Return(0));
21548c42751SWilliam A. Kennington III     base->set_prepare(nullptr);
21648c42751SWilliam A. Kennington III     EXPECT_EQ(-ENOSYS, base->prepareCallback());
21748c42751SWilliam A. Kennington III }
21848c42751SWilliam A. Kennington III 
21948c42751SWilliam A. Kennington III TEST_F(BaseMethodTest, SetPrepareSystemError)
22048c42751SWilliam A. Kennington III {
22148c42751SWilliam A. Kennington III     Base::Callback callback = [](Base&) {
22248c42751SWilliam A. Kennington III         throw std::system_error(EBUSY, std::generic_category());
22348c42751SWilliam A. Kennington III     };
22448c42751SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
22548c42751SWilliam A. Kennington III         .WillOnce(Return(0));
22648c42751SWilliam A. Kennington III     base->set_prepare(std::move(callback));
22748c42751SWilliam A. Kennington III     EXPECT_FALSE(callback);
22848c42751SWilliam A. Kennington III     EXPECT_EQ(-EBUSY, base->prepareCallback());
22948c42751SWilliam A. Kennington III }
23048c42751SWilliam A. Kennington III 
23148c42751SWilliam A. Kennington III TEST_F(BaseMethodTest, SetPrepareUnknownException)
23248c42751SWilliam A. Kennington III {
23348c42751SWilliam A. Kennington III     Base::Callback callback = [](Base&) { throw static_cast<int>(1); };
23448c42751SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
23548c42751SWilliam A. Kennington III         .WillOnce(Return(0));
23648c42751SWilliam A. Kennington III     base->set_prepare(std::move(callback));
23748c42751SWilliam A. Kennington III     EXPECT_FALSE(callback);
23848c42751SWilliam A. Kennington III     EXPECT_EQ(-ENOSYS, base->prepareCallback());
23948c42751SWilliam A. Kennington III }
24048c42751SWilliam A. Kennington III 
24148c42751SWilliam A. Kennington III TEST_F(BaseMethodTest, SetPrepareError)
24248c42751SWilliam A. Kennington III {
24348c42751SWilliam A. Kennington III     Base::Callback callback = [](Base&) {};
24448c42751SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
24548c42751SWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
24648c42751SWilliam A. Kennington III     EXPECT_THROW(base->set_prepare(std::move(callback)), SdEventError);
24748c42751SWilliam A. Kennington III     EXPECT_TRUE(callback);
24848c42751SWilliam A. Kennington III     EXPECT_EQ(-ENOSYS, base->prepareCallback());
24948c42751SWilliam A. Kennington III }
25048c42751SWilliam A. Kennington III 
25165db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, GetPendingSuccess)
25265db863eSWilliam A. Kennington III {
25365db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_get_pending(expected_source))
25465db863eSWilliam A. Kennington III         .WillOnce(Return(0));
25565db863eSWilliam A. Kennington III     EXPECT_EQ(0, base->get_pending());
25665db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_get_pending(expected_source))
25765db863eSWilliam A. Kennington III         .WillOnce(Return(4));
25865db863eSWilliam A. Kennington III     EXPECT_EQ(4, base->get_pending());
25965db863eSWilliam A. Kennington III }
26065db863eSWilliam A. Kennington III 
26165db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, GetPendingError)
26265db863eSWilliam A. Kennington III {
26365db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_get_pending(expected_source))
26465db863eSWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
26565db863eSWilliam A. Kennington III     EXPECT_THROW(base->get_pending(), SdEventError);
26665db863eSWilliam A. Kennington III }
26765db863eSWilliam A. Kennington III 
26865db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, GetPrioritySuccess)
26965db863eSWilliam A. Kennington III {
27065db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_get_priority(expected_source, testing::_))
27165db863eSWilliam A. Kennington III         .WillOnce(DoAll(SetArgPointee<1>(1024), Return(0)));
27265db863eSWilliam A. Kennington III     EXPECT_EQ(1024, base->get_priority());
27365db863eSWilliam A. Kennington III }
27465db863eSWilliam A. Kennington III 
27565db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, GetPriorityError)
27665db863eSWilliam A. Kennington III {
27765db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_get_priority(expected_source, testing::_))
27865db863eSWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
27965db863eSWilliam A. Kennington III     EXPECT_THROW(base->get_priority(), SdEventError);
28065db863eSWilliam A. Kennington III }
28165db863eSWilliam A. Kennington III 
28265db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, SetPrioritySuccess)
28365db863eSWilliam A. Kennington III {
28465db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_priority(expected_source, 1024))
28565db863eSWilliam A. Kennington III         .WillOnce(Return(0));
28665db863eSWilliam A. Kennington III     base->set_priority(1024);
28765db863eSWilliam A. Kennington III }
28865db863eSWilliam A. Kennington III 
28965db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, SetPriorityError)
29065db863eSWilliam A. Kennington III {
29165db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_priority(expected_source, 1024))
29265db863eSWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
29365db863eSWilliam A. Kennington III     EXPECT_THROW(base->set_priority(1024), SdEventError);
29465db863eSWilliam A. Kennington III }
29565db863eSWilliam A. Kennington III 
29665db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, GetEnabledSuccess)
29765db863eSWilliam A. Kennington III {
29865db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_get_enabled(expected_source, testing::_))
29965db863eSWilliam A. Kennington III         .WillOnce(DoAll(SetArgPointee<1>(SD_EVENT_ON), Return(0)));
30065db863eSWilliam A. Kennington III     EXPECT_EQ(SD_EVENT_ON, base->get_enabled());
30165db863eSWilliam A. Kennington III }
30265db863eSWilliam A. Kennington III 
30365db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, GetEnabledError)
30465db863eSWilliam A. Kennington III {
30565db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_get_enabled(expected_source, testing::_))
30665db863eSWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
30765db863eSWilliam A. Kennington III     EXPECT_THROW(base->get_enabled(), SdEventError);
30865db863eSWilliam A. Kennington III }
30965db863eSWilliam A. Kennington III 
31065db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, SetEnabledSuccess)
31165db863eSWilliam A. Kennington III {
31265db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_enabled(expected_source, SD_EVENT_ON))
31365db863eSWilliam A. Kennington III         .WillOnce(Return(0));
31465db863eSWilliam A. Kennington III     base->set_enabled(SD_EVENT_ON);
31565db863eSWilliam A. Kennington III }
31665db863eSWilliam A. Kennington III 
31765db863eSWilliam A. Kennington III TEST_F(BaseMethodTest, SetEnabledError)
31865db863eSWilliam A. Kennington III {
31965db863eSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_source_set_enabled(expected_source, SD_EVENT_ON))
32065db863eSWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
32165db863eSWilliam A. Kennington III     EXPECT_THROW(base->set_enabled(SD_EVENT_ON), SdEventError);
32265db863eSWilliam A. Kennington III }
3230a816c5dSWilliam A. Kennington III 
3240a816c5dSWilliam A. Kennington III } // namespace
3250a816c5dSWilliam A. Kennington III } // namespace source
3260a816c5dSWilliam A. Kennington III } // namespace sdeventplus
327