blob: 3bf76c07678b83d303bd1a126986f6cbcb7c87ab [file] [log] [blame]
William A. Kennington III0a816c52018-07-17 14:40:14 -07001#include <gmock/gmock.h>
2#include <gtest/gtest.h>
3#include <sdeventplus/internal/sdevent.hpp>
4#include <sdeventplus/source/base.hpp>
5#include <sdeventplus/test/sdevent.hpp>
6#include <type_traits>
7
8namespace sdeventplus
9{
10namespace source
11{
12namespace
13{
14
15using testing::Return;
16
17class BaseImpl : public Base
18{
19 public:
20 BaseImpl(sd_event_source* source, internal::SdEvent* sdevent) :
21 Base(source, sdevent)
22 {
23 }
24 BaseImpl(sd_event_source* source, std::false_type,
25 internal::SdEvent* sdevent) :
26 Base(source, std::false_type(), sdevent)
27 {
28 }
29};
30
31class BaseTest : public testing::Test
32{
33 protected:
34 testing::StrictMock<test::SdEventMock> mock;
35 sd_event_source* const expected_source =
36 reinterpret_cast<sd_event_source*>(1234);
37};
38
39TEST_F(BaseTest, NewBaseRef)
40{
41 EXPECT_CALL(mock, sd_event_source_ref(expected_source))
42 .WillOnce(Return(expected_source));
43 BaseImpl source(expected_source, &mock);
44
45 EXPECT_CALL(mock, sd_event_source_unref(expected_source))
46 .WillOnce(Return(nullptr));
47}
48
49TEST_F(BaseTest, NewBaseNoRef)
50{
51 BaseImpl source(expected_source, std::false_type(), &mock);
52
53 EXPECT_CALL(mock, sd_event_source_unref(expected_source))
54 .WillOnce(Return(nullptr));
55}
56
57} // namespace
58} // namespace source
59} // namespace sdeventplus