xref: /openbmc/sdeventplus/test/event.cpp (revision 18db9a3e)
18f90e28bSWilliam A. Kennington III #include <sdeventplus/event.hpp>
28f90e28bSWilliam A. Kennington III #include <sdeventplus/exception.hpp>
38f90e28bSWilliam A. Kennington III #include <sdeventplus/test/sdevent.hpp>
4a8c11e3cSPatrick Williams 
5a8c11e3cSPatrick Williams #include <memory>
6a8c11e3cSPatrick Williams #include <optional>
78f90e28bSWilliam A. Kennington III #include <type_traits>
88f90e28bSWilliam A. Kennington III 
9a8c11e3cSPatrick Williams #include <gmock/gmock.h>
10a8c11e3cSPatrick Williams #include <gtest/gtest.h>
11a8c11e3cSPatrick Williams 
128f90e28bSWilliam A. Kennington III namespace sdeventplus
138f90e28bSWilliam A. Kennington III {
148f90e28bSWilliam A. Kennington III namespace
158f90e28bSWilliam A. Kennington III {
168f90e28bSWilliam A. Kennington III 
178f90e28bSWilliam A. Kennington III using testing::DoAll;
188f90e28bSWilliam A. Kennington III using testing::Return;
198f90e28bSWilliam A. Kennington III using testing::SetArgPointee;
208f90e28bSWilliam A. Kennington III 
218f90e28bSWilliam A. Kennington III class EventTest : public testing::Test
228f90e28bSWilliam A. Kennington III {
238f90e28bSWilliam A. Kennington III   protected:
240a816c5dSWilliam A. Kennington III     testing::StrictMock<test::SdEventMock> mock;
258f90e28bSWilliam A. Kennington III     sd_event* const expected_event = reinterpret_cast<sd_event*>(1234);
268f90e28bSWilliam A. Kennington III };
278f90e28bSWilliam A. Kennington III 
TEST_F(EventTest,NewEventRef)288f90e28bSWilliam A. Kennington III TEST_F(EventTest, NewEventRef)
298f90e28bSWilliam A. Kennington III {
308f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_ref(expected_event))
318f90e28bSWilliam A. Kennington III         .WillOnce(Return(expected_event));
328f90e28bSWilliam A. Kennington III     Event event(expected_event, &mock);
33bdc59018SWilliam A. Kennington III     EXPECT_EQ(&mock, event.getSdEvent());
34bdc59018SWilliam A. Kennington III     EXPECT_EQ(expected_event, event.get());
358f90e28bSWilliam A. Kennington III 
368f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_unref(expected_event)).WillOnce(Return(nullptr));
378f90e28bSWilliam A. Kennington III }
388f90e28bSWilliam A. Kennington III 
TEST_F(EventTest,NewEventNoRef)398f90e28bSWilliam A. Kennington III TEST_F(EventTest, NewEventNoRef)
408f90e28bSWilliam A. Kennington III {
418f90e28bSWilliam A. Kennington III     Event event(expected_event, std::false_type(), &mock);
42bdc59018SWilliam A. Kennington III     EXPECT_EQ(&mock, event.getSdEvent());
43bdc59018SWilliam A. Kennington III     EXPECT_EQ(expected_event, event.get());
448f90e28bSWilliam A. Kennington III 
458f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_unref(expected_event)).WillOnce(Return(nullptr));
468f90e28bSWilliam A. Kennington III }
478f90e28bSWilliam A. Kennington III 
TEST_F(EventTest,CopyEventNoOwn)48e68f5b51SWilliam A. Kennington III TEST_F(EventTest, CopyEventNoOwn)
49e68f5b51SWilliam A. Kennington III {
50e68f5b51SWilliam A. Kennington III     Event event(expected_event, std::false_type(), &mock);
51e68f5b51SWilliam A. Kennington III     EXPECT_EQ(&mock, event.getSdEvent());
52e68f5b51SWilliam A. Kennington III     EXPECT_EQ(expected_event, event.get());
53e68f5b51SWilliam A. Kennington III 
54e68f5b51SWilliam A. Kennington III     Event event_noown(event, sdeventplus::internal::NoOwn());
55e68f5b51SWilliam A. Kennington III     EXPECT_EQ(&mock, event_noown.getSdEvent());
56e68f5b51SWilliam A. Kennington III     EXPECT_EQ(expected_event, event_noown.get());
57e68f5b51SWilliam A. Kennington III 
58e68f5b51SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_unref(expected_event)).WillOnce(Return(nullptr));
59e68f5b51SWilliam A. Kennington III }
60e68f5b51SWilliam A. Kennington III 
TEST_F(EventTest,CopyEventNoOwnCopy)61e68f5b51SWilliam A. Kennington III TEST_F(EventTest, CopyEventNoOwnCopy)
62e68f5b51SWilliam A. Kennington III {
63e68f5b51SWilliam A. Kennington III     Event event(expected_event, std::false_type(), &mock);
64e68f5b51SWilliam A. Kennington III     EXPECT_EQ(&mock, event.getSdEvent());
65e68f5b51SWilliam A. Kennington III     EXPECT_EQ(expected_event, event.get());
66e68f5b51SWilliam A. Kennington III 
67e68f5b51SWilliam A. Kennington III     Event event_noown(event, sdeventplus::internal::NoOwn());
68e68f5b51SWilliam A. Kennington III     EXPECT_EQ(&mock, event_noown.getSdEvent());
69e68f5b51SWilliam A. Kennington III     EXPECT_EQ(expected_event, event_noown.get());
70e68f5b51SWilliam A. Kennington III 
71e68f5b51SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_ref(expected_event))
72e68f5b51SWilliam A. Kennington III         .WillOnce(Return(expected_event));
73e68f5b51SWilliam A. Kennington III     Event event2(event_noown);
74e68f5b51SWilliam A. Kennington III     EXPECT_EQ(&mock, event2.getSdEvent());
75e68f5b51SWilliam A. Kennington III     EXPECT_EQ(expected_event, event2.get());
76e68f5b51SWilliam A. Kennington III 
77e68f5b51SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_unref(expected_event))
78e68f5b51SWilliam A. Kennington III         .WillOnce(Return(nullptr))
79e68f5b51SWilliam A. Kennington III         .WillOnce(Return(nullptr));
80e68f5b51SWilliam A. Kennington III }
81e68f5b51SWilliam A. Kennington III 
TEST_F(EventTest,GetNewEvent)828f90e28bSWilliam A. Kennington III TEST_F(EventTest, GetNewEvent)
838f90e28bSWilliam A. Kennington III {
848f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_new(testing::_))
858f90e28bSWilliam A. Kennington III         .WillOnce(DoAll(SetArgPointee<0>(expected_event), Return(0)));
868f90e28bSWilliam A. Kennington III     Event event = Event::get_new(&mock);
87bdc59018SWilliam A. Kennington III     EXPECT_EQ(&mock, event.getSdEvent());
88bdc59018SWilliam A. Kennington III     EXPECT_EQ(expected_event, event.get());
898f90e28bSWilliam A. Kennington III 
908f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_unref(expected_event)).WillOnce(Return(nullptr));
918f90e28bSWilliam A. Kennington III }
928f90e28bSWilliam A. Kennington III 
TEST_F(EventTest,GetNewEventFail)938f90e28bSWilliam A. Kennington III TEST_F(EventTest, GetNewEventFail)
948f90e28bSWilliam A. Kennington III {
958f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_new(testing::_)).WillOnce(Return(-EINVAL));
968f90e28bSWilliam A. Kennington III     EXPECT_THROW(Event::get_new(&mock), SdEventError);
978f90e28bSWilliam A. Kennington III }
988f90e28bSWilliam A. Kennington III 
TEST_F(EventTest,GetDefaultEvent)998f90e28bSWilliam A. Kennington III TEST_F(EventTest, GetDefaultEvent)
1008f90e28bSWilliam A. Kennington III {
1018f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_default(testing::_))
1028f90e28bSWilliam A. Kennington III         .WillOnce(DoAll(SetArgPointee<0>(expected_event), Return(0)));
1038f90e28bSWilliam A. Kennington III     Event event = Event::get_default(&mock);
104bdc59018SWilliam A. Kennington III     EXPECT_EQ(&mock, event.getSdEvent());
105bdc59018SWilliam A. Kennington III     EXPECT_EQ(expected_event, event.get());
1068f90e28bSWilliam A. Kennington III 
1078f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_unref(expected_event)).WillOnce(Return(nullptr));
1088f90e28bSWilliam A. Kennington III }
1098f90e28bSWilliam A. Kennington III 
TEST_F(EventTest,GetDefaultEventFail)1108f90e28bSWilliam A. Kennington III TEST_F(EventTest, GetDefaultEventFail)
1118f90e28bSWilliam A. Kennington III {
1128f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_default(testing::_)).WillOnce(Return(-EINVAL));
1138f90e28bSWilliam A. Kennington III     EXPECT_THROW(Event::get_default(&mock), SdEventError);
1148f90e28bSWilliam A. Kennington III }
1158f90e28bSWilliam A. Kennington III 
116631c2460SWilliam A. Kennington III class EventMethodTest : public EventTest
1178f90e28bSWilliam A. Kennington III {
118631c2460SWilliam A. Kennington III   protected:
119631c2460SWilliam A. Kennington III     std::unique_ptr<Event> event;
120631c2460SWilliam A. Kennington III 
SetUp()121631c2460SWilliam A. Kennington III     void SetUp()
122631c2460SWilliam A. Kennington III     {
123*18db9a3eSPatrick Williams         event =
124*18db9a3eSPatrick Williams             std::make_unique<Event>(expected_event, std::false_type(), &mock);
1258f90e28bSWilliam A. Kennington III     }
1268f90e28bSWilliam A. Kennington III 
TearDown()127631c2460SWilliam A. Kennington III     void TearDown()
128631c2460SWilliam A. Kennington III     {
129631c2460SWilliam A. Kennington III         EXPECT_CALL(mock, sd_event_unref(expected_event))
130631c2460SWilliam A. Kennington III             .WillOnce(Return(nullptr));
131631c2460SWilliam A. Kennington III     }
132631c2460SWilliam A. Kennington III };
133631c2460SWilliam A. Kennington III 
TEST_F(EventMethodTest,PrepareSuccessNone)134fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, PrepareSuccessNone)
135fe059910SWilliam A. Kennington III {
136fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_prepare(expected_event)).WillOnce(Return(0));
137fe059910SWilliam A. Kennington III     EXPECT_EQ(0, event->prepare());
138fe059910SWilliam A. Kennington III }
139fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,PrepareSuccessReady)140fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, PrepareSuccessReady)
141fe059910SWilliam A. Kennington III {
142fe059910SWilliam A. Kennington III     const int events_ready = 10;
143fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_prepare(expected_event))
144fe059910SWilliam A. Kennington III         .WillOnce(Return(events_ready));
145fe059910SWilliam A. Kennington III     EXPECT_EQ(events_ready, event->prepare());
146fe059910SWilliam A. Kennington III }
147fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,PrepareInternalError)148fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, PrepareInternalError)
149fe059910SWilliam A. Kennington III {
150fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_prepare(expected_event))
151fe059910SWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
152fe059910SWilliam A. Kennington III     EXPECT_THROW(event->prepare(), SdEventError);
153fe059910SWilliam A. Kennington III }
154fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,WaitSuccessNone)155fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, WaitSuccessNone)
156fe059910SWilliam A. Kennington III {
157fe059910SWilliam A. Kennington III     const std::chrono::microseconds timeout{20};
158fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_wait(expected_event, timeout.count()))
159fe059910SWilliam A. Kennington III         .WillOnce(Return(0));
160fe059910SWilliam A. Kennington III     EXPECT_EQ(0, event->wait(timeout));
161fe059910SWilliam A. Kennington III }
162fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,WaitSuccessReady)163fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, WaitSuccessReady)
164fe059910SWilliam A. Kennington III {
165fe059910SWilliam A. Kennington III     const int events_ready = 10;
166fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_wait(expected_event, static_cast<uint64_t>(-1)))
167fe059910SWilliam A. Kennington III         .WillOnce(Return(events_ready));
1685f3cdfadSWilliam A. Kennington III     EXPECT_EQ(events_ready, event->wait(std::nullopt));
169fe059910SWilliam A. Kennington III }
170fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,WaitInternalError)171fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, WaitInternalError)
172fe059910SWilliam A. Kennington III {
173fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_wait(expected_event, static_cast<uint64_t>(-1)))
174fe059910SWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
1755f3cdfadSWilliam A. Kennington III     EXPECT_THROW(event->wait(std::nullopt), SdEventError);
176fe059910SWilliam A. Kennington III }
177fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,DispatchInitial)178fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, DispatchInitial)
179fe059910SWilliam A. Kennington III {
180fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_dispatch(expected_event)).WillOnce(Return(0));
181fe059910SWilliam A. Kennington III     EXPECT_EQ(0, event->dispatch());
182fe059910SWilliam A. Kennington III }
183fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,DispatchDone)184fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, DispatchDone)
185fe059910SWilliam A. Kennington III {
186fe059910SWilliam A. Kennington III     const int done_code = 10;
187fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_dispatch(expected_event))
188fe059910SWilliam A. Kennington III         .WillOnce(Return(done_code));
189fe059910SWilliam A. Kennington III     EXPECT_EQ(done_code, event->dispatch());
190fe059910SWilliam A. Kennington III }
191fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,DispatchInternalError)192fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, DispatchInternalError)
193fe059910SWilliam A. Kennington III {
194fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_dispatch(expected_event))
195fe059910SWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
196fe059910SWilliam A. Kennington III     EXPECT_THROW(event->dispatch(), SdEventError);
197fe059910SWilliam A. Kennington III }
198fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,RunSuccessNone)199fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, RunSuccessNone)
200fe059910SWilliam A. Kennington III {
201fe059910SWilliam A. Kennington III     const std::chrono::microseconds timeout{20};
202fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_run(expected_event, timeout.count()))
203fe059910SWilliam A. Kennington III         .WillOnce(Return(0));
204fe059910SWilliam A. Kennington III     EXPECT_EQ(0, event->run(timeout));
205fe059910SWilliam A. Kennington III }
206fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,RunSuccessReady)207fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, RunSuccessReady)
208fe059910SWilliam A. Kennington III {
209fe059910SWilliam A. Kennington III     const int events_ready = 10;
210fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_run(expected_event, static_cast<uint64_t>(-1)))
211fe059910SWilliam A. Kennington III         .WillOnce(Return(events_ready));
2125f3cdfadSWilliam A. Kennington III     EXPECT_EQ(events_ready, event->run(std::nullopt));
213fe059910SWilliam A. Kennington III }
214fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,RunInternalError)215fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, RunInternalError)
216fe059910SWilliam A. Kennington III {
217fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_run(expected_event, static_cast<uint64_t>(-1)))
218fe059910SWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
2195f3cdfadSWilliam A. Kennington III     EXPECT_THROW(event->run(std::nullopt), SdEventError);
220fe059910SWilliam A. Kennington III }
221fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,LoopSuccess)222631c2460SWilliam A. Kennington III TEST_F(EventMethodTest, LoopSuccess)
223631c2460SWilliam A. Kennington III {
224631c2460SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_loop(expected_event)).WillOnce(Return(0));
225631c2460SWilliam A. Kennington III     EXPECT_EQ(0, event->loop());
226631c2460SWilliam A. Kennington III }
227631c2460SWilliam A. Kennington III 
TEST_F(EventMethodTest,LoopUserError)228631c2460SWilliam A. Kennington III TEST_F(EventMethodTest, LoopUserError)
2298f90e28bSWilliam A. Kennington III {
2308f90e28bSWilliam A. Kennington III     const int user_error = 10;
2318f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_loop(expected_event))
2328f90e28bSWilliam A. Kennington III         .WillOnce(Return(user_error));
2336364dd9eSWilliam A. Kennington III     EXPECT_EQ(user_error, event->loop());
2348f90e28bSWilliam A. Kennington III }
2358f90e28bSWilliam A. Kennington III 
TEST_F(EventMethodTest,LoopInternalError)236631c2460SWilliam A. Kennington III TEST_F(EventMethodTest, LoopInternalError)
2378f90e28bSWilliam A. Kennington III {
2388f90e28bSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_loop(expected_event)).WillOnce(Return(-EINVAL));
239631c2460SWilliam A. Kennington III     EXPECT_THROW(event->loop(), SdEventError);
240631c2460SWilliam A. Kennington III }
241631c2460SWilliam A. Kennington III 
TEST_F(EventMethodTest,ExitSuccess)242fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, ExitSuccess)
243fe059910SWilliam A. Kennington III {
244fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_exit(expected_event, 0)).WillOnce(Return(2));
2450005e30cSWilliam A. Kennington III     event->exit(0);
2460005e30cSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_exit(expected_event, 0)).WillOnce(Return(0));
2470005e30cSWilliam A. Kennington III     event->exit(0);
2480005e30cSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_exit(expected_event, 10)).WillOnce(Return(0));
2490005e30cSWilliam A. Kennington III     event->exit(10);
250fe059910SWilliam A. Kennington III }
251fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,ExitInternalError)252fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, ExitInternalError)
253fe059910SWilliam A. Kennington III {
254fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_exit(expected_event, 5))
255fe059910SWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
256fe059910SWilliam A. Kennington III     EXPECT_THROW(event->exit(5), SdEventError);
257fe059910SWilliam A. Kennington III }
258fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,GetExitCodeSuccess)259fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, GetExitCodeSuccess)
260fe059910SWilliam A. Kennington III {
261fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_get_exit_code(expected_event, testing::_))
262fe059910SWilliam A. Kennington III         .WillOnce(DoAll(SetArgPointee<1>(1), Return(0)));
263fe059910SWilliam A. Kennington III     EXPECT_EQ(1, event->get_exit_code());
264fe059910SWilliam A. Kennington III 
265fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_get_exit_code(expected_event, testing::_))
266fe059910SWilliam A. Kennington III         .WillOnce(DoAll(SetArgPointee<1>(0), Return(2)));
267fe059910SWilliam A. Kennington III     EXPECT_EQ(0, event->get_exit_code());
268fe059910SWilliam A. Kennington III }
269fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,GetExitCodeError)270fe059910SWilliam A. Kennington III TEST_F(EventMethodTest, GetExitCodeError)
271fe059910SWilliam A. Kennington III {
272fe059910SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_get_exit_code(expected_event, testing::_))
273fe059910SWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
274fe059910SWilliam A. Kennington III     EXPECT_THROW(event->get_exit_code(), SdEventError);
275fe059910SWilliam A. Kennington III }
276fe059910SWilliam A. Kennington III 
TEST_F(EventMethodTest,GetWatchdogSuccess)277631c2460SWilliam A. Kennington III TEST_F(EventMethodTest, GetWatchdogSuccess)
278631c2460SWilliam A. Kennington III {
279631c2460SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_get_watchdog(expected_event))
280631c2460SWilliam A. Kennington III         .WillOnce(Return(0));
2810005e30cSWilliam A. Kennington III     EXPECT_FALSE(event->get_watchdog());
282631c2460SWilliam A. Kennington III 
283631c2460SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_get_watchdog(expected_event))
284631c2460SWilliam A. Kennington III         .WillOnce(Return(2));
2850005e30cSWilliam A. Kennington III     EXPECT_TRUE(event->get_watchdog());
286631c2460SWilliam A. Kennington III }
287631c2460SWilliam A. Kennington III 
TEST_F(EventMethodTest,GetWatchdogError)288631c2460SWilliam A. Kennington III TEST_F(EventMethodTest, GetWatchdogError)
289631c2460SWilliam A. Kennington III {
290631c2460SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_get_watchdog(expected_event))
291631c2460SWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
292631c2460SWilliam A. Kennington III     EXPECT_THROW(event->get_watchdog(), SdEventError);
293631c2460SWilliam A. Kennington III }
294631c2460SWilliam A. Kennington III 
TEST_F(EventMethodTest,SetWatchdogSuccess)295631c2460SWilliam A. Kennington III TEST_F(EventMethodTest, SetWatchdogSuccess)
296631c2460SWilliam A. Kennington III {
2970005e30cSWilliam A. Kennington III     // Disable
2980005e30cSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_set_watchdog(expected_event, false))
299631c2460SWilliam A. Kennington III         .WillOnce(Return(0));
3000005e30cSWilliam A. Kennington III     EXPECT_FALSE(event->set_watchdog(false));
301631c2460SWilliam A. Kennington III 
3020005e30cSWilliam A. Kennington III     // Enable but not supported
3030005e30cSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_set_watchdog(expected_event, true))
3040005e30cSWilliam A. Kennington III         .WillOnce(Return(0));
3050005e30cSWilliam A. Kennington III     EXPECT_FALSE(event->set_watchdog(true));
3060005e30cSWilliam A. Kennington III 
3070005e30cSWilliam A. Kennington III     // Enabled and supported
3080005e30cSWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_set_watchdog(expected_event, true))
309631c2460SWilliam A. Kennington III         .WillOnce(Return(2));
3100005e30cSWilliam A. Kennington III     EXPECT_TRUE(event->set_watchdog(true));
311631c2460SWilliam A. Kennington III }
312631c2460SWilliam A. Kennington III 
TEST_F(EventMethodTest,SetWatchdogError)313631c2460SWilliam A. Kennington III TEST_F(EventMethodTest, SetWatchdogError)
314631c2460SWilliam A. Kennington III {
315631c2460SWilliam A. Kennington III     EXPECT_CALL(mock, sd_event_set_watchdog(expected_event, 1))
316631c2460SWilliam A. Kennington III         .WillOnce(Return(-EINVAL));
317631c2460SWilliam A. Kennington III     EXPECT_THROW(event->set_watchdog(1), SdEventError);
3188f90e28bSWilliam A. Kennington III }
3198f90e28bSWilliam A. Kennington III 
3208f90e28bSWilliam A. Kennington III } // namespace
3218f90e28bSWilliam A. Kennington III } // namespace sdeventplus
322