1 #pragma once
2 
3 #include <gmock/gmock.h>
4 #include <sdeventplus/internal/sdevent.hpp>
5 #include <systemd/sd-event.h>
6 
7 namespace sdeventplus
8 {
9 namespace test
10 {
11 
12 /** @class SdEventMock
13  *  @brief sd_event mocked implementation
14  *  @details Uses googlemock to handle all sd_event calls
15  */
16 class SdEventMock : public internal::SdEvent
17 {
18   public:
19     MOCK_CONST_METHOD1(sd_event_default, int(sd_event**));
20     MOCK_CONST_METHOD1(sd_event_new, int(sd_event**));
21     MOCK_CONST_METHOD1(sd_event_ref, sd_event*(sd_event*));
22     MOCK_CONST_METHOD1(sd_event_unref, sd_event*(sd_event*));
23 
24     MOCK_CONST_METHOD6(sd_event_add_io,
25                        int(sd_event*, sd_event_source**, int, uint32_t,
26                            sd_event_io_handler_t, void*));
27     MOCK_CONST_METHOD7(sd_event_add_time,
28                        int(sd_event*, sd_event_source**, clockid_t, uint64_t,
29                            uint64_t, sd_event_time_handler_t, void*));
30     MOCK_CONST_METHOD5(sd_event_add_signal,
31                        int(sd_event*, sd_event_source**, int,
32                            sd_event_signal_handler_t, void*));
33     MOCK_CONST_METHOD6(sd_event_add_child,
34                        int(sd_event*, sd_event_source**, pid_t, int,
35                            sd_event_child_handler_t, void*));
36     MOCK_CONST_METHOD4(sd_event_add_defer, int(sd_event*, sd_event_source**,
37                                                sd_event_handler_t, void*));
38     MOCK_CONST_METHOD4(sd_event_add_post, int(sd_event*, sd_event_source**,
39                                               sd_event_handler_t, void*));
40     MOCK_CONST_METHOD4(sd_event_add_exit, int(sd_event*, sd_event_source**,
41                                               sd_event_handler_t, void*));
42 
43     MOCK_CONST_METHOD1(sd_event_prepare, int(sd_event*));
44     MOCK_CONST_METHOD2(sd_event_wait, int(sd_event*, uint64_t));
45     MOCK_CONST_METHOD1(sd_event_dispatch, int(sd_event*));
46     MOCK_CONST_METHOD2(sd_event_run, int(sd_event*, uint64_t));
47     MOCK_CONST_METHOD1(sd_event_loop, int(sd_event*));
48     MOCK_CONST_METHOD2(sd_event_exit, int(sd_event*, int));
49 
50     MOCK_CONST_METHOD3(sd_event_now, int(sd_event*, clockid_t, uint64_t*));
51 
52     MOCK_CONST_METHOD2(sd_event_get_exit_code, int(sd_event*, int*));
53     MOCK_CONST_METHOD1(sd_event_get_watchdog, int(sd_event*));
54     MOCK_CONST_METHOD2(sd_event_set_watchdog, int(sd_event*, int b));
55 
56     MOCK_CONST_METHOD1(sd_event_source_ref, sd_event_source*(sd_event_source*));
57     MOCK_CONST_METHOD1(sd_event_source_unref,
58                        sd_event_source*(sd_event_source*));
59 
60     MOCK_CONST_METHOD2(sd_event_source_set_userdata,
61                        void*(sd_event_source*, void*));
62 
63     MOCK_CONST_METHOD2(sd_event_source_get_description,
64                        int(sd_event_source*, const char**));
65     MOCK_CONST_METHOD2(sd_event_source_set_description,
66                        int(sd_event_source*, const char*));
67     MOCK_CONST_METHOD2(sd_event_source_set_prepare,
68                        int(sd_event_source*, sd_event_handler_t));
69     MOCK_CONST_METHOD1(sd_event_source_get_pending, int(sd_event_source*));
70     MOCK_CONST_METHOD2(sd_event_source_get_priority,
71                        int(sd_event_source*, int64_t*));
72     MOCK_CONST_METHOD2(sd_event_source_set_priority,
73                        int(sd_event_source*, int64_t));
74     MOCK_CONST_METHOD2(sd_event_source_get_enabled,
75                        int(sd_event_source*, int*));
76     MOCK_CONST_METHOD2(sd_event_source_set_enabled, int(sd_event_source*, int));
77     MOCK_CONST_METHOD1(sd_event_source_get_io_fd, int(sd_event_source*));
78     MOCK_CONST_METHOD2(sd_event_source_set_io_fd, int(sd_event_source*, int));
79     MOCK_CONST_METHOD2(sd_event_source_get_io_events,
80                        int(sd_event_source*, uint32_t*));
81     MOCK_CONST_METHOD2(sd_event_source_set_io_events,
82                        int(sd_event_source*, uint32_t));
83     MOCK_CONST_METHOD2(sd_event_source_get_io_revents,
84                        int(sd_event_source*, uint32_t*));
85     MOCK_CONST_METHOD2(sd_event_source_get_time,
86                        int(sd_event_source*, uint64_t*));
87     MOCK_CONST_METHOD2(sd_event_source_set_time,
88                        int(sd_event_source*, uint64_t));
89     MOCK_CONST_METHOD2(sd_event_source_get_time_accuracy,
90                        int(sd_event_source*, uint64_t*));
91     MOCK_CONST_METHOD2(sd_event_source_set_time_accuracy,
92                        int(sd_event_source*, uint64_t));
93     MOCK_CONST_METHOD1(sd_event_source_get_signal, int(sd_event_source*));
94     MOCK_CONST_METHOD2(sd_event_source_get_child_pid,
95                        int(sd_event_source*, pid_t*));
96 };
97 
98 } // namespace test
99 } // namespace sdeventplus
100